From: plaa Date: Sat, 18 Jun 2011 20:53:40 +0000 (+0000) Subject: Merged l10n branch to trunk X-Git-Tag: upstream/1.1.6^2~13 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=8e4a8571c20ba96164ddd8a68226d43ccd549d21;hp=d4bf7e5481e444d99e71c9439f394c152347667b;p=debian%2Fopenrocket Merged l10n branch to trunk git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@130 180e2498-e6e9-4542-8430-84ac67f01cd8 --- diff --git a/l10n/i18nedit.properties b/l10n/i18nedit.properties new file mode 100644 index 00000000..a9a11e42 --- /dev/null +++ b/l10n/i18nedit.properties @@ -0,0 +1,7 @@ +#I18NEdit settings for project +locale.default=en +locales=fr es +personal.sampo.checksuperfluous=false +personal.sampo.searchmode=2 +personal.sampo.sourcelocale= +personal.sampo.targetlocale=fr diff --git a/l10n/messages.metaprops b/l10n/messages.metaprops new file mode 100644 index 00000000..f6cbf3f3 --- /dev/null +++ b/l10n/messages.metaprops @@ -0,0 +1,5910 @@ +#I18NEdit properties organization file, not to be edited! +BasicFrame.SimpleFileFilter1..text.changed=20110317061957 +BasicFrame.SimpleFileFilter1..text.md5=JRZf/wtwgmUMw3KHtUjLdA\=\= +BasicFrame.SimpleFileFilter1.es.text.changed=20110317062041 +BasicFrame.SimpleFileFilter1.es.text.md5=MtMBpFbM+exqmRntlI7v1Q\=\= +BasicFrame.SimpleFileFilter1.fr.text.changed=20110317061957 +BasicFrame.SimpleFileFilter1.fr.text.md5=ncaip5O9E4vlC2ETLVIUoA\=\= +BasicFrame.SimpleFileFilter2..text.changed=20110317061957 +BasicFrame.SimpleFileFilter2..text.md5=6sujDIsY3pgc0c0rCKOsow\=\= +BasicFrame.SimpleFileFilter2.es.text.changed=20110317062041 +BasicFrame.SimpleFileFilter2.es.text.md5=5rzB5aRDWSVXD1FjmQWoCg\=\= +BasicFrame.SimpleFileFilter2.fr.text.changed=20110317061957 +BasicFrame.SimpleFileFilter2.fr.text.md5=SI7TG4GE1jNcutiWXn6fkQ\=\= +BasicFrame.SimpleFileFilter3..text.changed=20110317061957 +BasicFrame.SimpleFileFilter3..text.md5=JIwyt0zBWmT/RlRxivpZ0w\=\= +BasicFrame.SimpleFileFilter3.es.text.changed=20110317062041 +BasicFrame.SimpleFileFilter3.es.text.md5=qEUv4rYMUFCQzFIJicEDiA\=\= +BasicFrame.SimpleFileFilter3.fr.text.changed=20110317061957 +BasicFrame.SimpleFileFilter3.fr.text.md5=BG/VE3BnQX3bjndJGt7UXA\=\= +BasicFrame.StageName.Sustainer..text.changed=20110317061957 +BasicFrame.StageName.Sustainer..text.md5=ZlimkhOIOYxUh+OEovBpyQ\=\= +BasicFrame.StageName.Sustainer.es.text.changed=20110317062041 +BasicFrame.StageName.Sustainer.es.text.md5=ZlimkhOIOYxUh+OEovBpyQ\=\= +BasicFrame.StageName.Sustainer.fr.text.changed=20110317061957 +BasicFrame.StageName.Sustainer.fr.text.md5=ZlimkhOIOYxUh+OEovBpyQ\=\= +BasicFrame.WarningDialog.title..text.changed=20110317061957 +BasicFrame.WarningDialog.title..text.md5=dVwfT+ApXpXTfOSFT+bAww\=\= +BasicFrame.WarningDialog.title.es.text.changed=20110317062041 +BasicFrame.WarningDialog.title.es.text.md5=dVwfT+ApXpXTfOSFT+bAww\=\= +BasicFrame.WarningDialog.title.fr.text.changed=20110317061957 +BasicFrame.WarningDialog.title.fr.text.md5=CA/C/02LpYdWp56ritgy9Q\=\= +BasicFrame.WarningDialog.txt1..text.changed=20110317061957 +BasicFrame.WarningDialog.txt1..text.md5=ytpppGKgCROs/1qNRUIY0w\=\= +BasicFrame.WarningDialog.txt1.es.text.changed=20110317062041 +BasicFrame.WarningDialog.txt1.es.text.md5=ytpppGKgCROs/1qNRUIY0w\=\= +BasicFrame.WarningDialog.txt1.fr.text.changed=20110317061957 +BasicFrame.WarningDialog.txt1.fr.text.md5=EB0q1cqzHp0cz8DRBy9nsw\=\= +BasicFrame.WarningDialog.txt2..text.changed=20110317061957 +BasicFrame.WarningDialog.txt2..text.md5=tsMMUZdtq7uq/UCLTMNJXA\=\= +BasicFrame.WarningDialog.txt2.es.text.changed=20110317062041 +BasicFrame.WarningDialog.txt2.es.text.md5=tsMMUZdtq7uq/UCLTMNJXA\=\= +BasicFrame.WarningDialog.txt2.fr.text.changed=20110317061957 +BasicFrame.WarningDialog.txt2.fr.text.md5=kbqb2hEpTj85poYvmGRypA\=\= +BasicFrame.dlg.lbl1..text.changed=20110317061957 +BasicFrame.dlg.lbl1..text.md5=4vHeR+UwjN4hOHJIOr9b4Q\=\= +BasicFrame.dlg.lbl1.es.text.changed=20110317062041 +BasicFrame.dlg.lbl1.es.text.md5=a8RojWEbDaXisNNIzNseHw\=\= +BasicFrame.dlg.lbl1.fr.text.changed=20110317061957 +BasicFrame.dlg.lbl1.fr.text.md5=faXBqIUUOF13/xG5cRm0yw\=\= +BasicFrame.dlg.lbl2..text.changed=20110317061957 +BasicFrame.dlg.lbl2..text.md5=iTcLPBqFqaE9HYR6zNu1tA\=\= +BasicFrame.dlg.lbl2.es.text.changed=20110317062041 +BasicFrame.dlg.lbl2.es.text.md5=mnclKcWFT+p/PC1KhKRsPA\=\= +BasicFrame.dlg.lbl2.fr.text.changed=20110317061957 +BasicFrame.dlg.lbl2.fr.text.md5=bOTqTNfsOvikqKsFQOT9Bg\=\= +BasicFrame.dlg.lbl3..text.changed=20110317061957 +BasicFrame.dlg.lbl3..text.md5=crkc8P50tidsmyDbj16O0w\=\= +BasicFrame.dlg.lbl3.es.text.changed=20110317062041 +BasicFrame.dlg.lbl3.es.text.md5=qYrXCO9vi/6hr1PlF4mavQ\=\= +BasicFrame.dlg.lbl3.fr.text.changed=20110317061957 +BasicFrame.dlg.lbl3.fr.text.md5=p44ASia1HzkhhTCIGby00g\=\= +BasicFrame.dlg.title..text.changed=20110317061957 +BasicFrame.dlg.title..text.md5=2pARj9Ihv8yhh68hXbnmHA\=\= +BasicFrame.dlg.title.es.text.changed=20110317062041 +BasicFrame.dlg.title.es.text.md5=FE36YC4P4lSOpFKwTBkvuA\=\= +BasicFrame.dlg.title.fr.text.changed=20110317061957 +BasicFrame.dlg.title.fr.text.md5=/5y1aoxzV/u6TJZ3eI7mcA\=\= +BasicFrame.item.Closedesign..text.changed=20110317061957 +BasicFrame.item.Closedesign..text.md5=4G6HA1MvvrcRteDSRv3iLQ\=\= +BasicFrame.item.Closedesign.es.text.changed=20110317062041 +BasicFrame.item.Closedesign.es.text.md5=+EimWFoLYm6CjkhiezsqhA\=\= +BasicFrame.item.Closedesign.fr.text.changed=20110317061957 +BasicFrame.item.Closedesign.fr.text.md5=W5d76m8c+UBfxyLRB8gIGw\=\= +BasicFrame.item.Openexamplerocketdesign..text.changed=20110317061957 +BasicFrame.item.Openexamplerocketdesign..text.md5=taUPkL3GO7Fq7qgM3uQhiA\=\= +BasicFrame.item.Openexamplerocketdesign.es.text.changed=20110317062041 +BasicFrame.item.Openexamplerocketdesign.es.text.md5=tuY6KCNEIfRU51KxL75usQ\=\= +BasicFrame.item.Openexamplerocketdesign.fr.text.changed=20110317061957 +BasicFrame.item.Openexamplerocketdesign.fr.text.md5=tfG3eonx37RGAvrQA4ZRjg\=\= +BasicFrame.item.Openrocketdesign..text.changed=20110317061957 +BasicFrame.item.Openrocketdesign..text.md5=HTmun9x9KD5qih75pYQl4g\=\= +BasicFrame.item.Openrocketdesign.es.text.changed=20110317062041 +BasicFrame.item.Openrocketdesign.es.text.md5=Vw9u5rv3mC1WAPx8OCBC8Q\=\= +BasicFrame.item.Openrocketdesign.fr.text.changed=20110317061957 +BasicFrame.item.Openrocketdesign.fr.text.md5=JZakhRqrvNGAQz0Jcrnojg\=\= +BasicFrame.item.Printpart..text.changed=20110317061957 +BasicFrame.item.Printpart..text.md5=J0NoLtwEKlmx9WaDJliELg\=\= +BasicFrame.item.Printpart.es.text.changed=20110317062041 +BasicFrame.item.Printpart.es.text.md5=gw7yuSCCISz4TK5a1FKQ6w\=\= +BasicFrame.item.Printpart.fr.text.changed=20110317061957 +BasicFrame.item.Printpart.fr.text.md5=0mqRHEtjUj1sgMLxsdz4jQ\=\= +BasicFrame.item.Quitprogram..text.changed=20110317061957 +BasicFrame.item.Quitprogram..text.md5=KRcy2XCUDSABfotM2+1ZoA\=\= +BasicFrame.item.Quitprogram.es.text.changed=20110317062041 +BasicFrame.item.Quitprogram.es.text.md5=5wPftx7Cf7E9EKL7NiJnTg\=\= +BasicFrame.item.Quitprogram.fr.text.changed=20110317061957 +BasicFrame.item.Quitprogram.fr.text.md5=rA0jSnWBcwZpU8RCralLeA\=\= +BasicFrame.item.SavecurRocketdesign..text.changed=20110317061957 +BasicFrame.item.SavecurRocketdesign..text.md5=xbbi5JZvuMwJGMYLpavAtw\=\= +BasicFrame.item.SavecurRocketdesign.es.text.changed=20110317062041 +BasicFrame.item.SavecurRocketdesign.es.text.md5=qRpQ1fT1RqTJZMXemqtKIw\=\= +BasicFrame.item.SavecurRocketdesign.fr.text.changed=20110317061957 +BasicFrame.item.SavecurRocketdesign.fr.text.md5=P+gSXlHA+wFqX+O11hzOYQ\=\= +BasicFrame.item.SavecurRocketdesnewfile..text.changed=20110317061957 +BasicFrame.item.SavecurRocketdesnewfile..text.md5=kTW0KTTvnslJjtdhfG1qQQ\=\= +BasicFrame.item.SavecurRocketdesnewfile.es.text.changed=20110317062041 +BasicFrame.item.SavecurRocketdesnewfile.es.text.md5=VcvhNDqOCVnFotfACNoGvg\=\= +BasicFrame.item.SavecurRocketdesnewfile.fr.text.changed=20110317061957 +BasicFrame.item.SavecurRocketdesnewfile.fr.text.md5=FahGaugKfxFYr2+6Yv3r2g\=\= +BasicFrame.menu.Rocketedt..text.changed=20110317061957 +BasicFrame.menu.Rocketedt..text.md5=Q4O7rIFRZQZ2s0XAAu4MxA\=\= +BasicFrame.menu.Rocketedt.es.text.changed=20110317062041 +BasicFrame.menu.Rocketedt.es.text.md5=tJk97Lgf2mDSOUMHRRYsyA\=\= +BasicFrame.menu.Rocketedt.fr.text.changed=20110317061957 +BasicFrame.menu.Rocketedt.fr.text.md5=JEFCNOuCrQqC5DPzgMj3+Q\=\= +BasicFrame.tab.Flightsim..text.changed=20110317061957 +BasicFrame.tab.Flightsim..text.md5=N4jO/mR7XbpV4zJxLf7WDA\=\= +BasicFrame.tab.Flightsim.es.text.changed=20110317062041 +BasicFrame.tab.Flightsim.es.text.md5=celHrBX8Fl9XO5/oTVtBlQ\=\= +BasicFrame.tab.Flightsim.fr.text.changed=20110317061957 +BasicFrame.tab.Flightsim.fr.text.md5=YlSnDXAR3Cxkzk49eOzRmg\=\= +BasicFrame.tab.Rocketdesign..text.changed=20110317061957 +BasicFrame.tab.Rocketdesign..text.md5=W3td7UFmAOH18pup6QaDgA\=\= +BasicFrame.tab.Rocketdesign.es.text.changed=20110317062041 +BasicFrame.tab.Rocketdesign.es.text.md5=xT7sMRZC9jeBc2YhnQTY+Q\=\= +BasicFrame.tab.Rocketdesign.fr.text.changed=20110317061957 +BasicFrame.tab.Rocketdesign.fr.text.md5=sdJrQouaPlxpcg1VHwhAkQ\=\= +BasicFrame.title.Addnewcomp..text.changed=20110317061957 +BasicFrame.title.Addnewcomp..text.md5=ecuX0ik2yiQ017RJW0fW8w\=\= +BasicFrame.title.Addnewcomp.es.text.changed=20110317062041 +BasicFrame.title.Addnewcomp.es.text.md5=mkLIbjGCzAFdC5EBvHMELA\=\= +BasicFrame.title.Addnewcomp.fr.text.changed=20110317061957 +BasicFrame.title.Addnewcomp.fr.text.md5=Y3Z5xwLQn5PcO54e7Q9npg\=\= +BodyTube.BodyTube..text.changed=20110317061957 +BodyTube.BodyTube..text.md5=3T0MaANX4mUAKbI403vAUA\=\= +BodyTube.BodyTube.es.text.changed=20110317062041 +BodyTube.BodyTube.es.text.md5=3T0MaANX4mUAKbI403vAUA\=\= +BodyTube.BodyTube.fr.text.changed=20110317061957 +BodyTube.BodyTube.fr.text.md5=fA71ssLRmS1SacfrveHv1w\=\= +BodyTubecfg.checkbox.Automatic..text.changed=20110317061957 +BodyTubecfg.checkbox.Automatic..text.md5=CGJHqbV/3m7v7ioMR1IkLQ\=\= +BodyTubecfg.checkbox.Automatic.es.text.changed=20110317062041 +BodyTubecfg.checkbox.Automatic.es.text.md5=D3uT6/H6hH/AStlgA624Tw\=\= +BodyTubecfg.checkbox.Automatic.fr.text.changed=20110317061957 +BodyTubecfg.checkbox.Automatic.fr.text.md5=rO2dama6vw/FNskM7H2i5w\=\= +BodyTubecfg.checkbox.Filled..text.changed=20110317061957 +BodyTubecfg.checkbox.Filled..text.md5=2dWG+MeS+PZhBSr0JTYyPA\=\= +BodyTubecfg.checkbox.Filled.es.text.changed=20110317062041 +BodyTubecfg.checkbox.Filled.es.text.md5=HQ2GNI1le2Dl+Mw8w7w38w\=\= +BodyTubecfg.checkbox.Filled.fr.text.changed=20110317061957 +BodyTubecfg.checkbox.Filled.fr.text.md5=S975CUbtxnqWOai6+gtVIw\=\= +BodyTubecfg.lbl.Bodytubelength..text.changed=20110317061957 +BodyTubecfg.lbl.Bodytubelength..text.md5=RTnU0a7NxgbQHgs76zbWJg\=\= +BodyTubecfg.lbl.Bodytubelength.es.text.changed=20110317062041 +BodyTubecfg.lbl.Bodytubelength.es.text.md5=mWbWBXn5WsHQ7oBAGhsd3Q\=\= +BodyTubecfg.lbl.Bodytubelength.fr.text.changed=20110317061957 +BodyTubecfg.lbl.Bodytubelength.fr.text.md5=zMeO0onqK4lkXgYIoexmNA\=\= +BodyTubecfg.lbl.Innerdiameter..text.changed=20110317061957 +BodyTubecfg.lbl.Innerdiameter..text.md5=tl1ONj0/SCF9YCFirUoyVw\=\= +BodyTubecfg.lbl.Innerdiameter.es.text.changed=20110317062041 +BodyTubecfg.lbl.Innerdiameter.es.text.md5=Gjyh8ZBfEyVhHkk+5diXMw\=\= +BodyTubecfg.lbl.Innerdiameter.fr.text.changed=20110317061957 +BodyTubecfg.lbl.Innerdiameter.fr.text.md5=dCK7G8SxW0uKiJDjm3NQkA\=\= +BodyTubecfg.lbl.Outerdiameter..text.changed=20110317061957 +BodyTubecfg.lbl.Outerdiameter..text.md5=AGmg3a+zlhzs+h+4J0JE8g\=\= +BodyTubecfg.lbl.Outerdiameter.es.text.changed=20110317062041 +BodyTubecfg.lbl.Outerdiameter.es.text.md5=TOTlYJHsn8+4s+inelCH/w\=\= +BodyTubecfg.lbl.Outerdiameter.fr.text.changed=20110317061957 +BodyTubecfg.lbl.Outerdiameter.fr.text.md5=XToXLedSc/XzNboRMC0Ujw\=\= +BodyTubecfg.lbl.Wallthickness..text.changed=20110317061957 +BodyTubecfg.lbl.Wallthickness..text.md5=+fnX03pPwQt6SXS2we8xRg\=\= +BodyTubecfg.lbl.Wallthickness.es.text.changed=20110317062041 +BodyTubecfg.lbl.Wallthickness.es.text.md5=tT1+InFckvVCzc2RCNVVSQ\=\= +BodyTubecfg.lbl.Wallthickness.fr.text.changed=20110317061957 +BodyTubecfg.lbl.Wallthickness.fr.text.md5=yvurrozSZlNuqNTccufoSw\=\= +BodyTubecfg.tab.General..text.changed=20110317061957 +BodyTubecfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +BodyTubecfg.tab.General.es.text.changed=20110317062041 +BodyTubecfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +BodyTubecfg.tab.General.fr.text.changed=20110317061957 +BodyTubecfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\= +BodyTubecfg.tab.Generalproperties..text.changed=20110317061957 +BodyTubecfg.tab.Generalproperties..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\= +BodyTubecfg.tab.Generalproperties.es.text.changed=20110317062041 +BodyTubecfg.tab.Generalproperties.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\= +BodyTubecfg.tab.Generalproperties.fr.text.changed=20110317061957 +BodyTubecfg.tab.Generalproperties.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\= +BodyTubecfg.tab.Motor..text.changed=20110317061957 +BodyTubecfg.tab.Motor..text.md5=szU4F59WYahsvjJ6F5PhmQ\=\= +BodyTubecfg.tab.Motor.es.text.changed=20110317062041 +BodyTubecfg.tab.Motor.es.text.md5=szU4F59WYahsvjJ6F5PhmQ\=\= +BodyTubecfg.tab.Motor.fr.text.changed=20110317061957 +BodyTubecfg.tab.Motor.fr.text.md5=6tmnS1jbv8qzuuKxMMKUVg\=\= +BodyTubecfg.tab.Motormountconf..text.changed=20110317061957 +BodyTubecfg.tab.Motormountconf..text.md5=L/dvnGSxOORZkwDDBqSWfQ\=\= +BodyTubecfg.tab.Motormountconf.es.text.changed=20110317062041 +BodyTubecfg.tab.Motormountconf.es.text.md5=C7fYL8sg0eTIrtoaGQZXMg\=\= +BodyTubecfg.tab.Motormountconf.fr.text.changed=20110317061957 +BodyTubecfg.tab.Motormountconf.fr.text.md5=u8d1128oyYwjJQzM8Ecs1w\=\= +Bulkhead.Bulkhead..text.changed=20110317061957 +Bulkhead.Bulkhead..text.md5=RUE9DoWgodoMLY1BHiEsiQ\=\= +Bulkhead.Bulkhead.es.text.changed=20110317062041 +Bulkhead.Bulkhead.es.text.md5=RUE9DoWgodoMLY1BHiEsiQ\=\= +Bulkhead.Bulkhead.fr.text.changed=20110317061957 +Bulkhead.Bulkhead.fr.text.md5=GjYF1XuUam6E2N+JDKsnLQ\=\= +BulkheadCfg.tab.General..text.changed=20110317061957 +BulkheadCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +BulkheadCfg.tab.General.es.text.changed=20110317062041 +BulkheadCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +BulkheadCfg.tab.General.fr.text.changed=20110317061957 +BulkheadCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\= +BulkheadCfg.tab.Generalproperties..text.changed=20110317061957 +BulkheadCfg.tab.Generalproperties..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\= +BulkheadCfg.tab.Generalproperties.es.text.changed=20110317062041 +BulkheadCfg.tab.Generalproperties.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\= +BulkheadCfg.tab.Generalproperties.fr.text.changed=20110317061957 +BulkheadCfg.tab.Generalproperties.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\= +BulkheadCfg.tab.Radius..text.changed=20110317061957 +BulkheadCfg.tab.Radius..text.md5=MmaEqMsJfbCGvmgQItmuRg\=\= +BulkheadCfg.tab.Radius.es.text.changed=20110317062041 +BulkheadCfg.tab.Radius.es.text.md5=whCntseHfqEyaZgGoj6h3w\=\= +BulkheadCfg.tab.Radius.fr.text.changed=20110317061957 +BulkheadCfg.tab.Radius.fr.text.md5=EyX3DbszXL+q71CaMkPwjw\=\= +BulkheadCfg.tab.Thickness..text.changed=20110317061957 +BulkheadCfg.tab.Thickness..text.md5=De6os9fTRKpjp0AF4eicGg\=\= +BulkheadCfg.tab.Thickness.es.text.changed=20110317062041 +BulkheadCfg.tab.Thickness.es.text.md5=xJjWfhrb7lNPRDbDLxB+9A\=\= +BulkheadCfg.tab.Thickness.fr.text.changed=20110317061957 +BulkheadCfg.tab.Thickness.fr.text.md5=wQJDV7ZNGPpFMM+AiyCNxg\=\= +CenteringRingCfg.tab.General..text.changed=20110317061957 +CenteringRingCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +CenteringRingCfg.tab.General.es.text.changed=20110317062041 +CenteringRingCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +CenteringRingCfg.tab.General.fr.text.changed=20110317061957 +CenteringRingCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\= +CenteringRingCfg.tab.Generalproperties..text.changed=20110317061957 +CenteringRingCfg.tab.Generalproperties..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\= +CenteringRingCfg.tab.Generalproperties.es.text.changed=20110317062041 +CenteringRingCfg.tab.Generalproperties.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\= +CenteringRingCfg.tab.Generalproperties.fr.text.changed=20110317061957 +CenteringRingCfg.tab.Generalproperties.fr.text.md5=c8YR8Y64ukbawbUNBj44AQ\=\= +CenteringRingCfg.tab.Innerdiam..text.changed=20110317061957 +CenteringRingCfg.tab.Innerdiam..text.md5=tl1ONj0/SCF9YCFirUoyVw\=\= +CenteringRingCfg.tab.Innerdiam.es.text.changed=20110317062041 +CenteringRingCfg.tab.Innerdiam.es.text.md5=Gjyh8ZBfEyVhHkk+5diXMw\=\= +CenteringRingCfg.tab.Innerdiam.fr.text.changed=20110317061957 +CenteringRingCfg.tab.Innerdiam.fr.text.md5=dCK7G8SxW0uKiJDjm3NQkA\=\= +CenteringRingCfg.tab.Outerdiam..text.changed=20110317061957 +CenteringRingCfg.tab.Outerdiam..text.md5=AGmg3a+zlhzs+h+4J0JE8g\=\= +CenteringRingCfg.tab.Outerdiam.es.text.changed=20110317062041 +CenteringRingCfg.tab.Outerdiam.es.text.md5=Wm4jWwBkyecxm7/F8cQ0NQ\=\= +CenteringRingCfg.tab.Outerdiam.fr.text.changed=20110317061957 +CenteringRingCfg.tab.Outerdiam.fr.text.md5=XToXLedSc/XzNboRMC0Ujw\=\= +CenteringRingCfg.tab.Thickness..text.changed=20110317061957 +CenteringRingCfg.tab.Thickness..text.md5=De6os9fTRKpjp0AF4eicGg\=\= +CenteringRingCfg.tab.Thickness.es.text.changed=20110317062041 +CenteringRingCfg.tab.Thickness.es.text.md5=xJjWfhrb7lNPRDbDLxB+9A\=\= +CenteringRingCfg.tab.Thickness.fr.text.changed=20110317061957 +CenteringRingCfg.tab.Thickness.fr.text.md5=wQJDV7ZNGPpFMM+AiyCNxg\=\= +ComponentCfgDlg.Modify..text.changed=20110317061957 +ComponentCfgDlg.Modify..text.md5=fwkLurHMf5wIv05U2TLTwA\=\= +ComponentCfgDlg.Modify.es.text.changed=20110317062041 +ComponentCfgDlg.Modify.es.text.md5=gwfyj8tpdT6T2tkFcz8AmQ\=\= +ComponentCfgDlg.Modify.fr.text.changed=20110317061957 +ComponentCfgDlg.Modify.fr.text.md5=iYwHnS5ipLGXHfutnYYIOA\=\= +ComponentCfgDlg.configuration..text.changed=20110317061957 +ComponentCfgDlg.configuration..text.md5=zNEGY0PJWHe3W3nUfDa+vg\=\= +ComponentCfgDlg.configuration.es.text.changed=20110317062041 +ComponentCfgDlg.configuration.es.text.md5=qUBzA25VKLH7Ge8tOVVcMQ\=\= +ComponentCfgDlg.configuration.fr.text.changed=20110317061957 +ComponentCfgDlg.configuration.fr.text.md5=zNEGY0PJWHe3W3nUfDa+vg\=\= +ComponentIcons.Bodytube..text.changed=20110317061957 +ComponentIcons.Bodytube..text.md5=3T0MaANX4mUAKbI403vAUA\=\= +ComponentIcons.Bodytube.es.text.changed=20110317062041 +ComponentIcons.Bodytube.es.text.md5=3T0MaANX4mUAKbI403vAUA\=\= +ComponentIcons.Bodytube.fr.text.changed=20110317061957 +ComponentIcons.Bodytube.fr.text.md5=1wGI+eR8vfLHPoJmECW80Q\=\= +ComponentIcons.Bulkhead..text.changed=20110317061957 +ComponentIcons.Bulkhead..text.md5=gVXZfSB8JUQc3btvHlsX+Q\=\= +ComponentIcons.Bulkhead.es.text.changed=20110317062041 +ComponentIcons.Bulkhead.es.text.md5=gVXZfSB8JUQc3btvHlsX+Q\=\= +ComponentIcons.Bulkhead.fr.text.changed=20110317061957 +ComponentIcons.Bulkhead.fr.text.md5=GjYF1XuUam6E2N+JDKsnLQ\=\= +ComponentIcons.Centeringring..text.changed=20110317061957 +ComponentIcons.Centeringring..text.md5=FIUzZGDlVnAYJOtqJnhN8Q\=\= +ComponentIcons.Centeringring.es.text.changed=20110317062041 +ComponentIcons.Centeringring.es.text.md5=FIUzZGDlVnAYJOtqJnhN8Q\=\= +ComponentIcons.Centeringring.fr.text.changed=20110317061957 +ComponentIcons.Centeringring.fr.text.md5=kv1K0macJymurmnEhhezJA\=\= +ComponentIcons.Ellipticalfinset..text.changed=20110317061957 +ComponentIcons.Ellipticalfinset..text.md5=PotcfLdpVd7vvJl7yZLb4Q\=\= +ComponentIcons.Ellipticalfinset.es.text.changed=20110317062041 +ComponentIcons.Ellipticalfinset.es.text.md5=PotcfLdpVd7vvJl7yZLb4Q\=\= +ComponentIcons.Ellipticalfinset.fr.text.changed=20110317061957 +ComponentIcons.Ellipticalfinset.fr.text.md5=tLsmjEbG4TU/nKX8POXpyw\=\= +ComponentIcons.Engineblock..text.changed=20110317061957 +ComponentIcons.Engineblock..text.md5=cG29YSkdZRzknofeffL+MA\=\= +ComponentIcons.Engineblock.es.text.changed=20110317062041 +ComponentIcons.Engineblock.es.text.md5=cG29YSkdZRzknofeffL+MA\=\= +ComponentIcons.Engineblock.fr.text.changed=20110317061957 +ComponentIcons.Engineblock.fr.text.md5=vt8ECPb/7bkPyj6SjuhS+Q\=\= +ComponentIcons.Freeformfinset..text.changed=20110317061957 +ComponentIcons.Freeformfinset..text.md5=XdUaFd+fxdobxWZKMbxlSA\=\= +ComponentIcons.Freeformfinset.es.text.changed=20110317062041 +ComponentIcons.Freeformfinset.es.text.md5=XdUaFd+fxdobxWZKMbxlSA\=\= +ComponentIcons.Freeformfinset.fr.text.changed=20110317061957 +ComponentIcons.Freeformfinset.fr.text.md5=PXvo8b1Nr1mKLdeJAaomgw\=\= +ComponentIcons.Innertube..text.changed=20110317061957 +ComponentIcons.Innertube..text.md5=cLH+jIw9kSgufhebGqahkA\=\= +ComponentIcons.Innertube.es.text.changed=20110317062041 +ComponentIcons.Innertube.es.text.md5=cLH+jIw9kSgufhebGqahkA\=\= +ComponentIcons.Innertube.fr.text.changed=20110317061957 +ComponentIcons.Innertube.fr.text.md5=Qi8ZJArDrWFHkJPWtc56Nw\=\= +ComponentIcons.Launchlug..text.changed=20110317061957 +ComponentIcons.Launchlug..text.md5=9UAhgdqi/vCpLI5lbdBGwQ\=\= +ComponentIcons.Launchlug.es.text.changed=20110317062041 +ComponentIcons.Launchlug.es.text.md5=9UAhgdqi/vCpLI5lbdBGwQ\=\= +ComponentIcons.Launchlug.fr.text.changed=20110317061957 +ComponentIcons.Launchlug.fr.text.md5=DgeT4LMq8b7kJjfvIjiklw\=\= +ComponentIcons.Masscomponent..text.changed=20110317061957 +ComponentIcons.Masscomponent..text.md5=8fn9jBHM4bI9A08PJpsLIQ\=\= +ComponentIcons.Masscomponent.es.text.changed=20110317062041 +ComponentIcons.Masscomponent.es.text.md5=8fn9jBHM4bI9A08PJpsLIQ\=\= +ComponentIcons.Masscomponent.fr.text.changed=20110317061957 +ComponentIcons.Masscomponent.fr.text.md5=8fn9jBHM4bI9A08PJpsLIQ\=\= +ComponentIcons.Nosecone..text.changed=20110317061957 +ComponentIcons.Nosecone..text.md5=2Eu3u5wFNw/urTRrBp/d/Q\=\= +ComponentIcons.Nosecone.es.text.changed=20110317062041 +ComponentIcons.Nosecone.es.text.md5=2Eu3u5wFNw/urTRrBp/d/Q\=\= +ComponentIcons.Nosecone.fr.text.changed=20110317061957 +ComponentIcons.Nosecone.fr.text.md5=jwC8jX5d14XDDyiDS/vw5w\=\= +ComponentIcons.Parachute..text.changed=20110317061957 +ComponentIcons.Parachute..text.md5=iJ1sZoJJtUSAO6/GwY2/NA\=\= +ComponentIcons.Parachute.es.text.changed=20110317062041 +ComponentIcons.Parachute.es.text.md5=iJ1sZoJJtUSAO6/GwY2/NA\=\= +ComponentIcons.Parachute.fr.text.changed=20110317061957 +ComponentIcons.Parachute.fr.text.md5=iJ1sZoJJtUSAO6/GwY2/NA\=\= +ComponentIcons.Shockcord..text.changed=20110317061957 +ComponentIcons.Shockcord..text.md5=f1YpHYc/4tbiAJ1i7/v80A\=\= +ComponentIcons.Shockcord.es.text.changed=20110317062041 +ComponentIcons.Shockcord.es.text.md5=f1YpHYc/4tbiAJ1i7/v80A\=\= +ComponentIcons.Shockcord.fr.text.changed=20110317061957 +ComponentIcons.Shockcord.fr.text.md5=RnR22FP/b23+JTzmuMDTbw\=\= +ComponentIcons.Streamer..text.changed=20110317061957 +ComponentIcons.Streamer..text.md5=nLxM4h+Bh1qHHzkakoNUTg\=\= +ComponentIcons.Streamer.es.text.changed=20110317062041 +ComponentIcons.Streamer.es.text.md5=nLxM4h+Bh1qHHzkakoNUTg\=\= +ComponentIcons.Streamer.fr.text.changed=20110317061957 +ComponentIcons.Streamer.fr.text.md5=NrzsnfrMWHLWWOBTpw/R0w\=\= +ComponentIcons.Transition..text.changed=20110317061957 +ComponentIcons.Transition..text.md5=r+35r+42f1H5jXzwMMl2pg\=\= +ComponentIcons.Transition.es.text.changed=20110317062041 +ComponentIcons.Transition.es.text.md5=r+35r+42f1H5jXzwMMl2pg\=\= +ComponentIcons.Transition.fr.text.changed=20110317061957 +ComponentIcons.Transition.fr.text.md5=r+35r+42f1H5jXzwMMl2pg\=\= +ComponentIcons.Trapezoidalfinset..text.changed=20110317061957 +ComponentIcons.Trapezoidalfinset..text.md5=QQFIiPvNQYWkf+dE26GjrA\=\= +ComponentIcons.Trapezoidalfinset.es.text.changed=20110317062041 +ComponentIcons.Trapezoidalfinset.es.text.md5=QQFIiPvNQYWkf+dE26GjrA\=\= +ComponentIcons.Trapezoidalfinset.fr.text.changed=20110317061957 +ComponentIcons.Trapezoidalfinset.fr.text.md5=u5aSLnqSBE6rXmR3Z8VQKw\=\= +ComponentIcons.Tubecoupler..text.changed=20110317061957 +ComponentIcons.Tubecoupler..text.md5=LlE3Zis+TY0jZQIJ2wyvTw\=\= +ComponentIcons.Tubecoupler.es.text.changed=20110317062041 +ComponentIcons.Tubecoupler.es.text.md5=LlE3Zis+TY0jZQIJ2wyvTw\=\= +ComponentIcons.Tubecoupler.fr.text.changed=20110317061957 +ComponentIcons.Tubecoupler.fr.text.md5=frXexxzhWAX7rrfGqQSHJw\=\= +ComponentIcons.disabled..text.changed=20110317061957 +ComponentIcons.disabled..text.md5=ezLjPkmtaMBhmeDeDO67xA\=\= +ComponentIcons.disabled.es.text.changed=20110317062041 +ComponentIcons.disabled.es.text.md5=ezLjPkmtaMBhmeDeDO67xA\=\= +ComponentIcons.disabled.fr.text.changed=20110317061957 +ComponentIcons.disabled.fr.text.md5=0Ojl3qxDOeqe6WDYOPIPSQ\=\= +Databases.materials.Acrylic..text.changed=20110317061957 +Databases.materials.Acrylic..text.md5=kggJrW81IQYUGKHuL4g3uA\=\= +Databases.materials.Acrylic.es.text.changed=20110317062041 +Databases.materials.Acrylic.es.text.md5=kggJrW81IQYUGKHuL4g3uA\=\= +Databases.materials.Acrylic.fr.text.changed=20110317061957 +Databases.materials.Acrylic.fr.text.md5=FpEd7aQ4nYeWrOh3mFBilg\=\= +Databases.materials.Balsa..text.changed=20110317061957 +Databases.materials.Balsa..text.md5=UJzl3j03u+Z5C3yIW/FeVQ\=\= +Databases.materials.Balsa.es.text.changed=20110317062041 +Databases.materials.Balsa.es.text.md5=UJzl3j03u+Z5C3yIW/FeVQ\=\= +Databases.materials.Balsa.fr.text.changed=20110317061957 +Databases.materials.Balsa.fr.text.md5=UJzl3j03u+Z5C3yIW/FeVQ\=\= +Databases.materials.Birch..text.changed=20110317061957 +Databases.materials.Birch..text.md5=bV5uNQcBPxDHykJpL6jgxg\=\= +Databases.materials.Birch.es.text.changed=20110317062041 +Databases.materials.Birch.es.text.md5=bV5uNQcBPxDHykJpL6jgxg\=\= +Databases.materials.Birch.fr.text.changed=20110317061957 +Databases.materials.Birch.fr.text.md5=jzmCOBhsUDEOaAVA8ktQwg\=\= +Databases.materials.Braidednylon2mm..text.changed=20110317061957 +Databases.materials.Braidednylon2mm..text.md5=X8kxKPHAWLxQn7TFIdniSA\=\= +Databases.materials.Braidednylon2mm.es.text.changed=20110317062041 +Databases.materials.Braidednylon2mm.es.text.md5=X8kxKPHAWLxQn7TFIdniSA\=\= +Databases.materials.Braidednylon2mm.fr.text.changed=20110317061957 +Databases.materials.Braidednylon2mm.fr.text.md5=duKtHNcUprGK/qxZQ9ftTA\=\= +Databases.materials.Braidednylon3mm..text.changed=20110317061957 +Databases.materials.Braidednylon3mm..text.md5=dGOfSpr8hjNsKL6VcYci4A\=\= +Databases.materials.Braidednylon3mm.es.text.changed=20110317062041 +Databases.materials.Braidednylon3mm.es.text.md5=dGOfSpr8hjNsKL6VcYci4A\=\= +Databases.materials.Braidednylon3mm.fr.text.changed=20110317061957 +Databases.materials.Braidednylon3mm.fr.text.md5=hizlpu32qBWEg6rp3SsvEw\=\= +Databases.materials.Carbonfiber..text.changed=20110317061957 +Databases.materials.Carbonfiber..text.md5=Zm807bkzR4bHxq0+6G37UA\=\= +Databases.materials.Carbonfiber.es.text.changed=20110317062041 +Databases.materials.Carbonfiber.es.text.md5=Zm807bkzR4bHxq0+6G37UA\=\= +Databases.materials.Carbonfiber.fr.text.changed=20110317061957 +Databases.materials.Carbonfiber.fr.text.md5=Hfz5Yz5VIS74GeHy+8iqlg\=\= +Databases.materials.Cardboard..text.changed=20110317061957 +Databases.materials.Cardboard..text.md5=3kZXUg90qd6BWJm30CZlTg\=\= +Databases.materials.Cardboard.es.text.changed=20110317062041 +Databases.materials.Cardboard.es.text.md5=3kZXUg90qd6BWJm30CZlTg\=\= +Databases.materials.Cardboard.fr.text.changed=20110317061957 +Databases.materials.Cardboard.fr.text.md5=9jNivJ+jgEEeZuJ3nUaCUg\=\= +Databases.materials.Cellophane..text.changed=20110317061957 +Databases.materials.Cellophane..text.md5=q4ImnS6vUjJ8WJqgNReQeQ\=\= +Databases.materials.Cellophane.es.text.changed=20110317062041 +Databases.materials.Cellophane.es.text.md5=q4ImnS6vUjJ8WJqgNReQeQ\=\= +Databases.materials.Cellophane.fr.text.changed=20110317061957 +Databases.materials.Cellophane.fr.text.md5=q4ImnS6vUjJ8WJqgNReQeQ\=\= +Databases.materials.Cork..text.changed=20110317061957 +Databases.materials.Cork..text.md5=ACyIe4Np5Z5vWKXQao0IFw\=\= +Databases.materials.Cork.es.text.changed=20110317062041 +Databases.materials.Cork.es.text.md5=ACyIe4Np5Z5vWKXQao0IFw\=\= +Databases.materials.Cork.fr.text.changed=20110317061957 +Databases.materials.Cork.fr.text.md5=94ng7mtXWFnhtTatMPkn+g\=\= +Databases.materials.Creape..text.changed=20110317061957 +Databases.materials.Creape..text.md5=5UTxlLuwxzFH0eBjjDcrnQ\=\= +Databases.materials.Creape.es.text.changed=20110317062041 +Databases.materials.Creape.es.text.md5=5UTxlLuwxzFH0eBjjDcrnQ\=\= +Databases.materials.Creapepaper.fr.text.changed=20110317061957 +Databases.materials.Creapepaper.fr.text.md5=IdwrPqq4SbZbeMVcJyVVIQ\=\= +Databases.materials.DepronXPS..text.changed=20110317061957 +Databases.materials.DepronXPS..text.md5=7BC9XVLHQMgXLmdJLGH8lw\=\= +Databases.materials.DepronXPS.es.text.changed=20110317062041 +Databases.materials.DepronXPS.es.text.md5=7BC9XVLHQMgXLmdJLGH8lw\=\= +Databases.materials.DepronXPS.fr.text.changed=20110317061957 +Databases.materials.DepronXPS.fr.text.md5=7BC9XVLHQMgXLmdJLGH8lw\=\= +Databases.materials.Elasticcordflat12mm..text.changed=20110317061957 +Databases.materials.Elasticcordflat12mm..text.md5=UqIS8DUoAkR2shGfZkh8Ag\=\= +Databases.materials.Elasticcordflat12mm.es.text.changed=20110317062041 +Databases.materials.Elasticcordflat12mm.es.text.md5=UqIS8DUoAkR2shGfZkh8Ag\=\= +Databases.materials.Elasticcordflat12mm.fr.text.changed=20110317061957 +Databases.materials.Elasticcordflat12mm.fr.text.md5=d9Je5nwYMrhRn+BIXLdTcg\=\= +Databases.materials.Elasticcordflat19mm..text.changed=20110317061957 +Databases.materials.Elasticcordflat19mm..text.md5=0pw56UkF1KZT79twwEBWAg\=\= +Databases.materials.Elasticcordflat19mm.es.text.changed=20110317062041 +Databases.materials.Elasticcordflat19mm.es.text.md5=0pw56UkF1KZT79twwEBWAg\=\= +Databases.materials.Elasticcordflat19mm.fr.text.changed=20110317061957 +Databases.materials.Elasticcordflat19mm.fr.text.md5=QaX2TbSiqebakVexWH9e1g\=\= +Databases.materials.Elasticcordflat25mm..text.changed=20110317061957 +Databases.materials.Elasticcordflat25mm..text.md5=Klj/oN3iqILCdExX7yTeew\=\= +Databases.materials.Elasticcordflat25mm.es.text.changed=20110317062041 +Databases.materials.Elasticcordflat25mm.es.text.md5=Klj/oN3iqILCdExX7yTeew\=\= +Databases.materials.Elasticcordflat25mm.fr.text.changed=20110317061957 +Databases.materials.Elasticcordflat25mm.fr.text.md5=Y1NOn5LUOBrrLSCOu2Uf5Q\=\= +Databases.materials.Elasticcordflat6mm..text.changed=20110317061957 +Databases.materials.Elasticcordflat6mm..text.md5=2rbpwGIZr9FjAOy2T4zw1g\=\= +Databases.materials.Elasticcordflat6mm.es.text.changed=20110317062041 +Databases.materials.Elasticcordflat6mm.es.text.md5=2rbpwGIZr9FjAOy2T4zw1g\=\= +Databases.materials.Elasticcordflat6mm.fr.text.changed=20110317061957 +Databases.materials.Elasticcordflat6mm.fr.text.md5=xhQL8O6ojUrnhFuBK5bHLw\=\= +Databases.materials.Elasticcordround2mm..text.changed=20110317061957 +Databases.materials.Elasticcordround2mm..text.md5=AHgsLuu9fhDr0t9a8I2MUA\=\= +Databases.materials.Elasticcordround2mm.es.text.changed=20110317062041 +Databases.materials.Elasticcordround2mm.es.text.md5=AHgsLuu9fhDr0t9a8I2MUA\=\= +Databases.materials.Elasticcordround2mm.fr.text.changed=20110317061957 +Databases.materials.Elasticcordround2mm.fr.text.md5=WYX4349UzKCrUDNmlrcpIg\=\= +Databases.materials.Fiberglass..text.changed=20110317061957 +Databases.materials.Fiberglass..text.md5=KEH509sjgcn6oKvbOVlatQ\=\= +Databases.materials.Fiberglass.es.text.changed=20110317062041 +Databases.materials.Fiberglass.es.text.md5=KEH509sjgcn6oKvbOVlatQ\=\= +Databases.materials.Fiberglass.fr.text.changed=20110317061957 +Databases.materials.Fiberglass.fr.text.md5=+audrX8/aNFB6Phwg7vT3Q\=\= +Databases.materials.Kraftphenolic..text.changed=20110317061957 +Databases.materials.Kraftphenolic..text.md5=X+G/LbnPB7LdQtLgglyhpw\=\= +Databases.materials.Kraftphenolic.es.text.changed=20110317062041 +Databases.materials.Kraftphenolic.es.text.md5=X+G/LbnPB7LdQtLgglyhpw\=\= +Databases.materials.Kraftphenolic.fr.text.changed=20110317061957 +Databases.materials.Kraftphenolic.fr.text.md5=A3s6vTus0rnb3Gaoxtnc5A\=\= +Databases.materials.Maple..text.changed=20110317061957 +Databases.materials.Maple..text.md5=QARQfjIOZ4+AoKGNAKB/CQ\=\= +Databases.materials.Maple.es.text.changed=20110317062041 +Databases.materials.Maple.es.text.md5=QARQfjIOZ4+AoKGNAKB/CQ\=\= +Databases.materials.Maple.fr.text.changed=20110317061957 +Databases.materials.Maple.fr.text.md5=hncR3PjxLIxNVfE99V9mgQ\=\= +Databases.materials.Mylar..text.changed=20110317061957 +Databases.materials.Mylar..text.md5=z1gglxy9OwOG43h2swoCmQ\=\= +Databases.materials.Mylar.es.text.changed=20110317062041 +Databases.materials.Mylar.es.text.md5=z1gglxy9OwOG43h2swoCmQ\=\= +Databases.materials.Mylar.fr.text.changed=20110317061957 +Databases.materials.Mylar.fr.text.md5=z1gglxy9OwOG43h2swoCmQ\=\= +Databases.materials.PVC..text.changed=20110317061957 +Databases.materials.PVC..text.md5=SdAynCBfEWhprkB+8iFyIg\=\= +Databases.materials.PVC.es.text.changed=20110317062041 +Databases.materials.PVC.es.text.md5=SdAynCBfEWhprkB+8iFyIg\=\= +Databases.materials.PVC.fr.text.changed=20110317061957 +Databases.materials.PVC.fr.text.md5=SdAynCBfEWhprkB+8iFyIg\=\= +Databases.materials.Paperoffice..text.changed=20110317061957 +Databases.materials.Paperoffice..text.md5=YJlRrejLIJQYng+v1v8Zsw\=\= +Databases.materials.Paperoffice.es.text.changed=20110317062041 +Databases.materials.Paperoffice.es.text.md5=YJlRrejLIJQYng+v1v8Zsw\=\= +Databases.materials.Paperoffice.fr.text.changed=20110317061957 +Databases.materials.Paperoffice.fr.text.md5=Bxj52clNw5VG+8pAod3ucQ\=\= +Databases.materials.Paperoffice1.fr.text.changed=20110317061957 +Databases.materials.Paperoffice1.fr.text.md5=Bxj52clNw5VG+8pAod3ucQ\=\= +Databases.materials.Pine..text.changed=20110317061957 +Databases.materials.Pine..text.md5=LjKDbWBk35q3ljJmwWpvNA\=\= +Databases.materials.Pine.es.text.changed=20110317062041 +Databases.materials.Pine.es.text.md5=LjKDbWBk35q3ljJmwWpvNA\=\= +Databases.materials.Pine.fr.text.changed=20110317061957 +Databases.materials.Pine.fr.text.md5=544UxfGPeTvc1HJnZvD6RA\=\= +Databases.materials.Plywoodbirch..text.changed=20110317061957 +Databases.materials.Plywoodbirch..text.md5=KSwPyizdAb5VIxCRSaT+yA\=\= +Databases.materials.Plywoodbirch.es.text.changed=20110317062041 +Databases.materials.Plywoodbirch.es.text.md5=KSwPyizdAb5VIxCRSaT+yA\=\= +Databases.materials.Plywoodbirch.fr.text.changed=20110317061957 +Databases.materials.Plywoodbirch.fr.text.md5=sW0pYmiRses3nhrhFRrhew\=\= +Databases.materials.PolycarbonateLexan..text.changed=20110317061957 +Databases.materials.PolycarbonateLexan..text.md5=6DXCRG3nMKVKxJpp0GPFNw\=\= +Databases.materials.PolycarbonateLexan.es.text.changed=20110317062041 +Databases.materials.PolycarbonateLexan.es.text.md5=6DXCRG3nMKVKxJpp0GPFNw\=\= +Databases.materials.PolycarbonateLexan.fr.text.changed=20110317061957 +Databases.materials.PolycarbonateLexan.fr.text.md5=6DXCRG3nMKVKxJpp0GPFNw\=\= +Databases.materials.Polyethyleneheavy..text.changed=20110317061957 +Databases.materials.Polyethyleneheavy..text.md5=4qti9aBJUU3hbBAEuUviYA\=\= +Databases.materials.Polyethyleneheavy.es.text.changed=20110317062041 +Databases.materials.Polyethyleneheavy.es.text.md5=4qti9aBJUU3hbBAEuUviYA\=\= +Databases.materials.Polyethyleneheavy.fr.text.changed=20110317061957 +Databases.materials.Polyethyleneheavy.fr.text.md5=ACjbo8AEpeaCtdWtc86diA\=\= +Databases.materials.Polyethylenethin..text.changed=20110317061957 +Databases.materials.Polyethylenethin..text.md5=rQiJkDCbn0A/ap+4gWEEPQ\=\= +Databases.materials.Polyethylenethin.es.text.changed=20110317062041 +Databases.materials.Polyethylenethin.es.text.md5=rQiJkDCbn0A/ap+4gWEEPQ\=\= +Databases.materials.Polyethylenethin.fr.text.changed=20110317061957 +Databases.materials.Polyethylenethin.fr.text.md5=MDihplm9z5W9ZpXOfCrSwQ\=\= +Databases.materials.Polystyrene..text.changed=20110317061957 +Databases.materials.Polystyrene..text.md5=n3B+DuSW5pdMuTgM2L1wCw\=\= +Databases.materials.Polystyrene.es.text.changed=20110317062041 +Databases.materials.Polystyrene.es.text.md5=n3B+DuSW5pdMuTgM2L1wCw\=\= +Databases.materials.Polystyrene.fr.text.changed=20110317061957 +Databases.materials.Polystyrene.fr.text.md5=5LwYfxEQckO3N4wk3PfprQ\=\= +Databases.materials.Quantumtubing..text.changed=20110317061957 +Databases.materials.Quantumtubing..text.md5=u1g75oGTDq4O4EXHEwYTTA\=\= +Databases.materials.Quantumtubing.es.text.changed=20110317062041 +Databases.materials.Quantumtubing.es.text.md5=u1g75oGTDq4O4EXHEwYTTA\=\= +Databases.materials.Quantumtubing.fr.text.changed=20110317061957 +Databases.materials.Quantumtubing.fr.text.md5=u1g75oGTDq4O4EXHEwYTTA\=\= +Databases.materials.Ripstopnylon..text.changed=20110317061957 +Databases.materials.Ripstopnylon..text.md5=nS0hf3fdz6IZj3ka265IfA\=\= +Databases.materials.Ripstopnylon.es.text.changed=20110317062041 +Databases.materials.Ripstopnylon.es.text.md5=nS0hf3fdz6IZj3ka265IfA\=\= +Databases.materials.Ripstopnylon.fr.text.changed=20110317061957 +Databases.materials.Ripstopnylon.fr.text.md5=nS0hf3fdz6IZj3ka265IfA\=\= +Databases.materials.Silk..text.changed=20110317061957 +Databases.materials.Silk..text.md5=oqOgNH8PABpEc91U3KJGLg\=\= +Databases.materials.Silk.es.text.changed=20110317062041 +Databases.materials.Silk.es.text.md5=oqOgNH8PABpEc91U3KJGLg\=\= +Databases.materials.Silk.fr.text.changed=20110317061957 +Databases.materials.Silk.fr.text.md5=WI+tBLUHc3AGyKpZ2LFysw\=\= +Databases.materials.Spruce..text.changed=20110317061957 +Databases.materials.Spruce..text.md5=DVB5sIiuu96CDfoeN5DMiQ\=\= +Databases.materials.Spruce.es.text.changed=20110317062041 +Databases.materials.Spruce.es.text.md5=DVB5sIiuu96CDfoeN5DMiQ\=\= +Databases.materials.Spruce.fr.text.changed=20110317061957 +Databases.materials.Spruce.fr.text.md5=lcn3uWDykOclClALxjuvKw\=\= +Databases.materials.StyrofoamBluefoamXPS..text.changed=20110317061957 +Databases.materials.StyrofoamBluefoamXPS..text.md5=SCLrpbQWnjLGUQwtkiVmKA\=\= +Databases.materials.StyrofoamBluefoamXPS.es.text.changed=20110317062041 +Databases.materials.StyrofoamBluefoamXPS.es.text.md5=SCLrpbQWnjLGUQwtkiVmKA\=\= +Databases.materials.StyrofoamBluefoamXPS.fr.text.changed=20110317061957 +Databases.materials.StyrofoamBluefoamXPS.fr.text.md5=rpX9noGZUXNCLo8jIBSw2w\=\= +Databases.materials.StyrofoamgenericEPS..text.changed=20110317061957 +Databases.materials.StyrofoamgenericEPS..text.md5=wU02F0/dbBr7Dr32Ut29eQ\=\= +Databases.materials.StyrofoamgenericEPS.es.text.changed=20110317062041 +Databases.materials.StyrofoamgenericEPS.es.text.md5=wU02F0/dbBr7Dr32Ut29eQ\=\= +Databases.materials.StyrofoamgenericEPS.fr.text.changed=20110317061957 +Databases.materials.StyrofoamgenericEPS.fr.text.md5=wGOdg2YgRH+ZyjOanad7DA\=\= +Databases.materials.Threadheavy-duty..text.changed=20110317061957 +Databases.materials.Threadheavy-duty..text.md5=YsxAvXk9dBvC8BJWBCiFaA\=\= +Databases.materials.Threadheavy-duty.es.text.changed=20110317062041 +Databases.materials.Threadheavy-duty.es.text.md5=YsxAvXk9dBvC8BJWBCiFaA\=\= +Databases.materials.Threadheavy-duty.fr.text.changed=20110317061957 +Databases.materials.Threadheavy-duty.fr.text.md5=vtl88VGmw+cnTfl0Fb9uIg\=\= +Databases.materials.Tubularnylon11mm..text.changed=20110317061957 +Databases.materials.Tubularnylon11mm..text.md5=tZXRD66LZcmLq35Y30jxuw\=\= +Databases.materials.Tubularnylon11mm.es.text.changed=20110317062041 +Databases.materials.Tubularnylon11mm.es.text.md5=tZXRD66LZcmLq35Y30jxuw\=\= +Databases.materials.Tubularnylon11mm.fr.text.changed=20110317061957 +Databases.materials.Tubularnylon11mm.fr.text.md5=+82qNlNJWa7HalJnGiMroA\=\= +Databases.materials.Tubularnylon14mm..text.changed=20110317061957 +Databases.materials.Tubularnylon14mm..text.md5=Uj/14b9GDvrlqGVHD9ff+Q\=\= +Databases.materials.Tubularnylon14mm.es.text.changed=20110317062041 +Databases.materials.Tubularnylon14mm.es.text.md5=Uj/14b9GDvrlqGVHD9ff+Q\=\= +Databases.materials.Tubularnylon14mm.fr.text.changed=20110317061957 +Databases.materials.Tubularnylon14mm.fr.text.md5=k0YmeMIOgSxyhzrqvPJ1Hw\=\= +Databases.materials.Tubularnylon25mm..text.changed=20110317061957 +Databases.materials.Tubularnylon25mm..text.md5=5QKPLVQlsMaIqlDBcxLLDg\=\= +Databases.materials.Tubularnylon25mm.es.text.changed=20110317062041 +Databases.materials.Tubularnylon25mm.es.text.md5=5QKPLVQlsMaIqlDBcxLLDg\=\= +Databases.materials.Tubularnylon25mm.fr.text.changed=20110317061957 +Databases.materials.Tubularnylon25mm.fr.text.md5=UIt1M3ItrU+tPZJnvF7/QA\=\= +EllipticalFinSetCfg.Fincant..text.changed=20110317061957 +EllipticalFinSetCfg.Fincant..text.md5=gJTol4zWIT3NlA2Qj+mRBw\=\= +EllipticalFinSetCfg.Fincant.es.text.changed=20110317062041 +EllipticalFinSetCfg.Fincant.es.text.md5=cxWpv/IhFV3FTjiylJ0H7Q\=\= +EllipticalFinSetCfg.Fincant.fr.text.changed=20110317061957 +EllipticalFinSetCfg.Fincant.fr.text.md5=gbEuh/Hyt0eAkJbVyIpt1A\=\= +EllipticalFinSetCfg.FincrossSection..text.changed=20110317061957 +EllipticalFinSetCfg.FincrossSection..text.md5=d139yIi0Bcw4ePuCYxjEMQ\=\= +EllipticalFinSetCfg.FincrossSection.es.text.changed=20110317062041 +EllipticalFinSetCfg.FincrossSection.es.text.md5=DY//U8pOwmQ7H2fBwBVvKA\=\= +EllipticalFinSetCfg.FincrossSection.fr.text.changed=20110317061957 +EllipticalFinSetCfg.FincrossSection.fr.text.md5=BzmEcGR9qVjmHb5eL2X9hA\=\= +EllipticalFinSetCfg.General..text.changed=20110317061957 +EllipticalFinSetCfg.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +EllipticalFinSetCfg.General.es.text.changed=20110317062041 +EllipticalFinSetCfg.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +EllipticalFinSetCfg.General.fr.text.changed=20110317061957 +EllipticalFinSetCfg.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\= +EllipticalFinSetCfg.Generalproperties..text.changed=20110317061957 +EllipticalFinSetCfg.Generalproperties..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\= +EllipticalFinSetCfg.Generalproperties.es.text.changed=20110317062041 +EllipticalFinSetCfg.Generalproperties.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\= +EllipticalFinSetCfg.Generalproperties.fr.text.changed=20110317061957 +EllipticalFinSetCfg.Generalproperties.fr.text.md5=c8YR8Y64ukbawbUNBj44AQ\=\= +EllipticalFinSetCfg.Height..text.changed=20110317061957 +EllipticalFinSetCfg.Height..text.md5=6TPcJPskXYY6Q7T+/ptF9Q\=\= +EllipticalFinSetCfg.Height.es.text.changed=20110317062041 +EllipticalFinSetCfg.Height.es.text.md5=mcao1NLk/9bh/Sxh5rp7Mg\=\= +EllipticalFinSetCfg.Height.fr.text.changed=20110317061957 +EllipticalFinSetCfg.Height.fr.text.md5=Z2KaAfTVGQ4cBjFlfETelA\=\= +EllipticalFinSetCfg.Nbroffins..text.changed=20110317061957 +EllipticalFinSetCfg.Nbroffins..text.md5=+3QcyIkz9lnt+0f8dlP/ew\=\= +EllipticalFinSetCfg.Nbroffins.es.text.changed=20110317062041 +EllipticalFinSetCfg.Nbroffins.es.text.md5=HGKq4/3A+oOKV7b9MdHIKQ\=\= +EllipticalFinSetCfg.Nbroffins.fr.text.changed=20110317061957 +EllipticalFinSetCfg.Nbroffins.fr.text.md5=6KbxfYrq87kta+KweGSOAg\=\= +EllipticalFinSetCfg.Positionrelativeto..text.changed=20110317061957 +EllipticalFinSetCfg.Positionrelativeto..text.md5=uld2YfO/C3gWkbRzlw+EMA\=\= +EllipticalFinSetCfg.Positionrelativeto.es.text.changed=20110317062041 +EllipticalFinSetCfg.Positionrelativeto.es.text.md5=6hQM5zYAcKv2lio49/hQqQ\=\= +EllipticalFinSetCfg.Positionrelativeto.fr.text.changed=20110317061957 +EllipticalFinSetCfg.Positionrelativeto.fr.text.md5=b5qJfneiAEVaRoxk125f2Q\=\= +EllipticalFinSetCfg.Rootchord..text.changed=20110317061957 +EllipticalFinSetCfg.Rootchord..text.md5=bOfX+KY7hvtQr5hLPPqmgg\=\= +EllipticalFinSetCfg.Rootchord.es.text.changed=20110317062041 +EllipticalFinSetCfg.Rootchord.es.text.md5=5+/3cyMZzYKIX83mUKWAaQ\=\= +EllipticalFinSetCfg.Rootchord.fr.text.changed=20110317061957 +EllipticalFinSetCfg.Rootchord.fr.text.md5=ptg595jK2CUPVFwcyanFrw\=\= +EllipticalFinSetCfg.Rotation..text.changed=20110317061957 +EllipticalFinSetCfg.Rotation..text.md5=3c8yyFAJWJ8PKri4QWkygw\=\= +EllipticalFinSetCfg.Rotation.es.text.changed=20110317062041 +EllipticalFinSetCfg.Rotation.es.text.md5=DI60aemtFRUMr07YuYGOvA\=\= +EllipticalFinSetCfg.Rotation.fr.text.changed=20110317061957 +EllipticalFinSetCfg.Rotation.fr.text.md5=3c8yyFAJWJ8PKri4QWkygw\=\= +EllipticalFinSetCfg.Thickness..text.changed=20110317061957 +EllipticalFinSetCfg.Thickness..text.md5=De6os9fTRKpjp0AF4eicGg\=\= +EllipticalFinSetCfg.Thickness.es.text.changed=20110317062041 +EllipticalFinSetCfg.Thickness.es.text.md5=xJjWfhrb7lNPRDbDLxB+9A\=\= +EllipticalFinSetCfg.Thickness.fr.text.changed=20110317061957 +EllipticalFinSetCfg.Thickness.fr.text.md5=wQJDV7ZNGPpFMM+AiyCNxg\=\= +EllipticalFinSetCfg.plus..text.changed=20110317061957 +EllipticalFinSetCfg.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +EllipticalFinSetCfg.plus.es.text.changed=20110317062041 +EllipticalFinSetCfg.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +EllipticalFinSetCfg.plus.fr.text.changed=20110317061957 +EllipticalFinSetCfg.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +EllipticalFinSetCfg.ttip.Fincant..text.changed=20110317061957 +EllipticalFinSetCfg.ttip.Fincant..text.md5=kjjf+CiniAfww5LqDIYfBg\=\= +EllipticalFinSetCfg.ttip.Fincant.es.text.changed=20110317062041 +EllipticalFinSetCfg.ttip.Fincant.es.text.md5=O3vvFqvC1DaeZ+xxIF0C4Q\=\= +EllipticalFinSetCfg.ttip.Fincant.fr.text.changed=20110317061957 +EllipticalFinSetCfg.ttip.Fincant.fr.text.md5=VRn2tiTyo2OBM3le7/iJBg\=\= +ExternalComponent.Polished..text.changed=20110317061957 +ExternalComponent.Polished..text.md5=qD+9LKdCR0MQkJJk/41raw\=\= +ExternalComponent.Polished.es.text.changed=20110317062041 +ExternalComponent.Polished.es.text.md5=qD+9LKdCR0MQkJJk/41raw\=\= +ExternalComponent.Polished.fr.text.changed=20110317061957 +ExternalComponent.Polished.fr.text.md5=47ydT2y+Kzfn4gyfE6cj1Q\=\= +ExternalComponent.Regularpaint..text.changed=20110317061957 +ExternalComponent.Regularpaint..text.md5=cnsOX+ZK0p8Ju5FKeeZ/XA\=\= +ExternalComponent.Regularpaint.es.text.changed=20110317062041 +ExternalComponent.Regularpaint.es.text.md5=cnsOX+ZK0p8Ju5FKeeZ/XA\=\= +ExternalComponent.Regularpaint.fr.text.changed=20110317061957 +ExternalComponent.Regularpaint.fr.text.md5=W9sx1VyP1OtztM3z78zWCQ\=\= +ExternalComponent.Rough..text.changed=20110317061957 +ExternalComponent.Rough..text.md5=zsy9qbAi5hX0l4zeYbvqjA\=\= +ExternalComponent.Rough.es.text.changed=20110317062041 +ExternalComponent.Rough.es.text.md5=zsy9qbAi5hX0l4zeYbvqjA\=\= +ExternalComponent.Rough.fr.text.changed=20110317061957 +ExternalComponent.Rough.fr.text.md5=lmfZZv1p3QJYotZvMqb0QA\=\= +ExternalComponent.Smoothpaint..text.changed=20110317061957 +ExternalComponent.Smoothpaint..text.md5=coARgmxEiTmsvajfM8NMmQ\=\= +ExternalComponent.Smoothpaint.es.text.changed=20110317062041 +ExternalComponent.Smoothpaint.es.text.md5=coARgmxEiTmsvajfM8NMmQ\=\= +ExternalComponent.Smoothpaint.fr.text.changed=20110317061957 +ExternalComponent.Smoothpaint.fr.text.md5=fL/4o82FlKThyQ6hhU2UUw\=\= +ExternalComponent.Unfinished..text.changed=20110317061957 +ExternalComponent.Unfinished..text.md5=FKB4A9uIm9Oo+NGC/2GXXA\=\= +ExternalComponent.Unfinished.es.text.changed=20110317062041 +ExternalComponent.Unfinished.es.text.md5=FKB4A9uIm9Oo+NGC/2GXXA\=\= +ExternalComponent.Unfinished.fr.text.changed=20110317061957 +ExternalComponent.Unfinished.fr.text.md5=J0aZ8kiRDa9M0omS+HByZg\=\= +FinSet.CrossSection.AIRFOIL..text.changed=20110317061957 +FinSet.CrossSection.AIRFOIL..text.md5=ZpYfHpLxbOr/PhOzSESnuQ\=\= +FinSet.CrossSection.AIRFOIL.es.text.changed=20110317062041 +FinSet.CrossSection.AIRFOIL.es.text.md5=ZpYfHpLxbOr/PhOzSESnuQ\=\= +FinSet.CrossSection.AIRFOIL.fr.text.changed=20110317061957 +FinSet.CrossSection.AIRFOIL.fr.text.md5=ZpYfHpLxbOr/PhOzSESnuQ\=\= +FinSet.CrossSection.ROUNDED..text.changed=20110317061957 +FinSet.CrossSection.ROUNDED..text.md5=vvJIHtpAvRIUgvGBTXIxTw\=\= +FinSet.CrossSection.ROUNDED.es.text.changed=20110317062041 +FinSet.CrossSection.ROUNDED.es.text.md5=vvJIHtpAvRIUgvGBTXIxTw\=\= +FinSet.CrossSection.ROUNDED.fr.text.changed=20110317061957 +FinSet.CrossSection.ROUNDED.fr.text.md5=NSevGKwkcHgHZ1+JtGxVSA\=\= +FinSet.CrossSection.SQUARE..text.changed=20110317061957 +FinSet.CrossSection.SQUARE..text.md5=zrRsoRXQXFGqWhaohnwzBA\=\= +FinSet.CrossSection.SQUARE.es.text.changed=20110317062041 +FinSet.CrossSection.SQUARE.es.text.md5=zrRsoRXQXFGqWhaohnwzBA\=\= +FinSet.CrossSection.SQUARE.fr.text.changed=20110317061957 +FinSet.CrossSection.SQUARE.fr.text.md5=9QYB0tKTeDfI5y0YPJnoDQ\=\= +FinSet.TabRelativePosition.CENTER..text.changed=20110317061957 +FinSet.TabRelativePosition.CENTER..text.md5=ZsxAXbGPHVx1aqHkeU2Lvg\=\= +FinSet.TabRelativePosition.CENTER.es.text.changed=20110317062041 +FinSet.TabRelativePosition.CENTER.es.text.md5=ZsxAXbGPHVx1aqHkeU2Lvg\=\= +FinSet.TabRelativePosition.CENTER.fr.text.changed=20110317061957 +FinSet.TabRelativePosition.CENTER.fr.text.md5=ZsxAXbGPHVx1aqHkeU2Lvg\=\= +FinSet.TabRelativePosition.END..text.changed=20110317061957 +FinSet.TabRelativePosition.END..text.md5=mJ2i55mbegPalDQFiF2Xfg\=\= +FinSet.TabRelativePosition.END.es.text.changed=20110317062041 +FinSet.TabRelativePosition.END.es.text.md5=mJ2i55mbegPalDQFiF2Xfg\=\= +FinSet.TabRelativePosition.END.fr.text.changed=20110317061957 +FinSet.TabRelativePosition.END.fr.text.md5=mJ2i55mbegPalDQFiF2Xfg\=\= +FinSet.TabRelativePosition.FRONT..text.changed=20110317061957 +FinSet.TabRelativePosition.FRONT..text.md5=h1zSN9SgZIILiiS+y+ZbVA\=\= +FinSet.TabRelativePosition.FRONT.es.text.changed=20110317062041 +FinSet.TabRelativePosition.FRONT.es.text.md5=h1zSN9SgZIILiiS+y+ZbVA\=\= +FinSet.TabRelativePosition.FRONT.fr.text.changed=20110317061957 +FinSet.TabRelativePosition.FRONT.fr.text.md5=h1zSN9SgZIILiiS+y+ZbVA\=\= +FinSetConfig.Convertfinset..text.changed=20110317061957 +FinSetConfig.Convertfinset..text.md5=l6o1cNQFzvvwgu/kQ9F8PQ\=\= +FinSetConfig.Convertfinset.es.text.changed=20110317062041 +FinSetConfig.Convertfinset.es.text.md5=8EUQWdTah7wlU4TU6DiFiA\=\= +FinSetConfig.Convertfinset.fr.text.changed=20110317061957 +FinSetConfig.Convertfinset.fr.text.md5=OyotF2Zh3qfIp9jMz80U1g\=\= +FinSetConfig.but.Converttofreeform..text.changed=20110317061957 +FinSetConfig.but.Converttofreeform..text.md5=/jPxo/NqHtWHSqUUzxMdKg\=\= +FinSetConfig.but.Converttofreeform.es.text.changed=20110317062041 +FinSetConfig.but.Converttofreeform.es.text.md5=DZxn8eicRLAFCZOOgdeJWQ\=\= +FinSetConfig.but.Converttofreeform.fr.text.changed=20110317061957 +FinSetConfig.but.Converttofreeform.fr.text.md5=15zsv5i/AhGWJSsNheUO5Q\=\= +FinSetConfig.but.Converttofreeform.ttip..text.changed=20110317061957 +FinSetConfig.but.Converttofreeform.ttip..text.md5=nbJUlM0mymbJdntzyncxwg\=\= +FinSetConfig.but.Converttofreeform.ttip.es.text.changed=20110317062041 +FinSetConfig.but.Converttofreeform.ttip.es.text.md5=gJ7Ldso6O+ns//mebImxyQ\=\= +FinSetConfig.but.Converttofreeform.ttip.fr.text.changed=20110317061957 +FinSetConfig.but.Converttofreeform.ttip.fr.text.md5=l3tOjU+9ldsDgK5i5MlZZQ\=\= +FinSetConfig.but.Splitfins..text.changed=20110317061957 +FinSetConfig.but.Splitfins..text.md5=QU8lHQQeGUr5nrFvg2HL9w\=\= +FinSetConfig.but.Splitfins.es.text.changed=20110317062041 +FinSetConfig.but.Splitfins.es.text.md5=doyEvq5Uf1gxFY7APZnTdg\=\= +FinSetConfig.but.Splitfins.fr.text.changed=20110317061957 +FinSetConfig.but.Splitfins.fr.text.md5=5drPfd/Ld+fJBLpt9FqurA\=\= +FinSetConfig.but.Splitfins.ttip..text.changed=20110317061957 +FinSetConfig.but.Splitfins.ttip..text.md5=UybjQtj0uRYEeOTOZLeiAA\=\= +FinSetConfig.but.Splitfins.ttip.es.text.changed=20110317062041 +FinSetConfig.but.Splitfins.ttip.es.text.md5=HZGVi0trp7OEoeiP/Whbvg\=\= +FinSetConfig.but.Splitfins.ttip.fr.text.changed=20110317061957 +FinSetConfig.but.Splitfins.ttip.fr.text.md5=z2RunUHeYExdKplLpjoVjQ\=\= +FinSetConfig.lbl.Tabheight..text.changed=20110317061957 +FinSetConfig.lbl.Tabheight..text.md5=w4RnHQX5V4SzzMx8DoUbyA\=\= +FinSetConfig.lbl.Tabheight.es.text.changed=20110317062041 +FinSetConfig.lbl.Tabheight.es.text.md5=KB8V+pz8I+3cwp1V9tO9XA\=\= +FinSetConfig.lbl.Tabheight.fr.text.changed=20110317061957 +FinSetConfig.lbl.Tabheight.fr.text.md5=cz0rt5Y55Px0S0Atpl8Ngw\=\= +FinSetConfig.lbl.Tablength..text.changed=20110317061957 +FinSetConfig.lbl.Tablength..text.md5=/wljB0TH5FpZl8rPbibKtQ\=\= +FinSetConfig.lbl.Tablength.es.text.changed=20110317062041 +FinSetConfig.lbl.Tablength.es.text.md5=OrPb58mwteho4vixulLvqA\=\= +FinSetConfig.lbl.Tablength.fr.text.changed=20110317061957 +FinSetConfig.lbl.Tablength.fr.text.md5=azOjCh7703BKNKnrF3vzLg\=\= +FinSetConfig.lbl.Tabposition..text.changed=20110317061957 +FinSetConfig.lbl.Tabposition..text.md5=OXQLQUu0jGg2r2ZAoSKrRQ\=\= +FinSetConfig.lbl.Tabposition.es.text.changed=20110317062041 +FinSetConfig.lbl.Tabposition.es.text.md5=1PjVCbBb8laQzrY4m0ugJg\=\= +FinSetConfig.lbl.Tabposition.fr.text.changed=20110317061957 +FinSetConfig.lbl.Tabposition.fr.text.md5=TKkYxEwYdYOX4kYjqcoOsg\=\= +FinSetConfig.lbl.Through-the-wall..text.changed=20110317061957 +FinSetConfig.lbl.Through-the-wall..text.md5=gmQCNfmbALfBq9PIn+smWQ\=\= +FinSetConfig.lbl.Through-the-wall.es.text.changed=20110317062041 +FinSetConfig.lbl.Through-the-wall.es.text.md5=4vLciHiCkP6xOCE4ihpmGQ\=\= +FinSetConfig.lbl.Through-the-wall.fr.text.changed=20110317061957 +FinSetConfig.lbl.Through-the-wall.fr.text.md5=3n2ZjOcRp7u5437g9xumOw\=\= +FinSetConfig.lbl.relativeto..text.changed=20110317061957 +FinSetConfig.lbl.relativeto..text.md5=KLALLq8yN/jLufKtRcLiRg\=\= +FinSetConfig.lbl.relativeto.es.text.changed=20110317062041 +FinSetConfig.lbl.relativeto.es.text.md5=K+6dXfd2OrY8zlPDA2qY5Q\=\= +FinSetConfig.lbl.relativeto.fr.text.changed=20110317061957 +FinSetConfig.lbl.relativeto.fr.text.md5=cd7MxzE5+7RtrD1hcsgVjA\=\= +FinSetConfig.tab.Fintabs..text.changed=20110317061957 +FinSetConfig.tab.Fintabs..text.md5=FokJs9QfpfvpinxWAsLQCQ\=\= +FinSetConfig.tab.Fintabs.es.text.changed=20110317062041 +FinSetConfig.tab.Fintabs.es.text.md5=a1EaAUkhFBwufmzY4GVOrg\=\= +FinSetConfig.tab.Fintabs.fr.text.changed=20110317061957 +FinSetConfig.tab.Fintabs.fr.text.md5=0SV7fnDJHPj8dxPYn/tlrw\=\= +FinSetConfig.tab.Through-the-wall..text.changed=20110317061957 +FinSetConfig.tab.Through-the-wall..text.md5=7rim3ieZpPN9MPF43nbDgA\=\= +FinSetConfig.tab.Through-the-wall.es.text.changed=20110317062041 +FinSetConfig.tab.Through-the-wall.es.text.md5=8d51yKovKAYiaz8ZNjTaVQ\=\= +FinSetConfig.tab.Through-the-wall.fr.text.changed=20110317061957 +FinSetConfig.tab.Through-the-wall.fr.text.md5=uw4gG5d7feSK6lRWecnPlA\=\= +FinSetConfig.ttip.Tabheight..text.changed=20110317061957 +FinSetConfig.ttip.Tabheight..text.md5=B96+RU8cehVJPqw7T+z4Fg\=\= +FinSetConfig.ttip.Tabheight.es.text.changed=20110317062041 +FinSetConfig.ttip.Tabheight.es.text.md5=P1RsuBeqlM2F+cdcRGVcNg\=\= +FinSetConfig.ttip.Tabheight.fr.text.changed=20110317061957 +FinSetConfig.ttip.Tabheight.fr.text.md5=ruAICzw4BvQuLsXVXwCU6A\=\= +FinSetConfig.ttip.Tablength..text.changed=20110317061957 +FinSetConfig.ttip.Tablength..text.md5=GB3+YRuCa5pfC3P7F8ovvA\=\= +FinSetConfig.ttip.Tablength.es.text.changed=20110317062041 +FinSetConfig.ttip.Tablength.es.text.md5=h3IMkbMByXJv7S2SfuoRgA\=\= +FinSetConfig.ttip.Tablength.fr.text.changed=20110317061957 +FinSetConfig.ttip.Tablength.fr.text.md5=uPFwX1E4bYS/4RL73C9WAg\=\= +FinSetConfig.ttip.Tabposition..text.changed=20110317061957 +FinSetConfig.ttip.Tabposition..text.md5=iXxqTAKd13w1tJTsmSb5/g\=\= +FinSetConfig.ttip.Tabposition.es.text.changed=20110317062041 +FinSetConfig.ttip.Tabposition.es.text.md5=JXPV7k1ZZqWg/EFGSvzw/Q\=\= +FinSetConfig.ttip.Tabposition.fr.text.changed=20110317061957 +FinSetConfig.ttip.Tabposition.fr.text.md5=SxGQo+CI/ATEpo6l6R1gIw\=\= +FlightDataType.TYPE_ACCELERATION_TOTAL..text.changed=20110317061957 +FlightDataType.TYPE_ACCELERATION_TOTAL..text.md5=aI4Gdn4aVusBIwJmMRgJVQ\=\= +FlightDataType.TYPE_ACCELERATION_TOTAL.es.text.changed=20110317062041 +FlightDataType.TYPE_ACCELERATION_TOTAL.es.text.md5=aI4Gdn4aVusBIwJmMRgJVQ\=\= +FlightDataType.TYPE_ACCELERATION_TOTAL.fr.text.changed=20110317061957 +FlightDataType.TYPE_ACCELERATION_TOTAL.fr.text.md5=gQIaKRF8hmt17HIkyH8ctQ\=\= +FlightDataType.TYPE_ACCELERATION_XY..text.changed=20110317061957 +FlightDataType.TYPE_ACCELERATION_XY..text.md5=biS/Eehqkw6nJXcimJ6cBQ\=\= +FlightDataType.TYPE_ACCELERATION_XY.es.text.changed=20110317062041 +FlightDataType.TYPE_ACCELERATION_XY.es.text.md5=biS/Eehqkw6nJXcimJ6cBQ\=\= +FlightDataType.TYPE_ACCELERATION_XY.fr.text.changed=20110317061957 +FlightDataType.TYPE_ACCELERATION_XY.fr.text.md5=zkA1XQYTasUxXMBTeTYjjA\=\= +FlightDataType.TYPE_ACCELERATION_Z..text.changed=20110317061957 +FlightDataType.TYPE_ACCELERATION_Z..text.md5=jjYMGHmIbB1468+hzUCBHQ\=\= +FlightDataType.TYPE_ACCELERATION_Z.es.text.changed=20110317062041 +FlightDataType.TYPE_ACCELERATION_Z.es.text.md5=jjYMGHmIbB1468+hzUCBHQ\=\= +FlightDataType.TYPE_ACCELERATION_Z.fr.text.changed=20110317061957 +FlightDataType.TYPE_ACCELERATION_Z.fr.text.md5=20ksuvit7+v7UyC0YlAr5Q\=\= +FlightDataType.TYPE_AIR_PRESSURE..text.changed=20110317061957 +FlightDataType.TYPE_AIR_PRESSURE..text.md5=LLBL/yNyRHrOcLnSz66wZA\=\= +FlightDataType.TYPE_AIR_PRESSURE.es.text.changed=20110317062041 +FlightDataType.TYPE_AIR_PRESSURE.es.text.md5=LLBL/yNyRHrOcLnSz66wZA\=\= +FlightDataType.TYPE_AIR_PRESSURE.fr.text.changed=20110317061957 +FlightDataType.TYPE_AIR_PRESSURE.fr.text.md5=VPfgYXCmznRkTKztsUlyVg\=\= +FlightDataType.TYPE_AIR_TEMPERATURE..text.changed=20110317061957 +FlightDataType.TYPE_AIR_TEMPERATURE..text.md5=fAqXJHMKzTCGD7ArlmagSQ\=\= +FlightDataType.TYPE_AIR_TEMPERATURE.es.text.changed=20110317062041 +FlightDataType.TYPE_AIR_TEMPERATURE.es.text.md5=fAqXJHMKzTCGD7ArlmagSQ\=\= +FlightDataType.TYPE_AIR_TEMPERATURE.fr.text.changed=20110317061957 +FlightDataType.TYPE_AIR_TEMPERATURE.fr.text.md5=ID3R4oNiwKCFrgjX9dEmBg\=\= +FlightDataType.TYPE_ALTITUDE..text.changed=20110317061957 +FlightDataType.TYPE_ALTITUDE..text.md5=YTo9T6e44lONHlWcvVcpAg\=\= +FlightDataType.TYPE_ALTITUDE.es.text.changed=20110317062041 +FlightDataType.TYPE_ALTITUDE.es.text.md5=YTo9T6e44lONHlWcvVcpAg\=\= +FlightDataType.TYPE_ALTITUDE.fr.text.changed=20110317061957 +FlightDataType.TYPE_ALTITUDE.fr.text.md5=YTo9T6e44lONHlWcvVcpAg\=\= +FlightDataType.TYPE_AOA..text.changed=20110317061957 +FlightDataType.TYPE_AOA..text.md5=OV1rY9/k3n0FlZlbjtIN3A\=\= +FlightDataType.TYPE_AOA.es.text.changed=20110317062041 +FlightDataType.TYPE_AOA.es.text.md5=OV1rY9/k3n0FlZlbjtIN3A\=\= +FlightDataType.TYPE_AOA.fr.text.changed=20110317061957 +FlightDataType.TYPE_AOA.fr.text.md5=YsBzNr+f7AryFV4eiIg2EQ\=\= +FlightDataType.TYPE_AXIAL_DRAG_COEFF..text.changed=20110317061957 +FlightDataType.TYPE_AXIAL_DRAG_COEFF..text.md5=DRWU5lpwxCuzX+8EmHL49A\=\= +FlightDataType.TYPE_AXIAL_DRAG_COEFF.es.text.changed=20110317062041 +FlightDataType.TYPE_AXIAL_DRAG_COEFF.es.text.md5=DRWU5lpwxCuzX+8EmHL49A\=\= +FlightDataType.TYPE_AXIAL_DRAG_COEFF.fr.text.changed=20110317061957 +FlightDataType.TYPE_AXIAL_DRAG_COEFF.fr.text.md5=upEuskOHsGccfbDyEoKR/A\=\= +FlightDataType.TYPE_BASE_DRAG_COEFF..text.changed=20110317061957 +FlightDataType.TYPE_BASE_DRAG_COEFF..text.md5=tPuFME/K60h6e9lvYPlXNQ\=\= +FlightDataType.TYPE_BASE_DRAG_COEFF.es.text.changed=20110317062041 +FlightDataType.TYPE_BASE_DRAG_COEFF.es.text.md5=tPuFME/K60h6e9lvYPlXNQ\=\= +FlightDataType.TYPE_BASE_DRAG_COEFF.fr.text.changed=20110317061957 +FlightDataType.TYPE_BASE_DRAG_COEFF.fr.text.md5=tPuFME/K60h6e9lvYPlXNQ\=\= +FlightDataType.TYPE_CG_LOCATION..text.changed=20110317061957 +FlightDataType.TYPE_CG_LOCATION..text.md5=KIZZAEYB4kneRUg0OXIXhw\=\= +FlightDataType.TYPE_CG_LOCATION.es.text.changed=20110317062041 +FlightDataType.TYPE_CG_LOCATION.es.text.md5=KIZZAEYB4kneRUg0OXIXhw\=\= +FlightDataType.TYPE_CG_LOCATION.fr.text.changed=20110317061957 +FlightDataType.TYPE_CG_LOCATION.fr.text.md5=K9GfP6It+F66de9s70AzRA\=\= +FlightDataType.TYPE_COMPUTATION_TIME..text.changed=20110317061957 +FlightDataType.TYPE_COMPUTATION_TIME..text.md5=3s8XtCxVUy+KOK8lGd1PgA\=\= +FlightDataType.TYPE_COMPUTATION_TIME.es.text.changed=20110317062041 +FlightDataType.TYPE_COMPUTATION_TIME.es.text.md5=3s8XtCxVUy+KOK8lGd1PgA\=\= +FlightDataType.TYPE_COMPUTATION_TIME.fr.text.changed=20110317061957 +FlightDataType.TYPE_COMPUTATION_TIME.fr.text.md5=olC1oYZbGR8LqA4QDRehjg\=\= +FlightDataType.TYPE_CP_LOCATION..text.changed=20110317061957 +FlightDataType.TYPE_CP_LOCATION..text.md5=om34/v0uC+TEbdNBQISjlg\=\= +FlightDataType.TYPE_CP_LOCATION.es.text.changed=20110317062041 +FlightDataType.TYPE_CP_LOCATION.es.text.md5=om34/v0uC+TEbdNBQISjlg\=\= +FlightDataType.TYPE_CP_LOCATION.fr.text.changed=20110317061957 +FlightDataType.TYPE_CP_LOCATION.fr.text.md5=8x+ItW93iIkQa8yicVps0A\=\= +FlightDataType.TYPE_DRAG_COEFF..text.changed=20110317061957 +FlightDataType.TYPE_DRAG_COEFF..text.md5=c3ptHhgq6HRh9048LW8PeQ\=\= +FlightDataType.TYPE_DRAG_COEFF.es.text.changed=20110317062041 +FlightDataType.TYPE_DRAG_COEFF.es.text.md5=c3ptHhgq6HRh9048LW8PeQ\=\= +FlightDataType.TYPE_DRAG_COEFF.fr.text.changed=20110317061957 +FlightDataType.TYPE_DRAG_COEFF.fr.text.md5=hEsCts6k/iOqy+XEJNlgQw\=\= +FlightDataType.TYPE_DRAG_FORCE..text.changed=20110317061957 +FlightDataType.TYPE_DRAG_FORCE..text.md5=l27oAhN3ARImPFeuNXIU3g\=\= +FlightDataType.TYPE_DRAG_FORCE.es.text.changed=20110317062041 +FlightDataType.TYPE_DRAG_FORCE.es.text.md5=l27oAhN3ARImPFeuNXIU3g\=\= +FlightDataType.TYPE_DRAG_FORCE.fr.text.changed=20110317061957 +FlightDataType.TYPE_DRAG_FORCE.fr.text.md5=HWIza12i1MaZ01k5ObxwGA\=\= +FlightDataType.TYPE_FRICTION_DRAG_COEFF..text.changed=20110317061957 +FlightDataType.TYPE_FRICTION_DRAG_COEFF..text.md5=uMMtNYLT2PLNBCBblPbjkg\=\= +FlightDataType.TYPE_FRICTION_DRAG_COEFF.es.text.changed=20110317062041 +FlightDataType.TYPE_FRICTION_DRAG_COEFF.es.text.md5=uMMtNYLT2PLNBCBblPbjkg\=\= +FlightDataType.TYPE_FRICTION_DRAG_COEFF.fr.text.changed=20110317061957 +FlightDataType.TYPE_FRICTION_DRAG_COEFF.fr.text.md5=WtcfyXxGDkqYNoVvEikzFA\=\= +FlightDataType.TYPE_LONGITUDINAL_INERTIA..text.changed=20110317061957 +FlightDataType.TYPE_LONGITUDINAL_INERTIA..text.md5=l3pnkJ+QLNyIOKpjgGwVSQ\=\= +FlightDataType.TYPE_LONGITUDINAL_INERTIA.es.text.changed=20110317062041 +FlightDataType.TYPE_LONGITUDINAL_INERTIA.es.text.md5=l3pnkJ+QLNyIOKpjgGwVSQ\=\= +FlightDataType.TYPE_LONGITUDINAL_INERTIA.fr.text.changed=20110317061957 +FlightDataType.TYPE_LONGITUDINAL_INERTIA.fr.text.md5=fgDG/g50LeFYVp1Hwvkvcg\=\= +FlightDataType.TYPE_MACH_NUMBER..text.changed=20110317061957 +FlightDataType.TYPE_MACH_NUMBER..text.md5=ciJ62pBhhq8QB+vuS9HeHg\=\= +FlightDataType.TYPE_MACH_NUMBER.es.text.changed=20110317062041 +FlightDataType.TYPE_MACH_NUMBER.es.text.md5=ciJ62pBhhq8QB+vuS9HeHg\=\= +FlightDataType.TYPE_MACH_NUMBER.fr.text.changed=20110317061957 +FlightDataType.TYPE_MACH_NUMBER.fr.text.md5=ciJ62pBhhq8QB+vuS9HeHg\=\= +FlightDataType.TYPE_MASS..text.changed=20110317061957 +FlightDataType.TYPE_MASS..text.md5=/yhk1vZS7grCVIFPGuT0qA\=\= +FlightDataType.TYPE_MASS.es.text.changed=20110317062041 +FlightDataType.TYPE_MASS.es.text.md5=/yhk1vZS7grCVIFPGuT0qA\=\= +FlightDataType.TYPE_MASS.fr.text.changed=20110317061957 +FlightDataType.TYPE_MASS.fr.text.md5=j5tnyROd4YPhARw9oEf1ow\=\= +FlightDataType.TYPE_NORMAL_FORCE_COEFF..text.changed=20110317061957 +FlightDataType.TYPE_NORMAL_FORCE_COEFF..text.md5=HZwDcFKIcxTpFspcSYlnJA\=\= +FlightDataType.TYPE_NORMAL_FORCE_COEFF.es.text.changed=20110317062041 +FlightDataType.TYPE_NORMAL_FORCE_COEFF.es.text.md5=HZwDcFKIcxTpFspcSYlnJA\=\= +FlightDataType.TYPE_NORMAL_FORCE_COEFF.fr.text.changed=20110317061957 +FlightDataType.TYPE_NORMAL_FORCE_COEFF.fr.text.md5=HZwDcFKIcxTpFspcSYlnJA\=\= +FlightDataType.TYPE_ORIENTATION_PHI..text.changed=20110317061957 +FlightDataType.TYPE_ORIENTATION_PHI..text.md5=dg/CXQy7FupwJvJeuGWLLg\=\= +FlightDataType.TYPE_ORIENTATION_PHI.es.text.changed=20110317062041 +FlightDataType.TYPE_ORIENTATION_PHI.es.text.md5=dg/CXQy7FupwJvJeuGWLLg\=\= +FlightDataType.TYPE_ORIENTATION_PHI.fr.text.changed=20110317061957 +FlightDataType.TYPE_ORIENTATION_PHI.fr.text.md5=unylIsGeDxEy3vrig2oInw\=\= +FlightDataType.TYPE_ORIENTATION_THETA..text.changed=20110317061957 +FlightDataType.TYPE_ORIENTATION_THETA..text.md5=1OsWcRegqmCyCkKI0IEB5g\=\= +FlightDataType.TYPE_ORIENTATION_THETA.es.text.changed=20110317062041 +FlightDataType.TYPE_ORIENTATION_THETA.es.text.md5=1OsWcRegqmCyCkKI0IEB5g\=\= +FlightDataType.TYPE_ORIENTATION_THETA.fr.text.changed=20110317061957 +FlightDataType.TYPE_ORIENTATION_THETA.fr.text.md5=jmm4PQbUWymFSIJDim6Ibg\=\= +FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF..text.changed=20110317061957 +FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF..text.md5=RSL86Pjp1PVjbVzxwxzZZw\=\= +FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF.es.text.changed=20110317062041 +FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF.es.text.md5=RSL86Pjp1PVjbVzxwxzZZw\=\= +FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF.fr.text.changed=20110317061957 +FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF.fr.text.md5=RSL86Pjp1PVjbVzxwxzZZw\=\= +FlightDataType.TYPE_PITCH_MOMENT_COEFF..text.changed=20110317061957 +FlightDataType.TYPE_PITCH_MOMENT_COEFF..text.md5=EmZc8hrwc/nCatEby79xfQ\=\= +FlightDataType.TYPE_PITCH_MOMENT_COEFF.es.text.changed=20110317062041 +FlightDataType.TYPE_PITCH_MOMENT_COEFF.es.text.md5=EmZc8hrwc/nCatEby79xfQ\=\= +FlightDataType.TYPE_PITCH_MOMENT_COEFF.fr.text.changed=20110317061957 +FlightDataType.TYPE_PITCH_MOMENT_COEFF.fr.text.md5=EmZc8hrwc/nCatEby79xfQ\=\= +FlightDataType.TYPE_PITCH_RATE..text.changed=20110317061957 +FlightDataType.TYPE_PITCH_RATE..text.md5=ITpR0e+LPigp4++UbpLPKA\=\= +FlightDataType.TYPE_PITCH_RATE.es.text.changed=20110317062041 +FlightDataType.TYPE_PITCH_RATE.es.text.md5=ITpR0e+LPigp4++UbpLPKA\=\= +FlightDataType.TYPE_PITCH_RATE.fr.text.changed=20110317061957 +FlightDataType.TYPE_PITCH_RATE.fr.text.md5=6nE1sX7/7pCNoDBuRmmsXg\=\= +FlightDataType.TYPE_POSITION_DIRECTION..text.changed=20110317061957 +FlightDataType.TYPE_POSITION_DIRECTION..text.md5=eNAqvnqM+eCse+UDg6TN6A\=\= +FlightDataType.TYPE_POSITION_DIRECTION.es.text.changed=20110317062041 +FlightDataType.TYPE_POSITION_DIRECTION.es.text.md5=eNAqvnqM+eCse+UDg6TN6A\=\= +FlightDataType.TYPE_POSITION_DIRECTION.fr.text.changed=20110317061957 +FlightDataType.TYPE_POSITION_DIRECTION.fr.text.md5=Zh10Nd2K3kMf0wxBRLcwaQ\=\= +FlightDataType.TYPE_POSITION_X..text.changed=20110317061957 +FlightDataType.TYPE_POSITION_X..text.md5=QcILtOLkTF9RDUCXHWpqDA\=\= +FlightDataType.TYPE_POSITION_X.es.text.changed=20110317062041 +FlightDataType.TYPE_POSITION_X.es.text.md5=QcILtOLkTF9RDUCXHWpqDA\=\= +FlightDataType.TYPE_POSITION_X.fr.text.changed=20110317061957 +FlightDataType.TYPE_POSITION_X.fr.text.md5=q2aZ8F+SyZN3r190lGzQ7w\=\= +FlightDataType.TYPE_POSITION_XY..text.changed=20110317061957 +FlightDataType.TYPE_POSITION_XY..text.md5=/Fum2BXS57dBqVfCk5Rk0A\=\= +FlightDataType.TYPE_POSITION_XY.es.text.changed=20110317062041 +FlightDataType.TYPE_POSITION_XY.es.text.md5=/Fum2BXS57dBqVfCk5Rk0A\=\= +FlightDataType.TYPE_POSITION_XY.fr.text.changed=20110317061957 +FlightDataType.TYPE_POSITION_XY.fr.text.md5=4OaeTSouyRleyZaoP14ccA\=\= +FlightDataType.TYPE_POSITION_Y..text.changed=20110317061957 +FlightDataType.TYPE_POSITION_Y..text.md5=g/KOjQX2uHXUlmK7jzpH2w\=\= +FlightDataType.TYPE_POSITION_Y.es.text.changed=20110317062041 +FlightDataType.TYPE_POSITION_Y.es.text.md5=g/KOjQX2uHXUlmK7jzpH2w\=\= +FlightDataType.TYPE_POSITION_Y.fr.text.changed=20110317061957 +FlightDataType.TYPE_POSITION_Y.fr.text.md5=AfvG+4yXxhWsPBiDP1xquw\=\= +FlightDataType.TYPE_PRESSURE_DRAG_COEFF..text.changed=20110317061957 +FlightDataType.TYPE_PRESSURE_DRAG_COEFF..text.md5=huqAarIoKH6PbOu9GMr9MA\=\= +FlightDataType.TYPE_PRESSURE_DRAG_COEFF.es.text.changed=20110317062041 +FlightDataType.TYPE_PRESSURE_DRAG_COEFF.es.text.md5=huqAarIoKH6PbOu9GMr9MA\=\= +FlightDataType.TYPE_PRESSURE_DRAG_COEFF.fr.text.changed=20110317061957 +FlightDataType.TYPE_PRESSURE_DRAG_COEFF.fr.text.md5=0HbVNF8W+3S7nlJyuwGSdQ\=\= +FlightDataType.TYPE_REFERENCE_AREA..text.changed=20110317061957 +FlightDataType.TYPE_REFERENCE_AREA..text.md5=Us7J/omM+TASY5ETM0C4Hw\=\= +FlightDataType.TYPE_REFERENCE_AREA.es.text.changed=20110317062041 +FlightDataType.TYPE_REFERENCE_AREA.es.text.md5=Us7J/omM+TASY5ETM0C4Hw\=\= +FlightDataType.TYPE_REFERENCE_AREA.fr.text.changed=20110317061957 +FlightDataType.TYPE_REFERENCE_AREA.fr.text.md5=hdIjVJv3nbXPik0yegZGcg\=\= +FlightDataType.TYPE_REFERENCE_LENGTH..text.changed=20110317061957 +FlightDataType.TYPE_REFERENCE_LENGTH..text.md5=NC5mTk0c7AfcALvIkA+3Cg\=\= +FlightDataType.TYPE_REFERENCE_LENGTH.es.text.changed=20110317062041 +FlightDataType.TYPE_REFERENCE_LENGTH.es.text.md5=NC5mTk0c7AfcALvIkA+3Cg\=\= +FlightDataType.TYPE_REFERENCE_LENGTH.fr.text.changed=20110317061957 +FlightDataType.TYPE_REFERENCE_LENGTH.fr.text.md5=hWg2+7a1EuQmR+i/La+GXQ\=\= +FlightDataType.TYPE_REYNOLDS_NUMBER..text.changed=20110317061957 +FlightDataType.TYPE_REYNOLDS_NUMBER..text.md5=2CT6R+QZMPloS36RKVbo8A\=\= +FlightDataType.TYPE_REYNOLDS_NUMBER.es.text.changed=20110317062041 +FlightDataType.TYPE_REYNOLDS_NUMBER.es.text.md5=2CT6R+QZMPloS36RKVbo8A\=\= +FlightDataType.TYPE_REYNOLDS_NUMBER.fr.text.changed=20110317061957 +FlightDataType.TYPE_REYNOLDS_NUMBER.fr.text.md5=IazOBIiD49MPxKQmke4ZrQ\=\= +FlightDataType.TYPE_ROLL_DAMPING_COEFF..text.changed=20110317061957 +FlightDataType.TYPE_ROLL_DAMPING_COEFF..text.md5=GLnb/60ST1T0xakX2GOp5w\=\= +FlightDataType.TYPE_ROLL_DAMPING_COEFF.es.text.changed=20110317062041 +FlightDataType.TYPE_ROLL_DAMPING_COEFF.es.text.md5=GLnb/60ST1T0xakX2GOp5w\=\= +FlightDataType.TYPE_ROLL_DAMPING_COEFF.fr.text.changed=20110317061957 +FlightDataType.TYPE_ROLL_DAMPING_COEFF.fr.text.md5=GLnb/60ST1T0xakX2GOp5w\=\= +FlightDataType.TYPE_ROLL_FORCING_COEFF..text.changed=20110317061957 +FlightDataType.TYPE_ROLL_FORCING_COEFF..text.md5=zqvMSZ3Z3W9FqF7YhHrCcg\=\= +FlightDataType.TYPE_ROLL_FORCING_COEFF.es.text.changed=20110317062041 +FlightDataType.TYPE_ROLL_FORCING_COEFF.es.text.md5=zqvMSZ3Z3W9FqF7YhHrCcg\=\= +FlightDataType.TYPE_ROLL_FORCING_COEFF.fr.text.changed=20110317061957 +FlightDataType.TYPE_ROLL_FORCING_COEFF.fr.text.md5=zqvMSZ3Z3W9FqF7YhHrCcg\=\= +FlightDataType.TYPE_ROLL_MOMENT_COEFF..text.changed=20110317061957 +FlightDataType.TYPE_ROLL_MOMENT_COEFF..text.md5=thkx2MkX8GPJj+VEArYreg\=\= +FlightDataType.TYPE_ROLL_MOMENT_COEFF.es.text.changed=20110317062041 +FlightDataType.TYPE_ROLL_MOMENT_COEFF.es.text.md5=thkx2MkX8GPJj+VEArYreg\=\= +FlightDataType.TYPE_ROLL_MOMENT_COEFF.fr.text.changed=20110317061957 +FlightDataType.TYPE_ROLL_MOMENT_COEFF.fr.text.md5=thkx2MkX8GPJj+VEArYreg\=\= +FlightDataType.TYPE_ROLL_RATE..text.changed=20110317061957 +FlightDataType.TYPE_ROLL_RATE..text.md5=iahdEDYVyh3BoaY+QDVqUQ\=\= +FlightDataType.TYPE_ROLL_RATE.es.text.changed=20110317062041 +FlightDataType.TYPE_ROLL_RATE.es.text.md5=iahdEDYVyh3BoaY+QDVqUQ\=\= +FlightDataType.TYPE_ROLL_RATE.fr.text.changed=20110317061957 +FlightDataType.TYPE_ROLL_RATE.fr.text.md5=S+P08kGINRYMv2fVZ8BqMQ\=\= +FlightDataType.TYPE_ROTATIONAL_INERTIA..text.changed=20110317061957 +FlightDataType.TYPE_ROTATIONAL_INERTIA..text.md5=Fot4dG5rZndopVCYxYTmoA\=\= +FlightDataType.TYPE_ROTATIONAL_INERTIA.es.text.changed=20110317062041 +FlightDataType.TYPE_ROTATIONAL_INERTIA.es.text.md5=Fot4dG5rZndopVCYxYTmoA\=\= +FlightDataType.TYPE_ROTATIONAL_INERTIA.fr.text.changed=20110317061957 +FlightDataType.TYPE_ROTATIONAL_INERTIA.fr.text.md5=YGcMCCOfmkZQz/GyVVbbQQ\=\= +FlightDataType.TYPE_SIDE_FORCE_COEFF..text.changed=20110317061957 +FlightDataType.TYPE_SIDE_FORCE_COEFF..text.md5=jq9U8JDRTfF8/yw4Zuf2TA\=\= +FlightDataType.TYPE_SIDE_FORCE_COEFF.es.text.changed=20110317062041 +FlightDataType.TYPE_SIDE_FORCE_COEFF.es.text.md5=jq9U8JDRTfF8/yw4Zuf2TA\=\= +FlightDataType.TYPE_SIDE_FORCE_COEFF.fr.text.changed=20110317061957 +FlightDataType.TYPE_SIDE_FORCE_COEFF.fr.text.md5=jq9U8JDRTfF8/yw4Zuf2TA\=\= +FlightDataType.TYPE_SPEED_OF_SOUND..text.changed=20110317061957 +FlightDataType.TYPE_SPEED_OF_SOUND..text.md5=4uTZKH+U4cQEJP65/7TXTQ\=\= +FlightDataType.TYPE_SPEED_OF_SOUND.es.text.changed=20110317062041 +FlightDataType.TYPE_SPEED_OF_SOUND.es.text.md5=4uTZKH+U4cQEJP65/7TXTQ\=\= +FlightDataType.TYPE_SPEED_OF_SOUND.fr.text.changed=20110317061957 +FlightDataType.TYPE_SPEED_OF_SOUND.fr.text.md5=OjYO6vBmu90i4/WEggxUIQ\=\= +FlightDataType.TYPE_STABILITY..text.changed=20110317061957 +FlightDataType.TYPE_STABILITY..text.md5=NhRkvj3yLGtVuudrBc7EPw\=\= +FlightDataType.TYPE_STABILITY.es.text.changed=20110317062041 +FlightDataType.TYPE_STABILITY.es.text.md5=NhRkvj3yLGtVuudrBc7EPw\=\= +FlightDataType.TYPE_STABILITY.fr.text.changed=20110317061957 +FlightDataType.TYPE_STABILITY.fr.text.md5=h6ZzVKkGkl/PUZfLQ8IVTA\=\= +FlightDataType.TYPE_THRUST_FORCE..text.changed=20110317061957 +FlightDataType.TYPE_THRUST_FORCE..text.md5=hcR/m33zJNHbJ5Tg4rioEA\=\= +FlightDataType.TYPE_THRUST_FORCE.es.text.changed=20110317062041 +FlightDataType.TYPE_THRUST_FORCE.es.text.md5=hcR/m33zJNHbJ5Tg4rioEA\=\= +FlightDataType.TYPE_THRUST_FORCE.fr.text.changed=20110317061957 +FlightDataType.TYPE_THRUST_FORCE.fr.text.md5=pfYvmVTjP0jRSat0JzP6Cg\=\= +FlightDataType.TYPE_TIME..text.changed=20110317061957 +FlightDataType.TYPE_TIME..text.md5=p21O9fP2pnK7+rKGVWPlMA\=\= +FlightDataType.TYPE_TIME.es.text.changed=20110317062041 +FlightDataType.TYPE_TIME.es.text.md5=p21O9fP2pnK7+rKGVWPlMA\=\= +FlightDataType.TYPE_TIME.fr.text.changed=20110317061957 +FlightDataType.TYPE_TIME.fr.text.md5=jowhmRXRe6C9/ZwVYhAnxA\=\= +FlightDataType.TYPE_TIME_STEP..text.changed=20110317061957 +FlightDataType.TYPE_TIME_STEP..text.md5=OE6Yka9ywzBNnoVkphTUIg\=\= +FlightDataType.TYPE_TIME_STEP.es.text.changed=20110317062041 +FlightDataType.TYPE_TIME_STEP.es.text.md5=OE6Yka9ywzBNnoVkphTUIg\=\= +FlightDataType.TYPE_TIME_STEP.fr.text.changed=20110317061957 +FlightDataType.TYPE_TIME_STEP.fr.text.md5=QsYGIuWr0uqkaksr6A4lJQ\=\= +FlightDataType.TYPE_VELOCITY_TOTAL..text.changed=20110317061957 +FlightDataType.TYPE_VELOCITY_TOTAL..text.md5=Beb+kdjtObU42W2Y6Ijatg\=\= +FlightDataType.TYPE_VELOCITY_TOTAL.es.text.changed=20110317062041 +FlightDataType.TYPE_VELOCITY_TOTAL.es.text.md5=Beb+kdjtObU42W2Y6Ijatg\=\= +FlightDataType.TYPE_VELOCITY_TOTAL.fr.text.changed=20110317061957 +FlightDataType.TYPE_VELOCITY_TOTAL.fr.text.md5=RlSTSkmYNH1RyOmRqa2XkA\=\= +FlightDataType.TYPE_VELOCITY_XY..text.changed=20110317061957 +FlightDataType.TYPE_VELOCITY_XY..text.md5=A5CnrkDFu4p+9tPfsURm1A\=\= +FlightDataType.TYPE_VELOCITY_XY.es.text.changed=20110317062041 +FlightDataType.TYPE_VELOCITY_XY.es.text.md5=A5CnrkDFu4p+9tPfsURm1A\=\= +FlightDataType.TYPE_VELOCITY_XY.fr.text.changed=20110317061957 +FlightDataType.TYPE_VELOCITY_XY.fr.text.md5=XdmOksxTY74xyRzUkWyfug\=\= +FlightDataType.TYPE_VELOCITY_Z..text.changed=20110317061957 +FlightDataType.TYPE_VELOCITY_Z..text.md5=pxJDDiP5wQUn58A6G2p2cA\=\= +FlightDataType.TYPE_VELOCITY_Z.es.text.changed=20110317062041 +FlightDataType.TYPE_VELOCITY_Z.es.text.md5=pxJDDiP5wQUn58A6G2p2cA\=\= +FlightDataType.TYPE_VELOCITY_Z.fr.text.changed=20110317061957 +FlightDataType.TYPE_VELOCITY_Z.fr.text.md5=rV6cZjjFEuB2ktd3r4ApFw\=\= +FlightDataType.TYPE_WIND_VELOCITY..text.changed=20110317061957 +FlightDataType.TYPE_WIND_VELOCITY..text.md5=hbdXpdqAzBsu7RclaSRXbg\=\= +FlightDataType.TYPE_WIND_VELOCITY.es.text.changed=20110317062041 +FlightDataType.TYPE_WIND_VELOCITY.es.text.md5=hbdXpdqAzBsu7RclaSRXbg\=\= +FlightDataType.TYPE_WIND_VELOCITY.fr.text.changed=20110317061957 +FlightDataType.TYPE_WIND_VELOCITY.fr.text.md5=FKdKaEwZqgZ4A5sQxA1nMQ\=\= +FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF..text.changed=20110317061957 +FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF..text.md5=FtGZRD4djQpT1kByObe7Iw\=\= +FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF.es.text.changed=20110317062041 +FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF.es.text.md5=FtGZRD4djQpT1kByObe7Iw\=\= +FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF.fr.text.changed=20110317061957 +FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF.fr.text.md5=FtGZRD4djQpT1kByObe7Iw\=\= +FlightDataType.TYPE_YAW_MOMENT_COEFF..text.changed=20110317061957 +FlightDataType.TYPE_YAW_MOMENT_COEFF..text.md5=YbY3qmcQryszrB3B4xRC1A\=\= +FlightDataType.TYPE_YAW_MOMENT_COEFF.es.text.changed=20110317062041 +FlightDataType.TYPE_YAW_MOMENT_COEFF.es.text.md5=YbY3qmcQryszrB3B4xRC1A\=\= +FlightDataType.TYPE_YAW_MOMENT_COEFF.fr.text.changed=20110317061957 +FlightDataType.TYPE_YAW_MOMENT_COEFF.fr.text.md5=YbY3qmcQryszrB3B4xRC1A\=\= +FlightDataType.TYPE_YAW_RATE..text.changed=20110317061957 +FlightDataType.TYPE_YAW_RATE..text.md5=G9o8ZsEKWVnoQ6Poqjgskw\=\= +FlightDataType.TYPE_YAW_RATE.es.text.changed=20110317062041 +FlightDataType.TYPE_YAW_RATE.es.text.md5=G9o8ZsEKWVnoQ6Poqjgskw\=\= +FlightDataType.TYPE_YAW_RATE.fr.text.changed=20110317061957 +FlightDataType.TYPE_YAW_RATE.fr.text.md5=p8FuCWU/W4+pDfF/kznXww\=\= +FlightEvent.Type.ALTITUDE..text.changed=20110317061957 +FlightEvent.Type.ALTITUDE..text.md5=WH0Nj1zwwHqP4SYK/oJk+A\=\= +FlightEvent.Type.ALTITUDE.es.text.changed=20110317062041 +FlightEvent.Type.ALTITUDE.es.text.md5=WH0Nj1zwwHqP4SYK/oJk+A\=\= +FlightEvent.Type.ALTITUDE.fr.text.changed=20110317061957 +FlightEvent.Type.ALTITUDE.fr.text.md5=oWCFvbeU2tZvIa70HOfTdA\=\= +FlightEvent.Type.APOGEE..text.changed=20110317061957 +FlightEvent.Type.APOGEE..text.md5=QL6gVpnPUZKBPZU18+Unyg\=\= +FlightEvent.Type.APOGEE.es.text.changed=20110317062041 +FlightEvent.Type.APOGEE.es.text.md5=QL6gVpnPUZKBPZU18+Unyg\=\= +FlightEvent.Type.APOGEE.fr.text.changed=20110317061957 +FlightEvent.Type.APOGEE.fr.text.md5=+AS6Lmac9yoej6GMJZ2KZA\=\= +FlightEvent.Type.BURNOUT..text.changed=20110317061957 +FlightEvent.Type.BURNOUT..text.md5=MLfUAj20WEoGaBZl8PK+Hw\=\= +FlightEvent.Type.BURNOUT.es.text.changed=20110317062041 +FlightEvent.Type.BURNOUT.es.text.md5=MLfUAj20WEoGaBZl8PK+Hw\=\= +FlightEvent.Type.BURNOUT.fr.text.changed=20110317061957 +FlightEvent.Type.BURNOUT.fr.text.md5=Q4u6/TMzx/mPuLTmiPQNLw\=\= +FlightEvent.Type.EJECTION_CHARGE..text.changed=20110317061957 +FlightEvent.Type.EJECTION_CHARGE..text.md5=EST5kuTq8JWsNsesgbCnxQ\=\= +FlightEvent.Type.EJECTION_CHARGE.es.text.changed=20110317062041 +FlightEvent.Type.EJECTION_CHARGE.es.text.md5=EST5kuTq8JWsNsesgbCnxQ\=\= +FlightEvent.Type.EJECTION_CHARGE.fr.text.changed=20110317061957 +FlightEvent.Type.EJECTION_CHARGE.fr.text.md5=1jLyz+Nio3ouXgZWiG1E7w\=\= +FlightEvent.Type.GROUND_HIT..text.changed=20110317061957 +FlightEvent.Type.GROUND_HIT..text.md5=1RPTzdzf2DRNPzbr1CCFMQ\=\= +FlightEvent.Type.GROUND_HIT.es.text.changed=20110317062041 +FlightEvent.Type.GROUND_HIT.es.text.md5=1RPTzdzf2DRNPzbr1CCFMQ\=\= +FlightEvent.Type.GROUND_HIT.fr.text.changed=20110317061957 +FlightEvent.Type.GROUND_HIT.fr.text.md5=SdifszaZmS3l7fqeBJC6pA\=\= +FlightEvent.Type.IGNITION..text.changed=20110317061957 +FlightEvent.Type.IGNITION..text.md5=X6ovqvj75OjtZcC8yTBIwQ\=\= +FlightEvent.Type.IGNITION.es.text.changed=20110317062041 +FlightEvent.Type.IGNITION.es.text.md5=X6ovqvj75OjtZcC8yTBIwQ\=\= +FlightEvent.Type.IGNITION.fr.text.changed=20110317061957 +FlightEvent.Type.IGNITION.fr.text.md5=BdDLx1PDPSs4qduNIjUBNA\=\= +FlightEvent.Type.LAUNCH..text.changed=20110317061957 +FlightEvent.Type.LAUNCH..text.md5=lQbw/Q9/GweWCxW0yeaNGg\=\= +FlightEvent.Type.LAUNCH.es.text.changed=20110317062041 +FlightEvent.Type.LAUNCH.es.text.md5=lQbw/Q9/GweWCxW0yeaNGg\=\= +FlightEvent.Type.LAUNCH.fr.text.changed=20110317061957 +FlightEvent.Type.LAUNCH.fr.text.md5=rY9s9XYfmob7ItSdUunCkw\=\= +FlightEvent.Type.LAUNCHROD..text.changed=20110317061957 +FlightEvent.Type.LAUNCHROD..text.md5=P7a62JMyoz3O3oqsabC41w\=\= +FlightEvent.Type.LAUNCHROD.es.text.changed=20110317062041 +FlightEvent.Type.LAUNCHROD.es.text.md5=P7a62JMyoz3O3oqsabC41w\=\= +FlightEvent.Type.LAUNCHROD.fr.text.changed=20110317061957 +FlightEvent.Type.LAUNCHROD.fr.text.md5=EgQuDcsLSpesXN3x+UDCUA\=\= +FlightEvent.Type.LIFTOFF..text.changed=20110317061957 +FlightEvent.Type.LIFTOFF..text.md5=di55BhqJnKjTEmBln5q7yA\=\= +FlightEvent.Type.LIFTOFF.es.text.changed=20110317062041 +FlightEvent.Type.LIFTOFF.es.text.md5=di55BhqJnKjTEmBln5q7yA\=\= +FlightEvent.Type.LIFTOFF.fr.text.changed=20110317061957 +FlightEvent.Type.LIFTOFF.fr.text.md5=3xrWDBpyxudNJklyqVBwoA\=\= +FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT..text.changed=20110317061957 +FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT..text.md5=vtUEq0kAqLv49fzX5EfceQ\=\= +FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT.es.text.changed=20110317062041 +FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT.es.text.md5=vtUEq0kAqLv49fzX5EfceQ\=\= +FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT.fr.text.changed=20110317061957 +FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT.fr.text.md5=ZwJeq6sIUhvoo9IyZ2TlEA\=\= +FlightEvent.Type.SIMULATION_END..text.changed=20110317061957 +FlightEvent.Type.SIMULATION_END..text.md5=Vgfru6MYquJ3+juegushVg\=\= +FlightEvent.Type.SIMULATION_END.es.text.changed=20110317062041 +FlightEvent.Type.SIMULATION_END.es.text.md5=Vgfru6MYquJ3+juegushVg\=\= +FlightEvent.Type.SIMULATION_END.fr.text.changed=20110317061957 +FlightEvent.Type.SIMULATION_END.fr.text.md5=xy5mF048ibLmOAAcYwJKCQ\=\= +FlightEvent.Type.STAGE_SEPARATION..text.changed=20110317061957 +FlightEvent.Type.STAGE_SEPARATION..text.md5=zaYJWkW0amOdmIvrfHLXUA\=\= +FlightEvent.Type.STAGE_SEPARATION.es.text.changed=20110317062041 +FlightEvent.Type.STAGE_SEPARATION.es.text.md5=zaYJWkW0amOdmIvrfHLXUA\=\= +FlightEvent.Type.STAGE_SEPARATION.fr.text.changed=20110317061957 +FlightEvent.Type.STAGE_SEPARATION.fr.text.md5=TWT9UDkb76si755WWGNJOA\=\= +FreeformFinSet.FreeformFinSet..text.changed=20110317061957 +FreeformFinSet.FreeformFinSet..text.md5=XdUaFd+fxdobxWZKMbxlSA\=\= +FreeformFinSet.FreeformFinSet.es.text.changed=20110317062041 +FreeformFinSet.FreeformFinSet.es.text.md5=XdUaFd+fxdobxWZKMbxlSA\=\= +FreeformFinSet.FreeformFinSet.fr.text.changed=20110317061957 +FreeformFinSet.FreeformFinSet.fr.text.md5=sBWJrKTbTEIJ21JzU8+3uQ\=\= +FreeformFinSetCfg.lbl.Fincant..text.changed=20110317061957 +FreeformFinSetCfg.lbl.Fincant..text.md5=gJTol4zWIT3NlA2Qj+mRBw\=\= +FreeformFinSetCfg.lbl.Fincant.es.text.changed=20110317062041 +FreeformFinSetCfg.lbl.Fincant.es.text.md5=9sx5XgiKIqrnc1XoSZcXmQ\=\= +FreeformFinSetCfg.lbl.Fincant.fr.text.changed=20110317061957 +FreeformFinSetCfg.lbl.Fincant.fr.text.md5=gbEuh/Hyt0eAkJbVyIpt1A\=\= +FreeformFinSetCfg.lbl.FincrossSection..text.changed=20110317061957 +FreeformFinSetCfg.lbl.FincrossSection..text.md5=d139yIi0Bcw4ePuCYxjEMQ\=\= +FreeformFinSetCfg.lbl.FincrossSection.es.text.changed=20110317062041 +FreeformFinSetCfg.lbl.FincrossSection.es.text.md5=/nIRxIgyTgr49tkwIwEwKw\=\= +FreeformFinSetCfg.lbl.FincrossSection.fr.text.changed=20110317061957 +FreeformFinSetCfg.lbl.FincrossSection.fr.text.md5=BzmEcGR9qVjmHb5eL2X9hA\=\= +FreeformFinSetCfg.lbl.Finrotation..text.changed=20110317061957 +FreeformFinSetCfg.lbl.Finrotation..text.md5=asDZsCDOZlcfbnpr9h4Zeg\=\= +FreeformFinSetCfg.lbl.Finrotation.es.text.changed=20110317062041 +FreeformFinSetCfg.lbl.Finrotation.es.text.md5=jAmkTkne4wEX6uDw5EITrA\=\= +FreeformFinSetCfg.lbl.Finrotation.fr.text.changed=20110317061957 +FreeformFinSetCfg.lbl.Finrotation.fr.text.md5=32oqxEjti/TzL2KnS5dKjQ\=\= +FreeformFinSetCfg.lbl.Numberoffins..text.changed=20110317061957 +FreeformFinSetCfg.lbl.Numberoffins..text.md5=+3QcyIkz9lnt+0f8dlP/ew\=\= +FreeformFinSetCfg.lbl.Numberoffins.es.text.changed=20110317062041 +FreeformFinSetCfg.lbl.Numberoffins.es.text.md5=HGKq4/3A+oOKV7b9MdHIKQ\=\= +FreeformFinSetCfg.lbl.Numberoffins.fr.text.changed=20110317061957 +FreeformFinSetCfg.lbl.Numberoffins.fr.text.md5=6KbxfYrq87kta+KweGSOAg\=\= +FreeformFinSetCfg.lbl.Posrelativeto..text.changed=20110317061957 +FreeformFinSetCfg.lbl.Posrelativeto..text.md5=uld2YfO/C3gWkbRzlw+EMA\=\= +FreeformFinSetCfg.lbl.Posrelativeto.es.text.changed=20110317062041 +FreeformFinSetCfg.lbl.Posrelativeto.es.text.md5=6hQM5zYAcKv2lio49/hQqQ\=\= +FreeformFinSetCfg.lbl.Posrelativeto.fr.text.changed=20110317061957 +FreeformFinSetCfg.lbl.Posrelativeto.fr.text.md5=1w5yIy+KSayEeAvmlRZAZA\=\= +FreeformFinSetCfg.lbl.Thickness..text.changed=20110317061957 +FreeformFinSetCfg.lbl.Thickness..text.md5=De6os9fTRKpjp0AF4eicGg\=\= +FreeformFinSetCfg.lbl.Thickness.es.text.changed=20110317062041 +FreeformFinSetCfg.lbl.Thickness.es.text.md5=xJjWfhrb7lNPRDbDLxB+9A\=\= +FreeformFinSetCfg.lbl.Thickness.fr.text.changed=20110317061957 +FreeformFinSetCfg.lbl.Thickness.fr.text.md5=wQJDV7ZNGPpFMM+AiyCNxg\=\= +FreeformFinSetCfg.lbl.plus..text.changed=20110317061957 +FreeformFinSetCfg.lbl.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +FreeformFinSetCfg.lbl.plus.es.text.changed=20110317062041 +FreeformFinSetCfg.lbl.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +FreeformFinSetCfg.lbl.plus.fr.text.changed=20110317061957 +FreeformFinSetCfg.lbl.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +FreeformFinSetCfg.lbl.ttip.Fincant..text.changed=20110317061957 +FreeformFinSetCfg.lbl.ttip.Fincant..text.md5=kjjf+CiniAfww5LqDIYfBg\=\= +FreeformFinSetCfg.lbl.ttip.Fincant.es.text.changed=20110317062041 +FreeformFinSetCfg.lbl.ttip.Fincant.es.text.md5=DOJYGJLZgzSX1PSKEJrTSQ\=\= +FreeformFinSetCfg.lbl.ttip.Fincant.fr.text.changed=20110317061957 +FreeformFinSetCfg.lbl.ttip.Fincant.fr.text.md5=Nawn6M4s6SJ7fbNyRweQYg\=\= +FreeformFinSetCfg.tab.General..text.changed=20110317061957 +FreeformFinSetCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +FreeformFinSetCfg.tab.General.es.text.changed=20110317062041 +FreeformFinSetCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +FreeformFinSetCfg.tab.General.fr.text.changed=20110317061957 +FreeformFinSetCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\= +FreeformFinSetCfg.tab.Shape..text.changed=20110317061957 +FreeformFinSetCfg.tab.Shape..text.md5=iAwSc7J9J8/IIATDpLIFyQ\=\= +FreeformFinSetCfg.tab.Shape.es.text.changed=20110317062041 +FreeformFinSetCfg.tab.Shape.es.text.md5=kMcVpcBb35XsckVC3XEPww\=\= +FreeformFinSetCfg.tab.Shape.fr.text.changed=20110317061957 +FreeformFinSetCfg.tab.Shape.fr.text.md5=l+oBS+ZhaCaQKoOlyApR8w\=\= +FreeformFinSetCfg.tab.ttip.Finshape..text.changed=20110317061957 +FreeformFinSetCfg.tab.ttip.Finshape..text.md5=9R7PBkQKQILJ6sxge/sKeQ\=\= +FreeformFinSetCfg.tab.ttip.Finshape.es.text.changed=20110317062041 +FreeformFinSetCfg.tab.ttip.Finshape.es.text.md5=cS/kwa/KomUsL2/su+7D8Q\=\= +FreeformFinSetCfg.tab.ttip.Finshape.fr.text.changed=20110317061957 +FreeformFinSetCfg.tab.ttip.Finshape.fr.text.md5=Od5MKB1Apo6g25Qy+dokww\=\= +FreeformFinSetCfg.tab.ttip.General..text.changed=20110317061957 +FreeformFinSetCfg.tab.ttip.General..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\= +FreeformFinSetCfg.tab.ttip.General.es.text.changed=20110317062041 +FreeformFinSetCfg.tab.ttip.General.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\= +FreeformFinSetCfg.tab.ttip.General.fr.text.changed=20110317061957 +FreeformFinSetCfg.tab.ttip.General.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\= +InnerTube.InnerTube..text.changed=20110317061957 +InnerTube.InnerTube..text.md5=lcuJhF96kZZwQwOoQuEVsw\=\= +InnerTube.InnerTube.es.text.changed=20110317062041 +InnerTube.InnerTube.es.text.md5=lcuJhF96kZZwQwOoQuEVsw\=\= +InnerTube.InnerTube.fr.text.changed=20110317061957 +InnerTube.InnerTube.fr.text.md5=Qi8ZJArDrWFHkJPWtc56Nw\=\= +InnerTubeCfg.but.Resetsettings..text.changed=20110317061957 +InnerTubeCfg.but.Resetsettings..text.md5=2Vk0a/eEuc2PR/2QyAPrsg\=\= +InnerTubeCfg.but.Resetsettings.es.text.changed=20110317062041 +InnerTubeCfg.but.Resetsettings.es.text.md5=q20FQE8hu79sf0I/gbTHVQ\=\= +InnerTubeCfg.but.Resetsettings.fr.text.changed=20110317061957 +InnerTubeCfg.but.Resetsettings.fr.text.md5=w9dFqXPF9pe2ypfjeL/4Yw\=\= +InnerTubeCfg.but.Splitcluster..text.changed=20110317061957 +InnerTubeCfg.but.Splitcluster..text.md5=cCyIkneAAIQGQMsrxMIhTg\=\= +InnerTubeCfg.but.Splitcluster.es.text.changed=20110317062041 +InnerTubeCfg.but.Splitcluster.es.text.md5=cCyIkneAAIQGQMsrxMIhTg\=\= +InnerTubeCfg.but.Splitcluster.fr.text.changed=20110317061957 +InnerTubeCfg.but.Splitcluster.fr.text.md5=PiqegQ+dMN8X6VOBVRxTSQ\=\= +InnerTubeCfg.but.ttip.Resetsettings..text.changed=20110317061957 +InnerTubeCfg.but.ttip.Resetsettings..text.md5=h2AX0TQh9bsTHrP3HQ7UHg\=\= +InnerTubeCfg.but.ttip.Resetsettings.es.text.changed=20110317062041 +InnerTubeCfg.but.ttip.Resetsettings.es.text.md5=AB41oc5vPgpgHJu/OgFoFA\=\= +InnerTubeCfg.but.ttip.Resetsettings.fr.text.changed=20110317061957 +InnerTubeCfg.but.ttip.Resetsettings.fr.text.md5=fbKV8IV33cXnkWCuoNxoJw\=\= +InnerTubeCfg.lbl.Rotangle..text.changed=20110317061957 +InnerTubeCfg.lbl.Rotangle..text.md5=v7dn2BnGC1FS7KId/ykJJQ\=\= +InnerTubeCfg.lbl.Rotangle.es.text.changed=20110317062041 +InnerTubeCfg.lbl.Rotangle.es.text.md5=4NqgbDHefesAPErfakm3qQ\=\= +InnerTubeCfg.lbl.Rotangle.fr.text.changed=20110317061957 +InnerTubeCfg.lbl.Rotangle.fr.text.md5=p23hZb84PjJmI5NigfYdgQ\=\= +InnerTubeCfg.lbl.Rotation..text.changed=20110317061957 +InnerTubeCfg.lbl.Rotation..text.md5=3c8yyFAJWJ8PKri4QWkygw\=\= +InnerTubeCfg.lbl.Rotation.es.text.changed=20110317062041 +InnerTubeCfg.lbl.Rotation.es.text.md5=DI60aemtFRUMr07YuYGOvA\=\= +InnerTubeCfg.lbl.Rotation.fr.text.changed=20110317061957 +InnerTubeCfg.lbl.Rotation.fr.text.md5=3c8yyFAJWJ8PKri4QWkygw\=\= +InnerTubeCfg.lbl.Selectclustercfg..text.changed=20110317061957 +InnerTubeCfg.lbl.Selectclustercfg..text.md5=PtoOr3FCyX3sMKqYegxWZQ\=\= +InnerTubeCfg.lbl.Selectclustercfg.es.text.changed=20110317062041 +InnerTubeCfg.lbl.Selectclustercfg.es.text.md5=oBd8tccxn1hd6rgXai2DzQ\=\= +InnerTubeCfg.lbl.Selectclustercfg.fr.text.changed=20110317061957 +InnerTubeCfg.lbl.Selectclustercfg.fr.text.md5=iaiZPUDrQFEdM5OG4GjMpg\=\= +InnerTubeCfg.lbl.TubeSep..text.changed=20110317061957 +InnerTubeCfg.lbl.TubeSep..text.md5=nPY9Or7ECc6oRdQgF0WuGw\=\= +InnerTubeCfg.lbl.TubeSep.es.text.changed=20110317062041 +InnerTubeCfg.lbl.TubeSep.es.text.md5=SLQcQQK4PgnRQjEKcyyOCQ\=\= +InnerTubeCfg.lbl.TubeSep.fr.text.changed=20110317061957 +InnerTubeCfg.lbl.TubeSep.fr.text.md5=X8sMd3ipRxf8SpB2KAWq+w\=\= +InnerTubeCfg.lbl.longA1..text.changed=20110317061957 +InnerTubeCfg.lbl.longA1..text.md5=AwKvOMAj4pBryFY1MbirYQ\=\= +InnerTubeCfg.lbl.longA1.es.text.changed=20110317062041 +InnerTubeCfg.lbl.longA1.es.text.md5=c234txset5ibfs74g1AoHg\=\= +InnerTubeCfg.lbl.longA1.fr.text.changed=20110317061957 +InnerTubeCfg.lbl.longA1.fr.text.md5=w0ToSJMkazOwvhB+NXoM+A\=\= +InnerTubeCfg.lbl.longA2..text.changed=20110317061957 +InnerTubeCfg.lbl.longA2..text.md5=ht2sOwaffJvB/bVWI2T8Rw\=\= +InnerTubeCfg.lbl.longA2.es.text.changed=20110317062041 +InnerTubeCfg.lbl.longA2.es.text.md5=qfHNNBdP8x21u0WAdREPsg\=\= +InnerTubeCfg.lbl.longA2.fr.text.changed=20110317061957 +InnerTubeCfg.lbl.longA2.fr.text.md5=AKynoSv0vObD2j1//v+gKg\=\= +InnerTubeCfg.lbl.ttip.Rotation..text.changed=20110317061957 +InnerTubeCfg.lbl.ttip.Rotation..text.md5=v7dn2BnGC1FS7KId/ykJJQ\=\= +InnerTubeCfg.lbl.ttip.Rotation.es.text.changed=20110317062041 +InnerTubeCfg.lbl.ttip.Rotation.es.text.md5=xfbulqDKSBDFBtzIyyaUag\=\= +InnerTubeCfg.lbl.ttip.Rotation.fr.text.changed=20110317061957 +InnerTubeCfg.lbl.ttip.Rotation.fr.text.md5=ZOq5wp6T2q3AbfYTqYlt3w\=\= +InnerTubeCfg.lbl.ttip.TubeSep..text.changed=20110317061957 +InnerTubeCfg.lbl.ttip.TubeSep..text.md5=7wJemgkMJThv1PjT6XBiiQ\=\= +InnerTubeCfg.lbl.ttip.TubeSep.es.text.changed=20110317062041 +InnerTubeCfg.lbl.ttip.TubeSep.es.text.md5=cnmXbH+0GjQpawb1rFjv5w\=\= +InnerTubeCfg.lbl.ttip.TubeSep.fr.text.changed=20110317061957 +InnerTubeCfg.lbl.ttip.TubeSep.fr.text.md5=qd7e6gLP2xSNNCVZLreQgA\=\= +InnerTubeCfg.tab.Cluster..text.changed=20110317061957 +InnerTubeCfg.tab.Cluster..text.md5=JJaUpIX8XTKJw4mGtPjohw\=\= +InnerTubeCfg.tab.Cluster.es.text.changed=20110317062041 +InnerTubeCfg.tab.Cluster.es.text.md5=JJaUpIX8XTKJw4mGtPjohw\=\= +InnerTubeCfg.tab.Cluster.fr.text.changed=20110317061957 +InnerTubeCfg.tab.Cluster.fr.text.md5=JJaUpIX8XTKJw4mGtPjohw\=\= +InnerTubeCfg.tab.Motor..text.changed=20110317061957 +InnerTubeCfg.tab.Motor..text.md5=szU4F59WYahsvjJ6F5PhmQ\=\= +InnerTubeCfg.tab.Motor.es.text.changed=20110317062041 +InnerTubeCfg.tab.Motor.es.text.md5=szU4F59WYahsvjJ6F5PhmQ\=\= +InnerTubeCfg.tab.Motor.fr.text.changed=20110317061957 +InnerTubeCfg.tab.Motor.fr.text.md5=6tmnS1jbv8qzuuKxMMKUVg\=\= +InnerTubeCfg.tab.Radialpos..text.changed=20110317061957 +InnerTubeCfg.tab.Radialpos..text.md5=N5z4APVe3yv5ut4IxUtg8A\=\= +InnerTubeCfg.tab.Radialpos.es.text.changed=20110317062041 +InnerTubeCfg.tab.Radialpos.es.text.md5=gAtRIJz+LZxcZML8QNFtSQ\=\= +InnerTubeCfg.tab.Radialpos.fr.text.changed=20110317061957 +InnerTubeCfg.tab.Radialpos.fr.text.md5=R4sAVeAnUFYd9BWRlvpBgA\=\= +InnerTubeCfg.tab.ttip.Cluster..text.changed=20110317061957 +InnerTubeCfg.tab.ttip.Cluster..text.md5=H4MPUAUHAwF5JyIC6pbyqw\=\= +InnerTubeCfg.tab.ttip.Cluster.es.text.changed=20110317062041 +InnerTubeCfg.tab.ttip.Cluster.es.text.md5=1r2hcNwl7/8T7RdBb9/IWQ\=\= +InnerTubeCfg.tab.ttip.Cluster.fr.text.changed=20110317061957 +InnerTubeCfg.tab.ttip.Cluster.fr.text.md5=aT6RQ38LzRQmUYc2RyDQWA\=\= +InnerTubeCfg.tab.ttip.Motor..text.changed=20110317061957 +InnerTubeCfg.tab.ttip.Motor..text.md5=L/dvnGSxOORZkwDDBqSWfQ\=\= +InnerTubeCfg.tab.ttip.Motor.es.text.changed=20110317062041 +InnerTubeCfg.tab.ttip.Motor.es.text.md5=C7fYL8sg0eTIrtoaGQZXMg\=\= +InnerTubeCfg.tab.ttip.Motor.fr.text.changed=20110317061957 +InnerTubeCfg.tab.ttip.Motor.fr.text.md5=0rdjCBFffGtXxO9eqBWkyA\=\= +InnerTubeCfg.tab.ttip.Radialpos..text.changed=20110317061957 +InnerTubeCfg.tab.ttip.Radialpos..text.md5=N5z4APVe3yv5ut4IxUtg8A\=\= +InnerTubeCfg.tab.ttip.Radialpos.es.text.changed=20110317062041 +InnerTubeCfg.tab.ttip.Radialpos.es.text.md5=gAtRIJz+LZxcZML8QNFtSQ\=\= +InnerTubeCfg.tab.ttip.Radialpos.fr.text.changed=20110317061957 +InnerTubeCfg.tab.ttip.Radialpos.fr.text.md5=R4sAVeAnUFYd9BWRlvpBgA\=\= +LaunchLug.Launchlug..text.changed=20110317061957 +LaunchLug.Launchlug..text.md5=9UAhgdqi/vCpLI5lbdBGwQ\=\= +LaunchLug.Launchlug.es.text.changed=20110317062041 +LaunchLug.Launchlug.es.text.md5=9UAhgdqi/vCpLI5lbdBGwQ\=\= +LaunchLug.Launchlug.fr.text.changed=20110317061957 +LaunchLug.Launchlug.fr.text.md5=DgeT4LMq8b7kJjfvIjiklw\=\= +LaunchLugCfg.lbl.Innerdiam..text.changed=20110317061957 +LaunchLugCfg.lbl.Innerdiam..text.md5=tl1ONj0/SCF9YCFirUoyVw\=\= +LaunchLugCfg.lbl.Innerdiam.es.text.changed=20110317062041 +LaunchLugCfg.lbl.Innerdiam.es.text.md5=Gjyh8ZBfEyVhHkk+5diXMw\=\= +LaunchLugCfg.lbl.Innerdiam.fr.text.changed=20110317061957 +LaunchLugCfg.lbl.Innerdiam.fr.text.md5=dCK7G8SxW0uKiJDjm3NQkA\=\= +LaunchLugCfg.lbl.Length..text.changed=20110317061957 +LaunchLugCfg.lbl.Length..text.md5=ZLM0xpJRtyw1DiXkYrVEKQ\=\= +LaunchLugCfg.lbl.Length.es.text.changed=20110317062041 +LaunchLugCfg.lbl.Length.es.text.md5=ycRTbjDcF+h0kJEC9Al45A\=\= +LaunchLugCfg.lbl.Length.fr.text.changed=20110317061957 +LaunchLugCfg.lbl.Length.fr.text.md5=+LpNY6MXcK9YQIbuQnHwPA\=\= +LaunchLugCfg.lbl.Outerdiam..text.changed=20110317061957 +LaunchLugCfg.lbl.Outerdiam..text.md5=AGmg3a+zlhzs+h+4J0JE8g\=\= +LaunchLugCfg.lbl.Outerdiam.es.text.changed=20110317062041 +LaunchLugCfg.lbl.Outerdiam.es.text.md5=Wm4jWwBkyecxm7/F8cQ0NQ\=\= +LaunchLugCfg.lbl.Outerdiam.fr.text.changed=20110317061957 +LaunchLugCfg.lbl.Outerdiam.fr.text.md5=XToXLedSc/XzNboRMC0Ujw\=\= +LaunchLugCfg.lbl.Posrelativeto..text.changed=20110317061957 +LaunchLugCfg.lbl.Posrelativeto..text.md5=uld2YfO/C3gWkbRzlw+EMA\=\= +LaunchLugCfg.lbl.Posrelativeto.es.text.changed=20110317062041 +LaunchLugCfg.lbl.Posrelativeto.es.text.md5=6hQM5zYAcKv2lio49/hQqQ\=\= +LaunchLugCfg.lbl.Posrelativeto.fr.text.changed=20110317061957 +LaunchLugCfg.lbl.Posrelativeto.fr.text.md5=b5qJfneiAEVaRoxk125f2Q\=\= +LaunchLugCfg.lbl.Radialpos..text.changed=20110317061957 +LaunchLugCfg.lbl.Radialpos..text.md5=ShYs1UEtrVIt+k+S3g0XpA\=\= +LaunchLugCfg.lbl.Radialpos.es.text.changed=20110317062041 +LaunchLugCfg.lbl.Radialpos.es.text.md5=7FAd3Gn//rSVmfihz/BxEg\=\= +LaunchLugCfg.lbl.Radialpos.fr.text.changed=20110317061957 +LaunchLugCfg.lbl.Radialpos.fr.text.md5=p3Rq8yqAKDHR9sl5IVGgCw\=\= +LaunchLugCfg.lbl.Thickness..text.changed=20110317061957 +LaunchLugCfg.lbl.Thickness..text.md5=De6os9fTRKpjp0AF4eicGg\=\= +LaunchLugCfg.lbl.Thickness.es.text.changed=20110317062041 +LaunchLugCfg.lbl.Thickness.es.text.md5=xJjWfhrb7lNPRDbDLxB+9A\=\= +LaunchLugCfg.lbl.Thickness.fr.text.changed=20110317061957 +LaunchLugCfg.lbl.Thickness.fr.text.md5=wQJDV7ZNGPpFMM+AiyCNxg\=\= +LaunchLugCfg.lbl.plus..text.changed=20110317061957 +LaunchLugCfg.lbl.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +LaunchLugCfg.lbl.plus.es.text.changed=20110317062041 +LaunchLugCfg.lbl.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +LaunchLugCfg.lbl.plus.fr.text.changed=20110317061957 +LaunchLugCfg.lbl.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +LaunchLugCfg.tab.General..text.changed=20110317061957 +LaunchLugCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +LaunchLugCfg.tab.General.es.text.changed=20110317062041 +LaunchLugCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +LaunchLugCfg.tab.General.fr.text.changed=20110317061957 +LaunchLugCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\= +LaunchLugCfg.tab.Generalprop..text.changed=20110317061957 +LaunchLugCfg.tab.Generalprop..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\= +LaunchLugCfg.tab.Generalprop.es.text.changed=20110317062041 +LaunchLugCfg.tab.Generalprop.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\= +LaunchLugCfg.tab.Generalprop.fr.text.changed=20110317061957 +LaunchLugCfg.tab.Generalprop.fr.text.md5=c8YR8Y64ukbawbUNBj44AQ\=\= +LineStyle.Dash-dotted..text.changed=20110317061957 +LineStyle.Dash-dotted..text.md5=/mJgC43JaIDFreZfUr/6ew\=\= +LineStyle.Dash-dotted.es.text.changed=20110317062041 +LineStyle.Dash-dotted.es.text.md5=/mJgC43JaIDFreZfUr/6ew\=\= +LineStyle.Dash-dotted.fr.text.changed=20110317061957 +LineStyle.Dash-dotted.fr.text.md5=nnL0mty6Qvucy1TVaD6wuw\=\= +LineStyle.Dashed..text.changed=20110317061957 +LineStyle.Dashed..text.md5=62VuQbbakUlHdez0elHakQ\=\= +LineStyle.Dashed.es.text.changed=20110317062041 +LineStyle.Dashed.es.text.md5=62VuQbbakUlHdez0elHakQ\=\= +LineStyle.Dashed.fr.text.changed=20110317061957 +LineStyle.Dashed.fr.text.md5=vNgqrQ3y5mLqMa9QtHx0Vw\=\= +LineStyle.Defaultstyle..text.changed=20110317061957 +LineStyle.Defaultstyle..text.md5=oNd1JclV7p8KRaNjr6HmpA\=\= +LineStyle.Defaultstyle.es.text.changed=20110317062041 +LineStyle.Defaultstyle.es.text.md5=oNd1JclV7p8KRaNjr6HmpA\=\= +LineStyle.Defaultstyle.fr.text.changed=20110317061957 +LineStyle.Defaultstyle.fr.text.md5=RzD8icSGHRkLoJzbAz+JlQ\=\= +LineStyle.Dotted..text.changed=20110317061957 +LineStyle.Dotted..text.md5=kMCTk6TAlwvJpnA61Sd4HA\=\= +LineStyle.Dotted.es.text.changed=20110317062041 +LineStyle.Dotted.es.text.md5=kMCTk6TAlwvJpnA61Sd4HA\=\= +LineStyle.Dotted.fr.text.changed=20110317061957 +LineStyle.Dotted.fr.text.md5=MvfaWVMs0U1Gu5/Dl2OgDg\=\= +LineStyle.Solid..text.changed=20110317061957 +LineStyle.Solid..text.md5=5BSAtrv790B5dKiNPTT0+g\=\= +LineStyle.Solid.es.text.changed=20110317062041 +LineStyle.Solid.es.text.md5=5BSAtrv790B5dKiNPTT0+g\=\= +LineStyle.Solid.fr.text.changed=20110317061957 +LineStyle.Solid.fr.text.md5=GFqE1fa09dDJXYPCQG32mw\=\= +MassComponent.MassComponent..text.changed=20110317061957 +MassComponent.MassComponent..text.md5=8fn9jBHM4bI9A08PJpsLIQ\=\= +MassComponent.MassComponent.es.text.changed=20110317062041 +MassComponent.MassComponent.es.text.md5=8fn9jBHM4bI9A08PJpsLIQ\=\= +MassComponent.MassComponent.fr.text.changed=20110317061957 +MassComponent.MassComponent.fr.text.md5=rpDyHcEdivKA4mJs1RiqZw\=\= +MassComponentCfg.but.Reset..text.changed=20110317061957 +MassComponentCfg.but.Reset..text.md5=Um1ojzeobTw/J9DFAW63HQ\=\= +MassComponentCfg.but.Reset.es.text.changed=20110317062041 +MassComponentCfg.but.Reset.es.text.md5=1AyYmA0X0AKMM9UVNCdanQ\=\= +MassComponentCfg.but.Reset.fr.text.changed=20110317061957 +MassComponentCfg.but.Reset.fr.text.md5=fgGw8uzsqquPbh/0yFLRMg\=\= +MassComponentCfg.lbl.Diameter..text.changed=20110317061957 +MassComponentCfg.lbl.Diameter..text.md5=tfaUSIMmB2/yAMerlVwEVQ\=\= +MassComponentCfg.lbl.Diameter.es.text.changed=20110317062041 +MassComponentCfg.lbl.Diameter.es.text.md5=JKoUOQaoV2oCYTu/8xBvYQ\=\= +MassComponentCfg.lbl.Diameter.fr.text.changed=20110317061957 +MassComponentCfg.lbl.Diameter.fr.text.md5=WCZj8bfE/hVJfiLJCQp5UQ\=\= +MassComponentCfg.lbl.Length..text.changed=20110317061957 +MassComponentCfg.lbl.Length..text.md5=uiqcbIx34D+D74v1Q2EidQ\=\= +MassComponentCfg.lbl.Length.es.text.changed=20110317062041 +MassComponentCfg.lbl.Length.es.text.md5=yRJSkybsSvz2fjoLePStOQ\=\= +MassComponentCfg.lbl.Length.fr.text.changed=20110317061957 +MassComponentCfg.lbl.Length.fr.text.md5=9IOe9DS00o4xVraDw/tFiQ\=\= +MassComponentCfg.lbl.Mass..text.changed=20110317061957 +MassComponentCfg.lbl.Mass..text.md5=/yhk1vZS7grCVIFPGuT0qA\=\= +MassComponentCfg.lbl.Mass.es.text.changed=20110317062041 +MassComponentCfg.lbl.Mass.es.text.md5=lcUx2HA+HSB6nsyzSYuDGw\=\= +MassComponentCfg.lbl.Mass.fr.text.changed=20110317061957 +MassComponentCfg.lbl.Mass.fr.text.md5=j5tnyROd4YPhARw9oEf1ow\=\= +MassComponentCfg.lbl.PosRelativeto..text.changed=20110317061957 +MassComponentCfg.lbl.PosRelativeto..text.md5=uld2YfO/C3gWkbRzlw+EMA\=\= +MassComponentCfg.lbl.PosRelativeto.es.text.changed=20110317062041 +MassComponentCfg.lbl.PosRelativeto.es.text.md5=6hQM5zYAcKv2lio49/hQqQ\=\= +MassComponentCfg.lbl.PosRelativeto.fr.text.changed=20110317061957 +MassComponentCfg.lbl.PosRelativeto.fr.text.md5=b5qJfneiAEVaRoxk125f2Q\=\= +MassComponentCfg.lbl.Radialdirection..text.changed=20110317061957 +MassComponentCfg.lbl.Radialdirection..text.md5=i1kLjBiCCrq0JyXJbJJWLQ\=\= +MassComponentCfg.lbl.Radialdirection.es.text.changed=20110317062041 +MassComponentCfg.lbl.Radialdirection.es.text.md5=8+Pa5rnto1tOMcLkMe+SVQ\=\= +MassComponentCfg.lbl.Radialdirection.fr.text.changed=20110317061957 +MassComponentCfg.lbl.Radialdirection.fr.text.md5=t1/lCCHD0C++YMqbld91CQ\=\= +MassComponentCfg.lbl.Radialdistance..text.changed=20110317061957 +MassComponentCfg.lbl.Radialdistance..text.md5=h+4GwPEjxtLCbattbJsWCg\=\= +MassComponentCfg.lbl.Radialdistance.es.text.changed=20110317062041 +MassComponentCfg.lbl.Radialdistance.es.text.md5=uZzanR16zi50c71Ltb76ZA\=\= +MassComponentCfg.lbl.Radialdistance.fr.text.changed=20110317061957 +MassComponentCfg.lbl.Radialdistance.fr.text.md5=EyX3DbszXL+q71CaMkPwjw\=\= +MassComponentCfg.lbl.plus..text.changed=20110317061957 +MassComponentCfg.lbl.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +MassComponentCfg.lbl.plus.es.text.changed=20110317062041 +MassComponentCfg.lbl.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +MassComponentCfg.lbl.plus.fr.text.changed=20110317061957 +MassComponentCfg.lbl.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +MassComponentCfg.tab.General..text.changed=20110317061957 +MassComponentCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +MassComponentCfg.tab.General.es.text.changed=20110317062041 +MassComponentCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +MassComponentCfg.tab.General.fr.text.changed=20110317061957 +MassComponentCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\= +MassComponentCfg.tab.Radialpos..text.changed=20110317061957 +MassComponentCfg.tab.Radialpos..text.md5=N5z4APVe3yv5ut4IxUtg8A\=\= +MassComponentCfg.tab.Radialpos.es.text.changed=20110317062041 +MassComponentCfg.tab.Radialpos.es.text.md5=gAtRIJz+LZxcZML8QNFtSQ\=\= +MassComponentCfg.tab.Radialpos.fr.text.changed=20110317061957 +MassComponentCfg.tab.Radialpos.fr.text.md5=rX8euW6QQ2ZOgQivvVMsOg\=\= +MassComponentCfg.tab.ttip.General..text.changed=20110317061957 +MassComponentCfg.tab.ttip.General..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\= +MassComponentCfg.tab.ttip.General.es.text.changed=20110317062041 +MassComponentCfg.tab.ttip.General.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\= +MassComponentCfg.tab.ttip.General.fr.text.changed=20110317061957 +MassComponentCfg.tab.ttip.General.fr.text.md5=c8YR8Y64ukbawbUNBj44AQ\=\= +MassComponentCfg.tab.ttip.Radialpos..text.changed=20110317061957 +MassComponentCfg.tab.ttip.Radialpos..text.md5=VWjNybFzuNElITpmCwHoJA\=\= +MassComponentCfg.tab.ttip.Radialpos.es.text.changed=20110317062041 +MassComponentCfg.tab.ttip.Radialpos.es.text.md5=bKv0q9SafUyC4RoSTTQTcA\=\= +MassComponentCfg.tab.ttip.Radialpos.fr.text.changed=20110317061957 +MassComponentCfg.tab.ttip.Radialpos.fr.text.md5=5z3CTUaVO25LBXPH1X1pBA\=\= +MaterialModel.title.Defcustmat..text.changed=20110317061957 +MaterialModel.title.Defcustmat..text.md5=DsF/XyqAGMuxNYZOy4Eq9w\=\= +MaterialModel.title.Defcustmat.es.text.changed=20110317062041 +MaterialModel.title.Defcustmat.es.text.md5=3c+5/z8wCE3NJoTvbGu5nw\=\= +MaterialModel.title.Defcustmat.fr.text.changed=20110317061957 +MaterialModel.title.Defcustmat.fr.text.md5=E4HNbA4tObKuBIlRrtHKxw\=\= +MaterialModel.title.Material..text.changed=20110317061957 +MaterialModel.title.Material..text.md5=2SqDM908y4lcxl90VbcSBg\=\= +MaterialModel.title.Material.es.text.changed=20110317062041 +MaterialModel.title.Material.es.text.md5=c5vIrsXIPululh8NaPcmBA\=\= +MaterialModel.title.Material.fr.text.changed=20110317061957 +MaterialModel.title.Material.fr.text.md5=5xneFXVURAxk+N0S3+q8lQ\=\= +MotorCfg.but.New..text.changed=20110317061957 +MotorCfg.but.New..text.md5=A8Ln5B/8GBpOhAgLRxDoHg\=\= +MotorCfg.but.New.es.text.changed=20110317062041 +MotorCfg.but.New.es.text.md5=A8Ln5B/8GBpOhAgLRxDoHg\=\= +MotorCfg.but.New.fr.text.changed=20110317061957 +MotorCfg.but.New.fr.text.md5=nqF7EPUGuIH+2QaqsKUPjQ\=\= +MotorCfg.but.Removemotor..text.changed=20110317061957 +MotorCfg.but.Removemotor..text.md5=4fhAF2YvYgl3IKDn1Qvejw\=\= +MotorCfg.but.Removemotor.es.text.changed=20110317062041 +MotorCfg.but.Removemotor.es.text.md5=zQGZezis32VJLq+UmvSHqg\=\= +MotorCfg.but.Removemotor.fr.text.changed=20110317061957 +MotorCfg.but.Removemotor.fr.text.md5=FXMdRrCctyMK6Wsu2Nl2Yw\=\= +MotorCfg.but.Selectmotor..text.changed=20110317061957 +MotorCfg.but.Selectmotor..text.md5=Po8U1JYUSxjeO5nuLOFoyA\=\= +MotorCfg.but.Selectmotor.es.text.changed=20110317062041 +MotorCfg.but.Selectmotor.es.text.md5=dHaSFZUHzaZQqRR4BrKmVQ\=\= +MotorCfg.but.Selectmotor.fr.text.changed=20110317061957 +MotorCfg.but.Selectmotor.fr.text.md5=eg8M2LVUXgmWWlkHvR9t/A\=\= +MotorCfg.checkbox.compmotormount..text.changed=20110317061957 +MotorCfg.checkbox.compmotormount..text.md5=z68lFtoFqh0HYOq2NSZzBg\=\= +MotorCfg.checkbox.compmotormount.es.text.changed=20110317062041 +MotorCfg.checkbox.compmotormount.es.text.md5=Dp9m+QdDh7n6H7uvO8pqZQ\=\= +MotorCfg.checkbox.compmotormount.fr.text.changed=20110317061957 +MotorCfg.checkbox.compmotormount.fr.text.md5=jfYWQyhQzq8UyfI6FEL9vQ\=\= +MotorCfg.lbl.Currentmotor..text.changed=20110317061957 +MotorCfg.lbl.Currentmotor..text.md5=OugwhE2G7FmvDOKEPxGkjA\=\= +MotorCfg.lbl.Currentmotor.es.text.changed=20110317062041 +MotorCfg.lbl.Currentmotor.es.text.md5=OARdgoYZQCFWv0v6L4qyyg\=\= +MotorCfg.lbl.Currentmotor.fr.text.changed=20110317061957 +MotorCfg.lbl.Currentmotor.fr.text.md5=m7FjBkJi7OJ2p5FT875qvQ\=\= +MotorCfg.lbl.Ignitionat..text.changed=20110317061957 +MotorCfg.lbl.Ignitionat..text.md5=UU7HDL+/rS5Af+zEU3cfHQ\=\= +MotorCfg.lbl.Ignitionat.es.text.changed=20110317062041 +MotorCfg.lbl.Ignitionat.es.text.md5=UzFng+eN/T23y+V3GzvxAQ\=\= +MotorCfg.lbl.Ignitionat.fr.text.changed=20110317061957 +MotorCfg.lbl.Ignitionat.fr.text.md5=G8yIX/UpUN3z5qdF/JdZrg\=\= +MotorCfg.lbl.Motorcfg..text.changed=20110317061957 +MotorCfg.lbl.Motorcfg..text.md5=hUqBQQLOQuV2isn4DoTERA\=\= +MotorCfg.lbl.Motorcfg.es.text.changed=20110317062041 +MotorCfg.lbl.Motorcfg.es.text.md5=LKwpTWlKtZl2ttOxTzBp9Q\=\= +MotorCfg.lbl.Motorcfg.fr.text.changed=20110317061957 +MotorCfg.lbl.Motorcfg.fr.text.md5=guo2XStPjncz4V70HFfwvw\=\= +MotorCfg.lbl.Motoroverhang..text.changed=20110317061957 +MotorCfg.lbl.Motoroverhang..text.md5=P4lwHNLlwrcoRkWU68yjXA\=\= +MotorCfg.lbl.Motoroverhang.es.text.changed=20110317062041 +MotorCfg.lbl.Motoroverhang.es.text.md5=XCzHeR2RS+QXbYDf5MHd7Q\=\= +MotorCfg.lbl.Motoroverhang.fr.text.changed=20110317061957 +MotorCfg.lbl.Motoroverhang.fr.text.md5=jaMaWC6uSO7pgvNMIulYKg\=\= +MotorCfg.lbl.longA1..text.changed=20110317061957 +MotorCfg.lbl.longA1..text.md5=1BFQy4JWtonBXlWuHkX7Iw\=\= +MotorCfg.lbl.longA1.es.text.changed=20110317062041 +MotorCfg.lbl.longA1.es.text.md5=OEbXgO6l6zX3j+ji5jYJ5Q\=\= +MotorCfg.lbl.longA1.fr.text.changed=20110317061957 +MotorCfg.lbl.longA1.fr.text.md5=n8W8aC5NAwSJAoKPdn7fUw\=\= +MotorCfg.lbl.longA2..text.changed=20110317061957 +MotorCfg.lbl.longA2..text.md5=FJRo6AMhHU7N+5++5SxYzA\=\= +MotorCfg.lbl.longA2.es.text.changed=20110317062041 +MotorCfg.lbl.longA2.es.text.md5=59zrEpowzIShdhNN8QzCAA\=\= +MotorCfg.lbl.longA2.fr.text.changed=20110317061957 +MotorCfg.lbl.longA2.fr.text.md5=/qZBqseguFXfyb6nXNAjOw\=\= +MotorCfg.lbl.longB1..text.changed=20110317061957 +MotorCfg.lbl.longB1..text.md5=wOouDZI247rHQy7yXC6vmQ\=\= +MotorCfg.lbl.longB1.es.text.changed=20110317062041 +MotorCfg.lbl.longB1.es.text.md5=ZD6uBEvE4MfsgAszq3xe2w\=\= +MotorCfg.lbl.longB1.fr.text.changed=20110317061957 +MotorCfg.lbl.longB1.fr.text.md5=LbUZCxHPKyDBHVs1okmU8g\=\= +MotorCfg.lbl.longB2..text.changed=20110317061957 +MotorCfg.lbl.longB2..text.md5=lxCjQJlAYJmy6ST+vuVcaw\=\= +MotorCfg.lbl.longB2.es.text.changed=20110317062041 +MotorCfg.lbl.longB2.es.text.md5=aXw8zTBeUYd2zckHaZ9FkA\=\= +MotorCfg.lbl.longB2.fr.text.changed=20110317061957 +MotorCfg.lbl.longB2.fr.text.md5=h5LXgBK7Tf51y/N9L0j/jg\=\= +MotorCfg.lbl.motorLabel..text.changed=20110317061957 +MotorCfg.lbl.motorLabel..text.md5=at+X+DrPZFPUpqSxBw83VA\=\= +MotorCfg.lbl.motorLabel.es.text.changed=20110317062041 +MotorCfg.lbl.motorLabel.es.text.md5=Nf5kEOlwQ4ZBbP354K6mnQ\=\= +MotorCfg.lbl.motorLabel.fr.text.changed=20110317061957 +MotorCfg.lbl.motorLabel.fr.text.md5=56vBja7oyq1Y8fL6i5EgTg\=\= +MotorCfg.lbl.plus..text.changed=20110317061957 +MotorCfg.lbl.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +MotorCfg.lbl.plus.es.text.changed=20110317062041 +MotorCfg.lbl.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +MotorCfg.lbl.plus.fr.text.changed=20110317061957 +MotorCfg.lbl.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +MotorCfg.lbl.seconds..text.changed=20110317061957 +MotorCfg.lbl.seconds..text.md5=eD6OKeaow+IrqlihlCDrTw\=\= +MotorCfg.lbl.seconds.es.text.changed=20110317062041 +MotorCfg.lbl.seconds.es.text.md5=UxqeEPFTlrCXqhUT1Oib0A\=\= +MotorCfg.lbl.seconds.fr.text.changed=20110317061957 +MotorCfg.lbl.seconds.fr.text.md5=PK6Hg67qettTlQ/ZvpMLrg\=\= +MotorCfgModel.Editcfg..text.changed=20110317061957 +MotorCfgModel.Editcfg..text.md5=2olBJajJcdcRELJevr94SA\=\= +MotorCfgModel.Editcfg.es.text.changed=20110317062041 +MotorCfgModel.Editcfg.es.text.md5=LenqEQLa8PGRs5UCXo/uRw\=\= +MotorCfgModel.Editcfg.fr.text.changed=20110317061957 +MotorCfgModel.Editcfg.fr.text.md5=HRvhcZdse64L3maBUx7EZg\=\= +MotorDbLoadDlg.Loadingmotors..text.changed=20110317061957 +MotorDbLoadDlg.Loadingmotors..text.md5=iW8rTZJaifdBKpXRqosuvg\=\= +MotorDbLoadDlg.Loadingmotors.es.text.changed=20110317062041 +MotorDbLoadDlg.Loadingmotors.es.text.md5=UcFl3r5S83GyEPccoiK91w\=\= +MotorDbLoadDlg.Loadingmotors.fr.text.changed=20110317061957 +MotorDbLoadDlg.Loadingmotors.fr.text.md5=kV1OcySzdI75tywabB2dDw\=\= +MotorDbLoadDlg.title..text.changed=20110317061957 +MotorDbLoadDlg.title..text.md5=oPoFmXokWI2/Ud2vsXzzgg\=\= +MotorDbLoadDlg.title.es.text.changed=20110317062041 +MotorDbLoadDlg.title.es.text.md5=mH4dA0q5ffCg/vB9hL2G0A\=\= +MotorDbLoadDlg.title.fr.text.changed=20110317061957 +MotorDbLoadDlg.title.fr.text.md5=CmwARtiDv+zwMifB9OAbJA\=\= +MotorMount.IgnitionEvent.AUTOMATIC..text.changed=20110317061957 +MotorMount.IgnitionEvent.AUTOMATIC..text.md5=eXLMY2iWfXzauNJN9GzrcQ\=\= +MotorMount.IgnitionEvent.AUTOMATIC.es.text.changed=20110317062041 +MotorMount.IgnitionEvent.AUTOMATIC.es.text.md5=eXLMY2iWfXzauNJN9GzrcQ\=\= +MotorMount.IgnitionEvent.AUTOMATIC.fr.text.changed=20110317061957 +MotorMount.IgnitionEvent.AUTOMATIC.fr.text.md5=p2Jhw3EnwVmAiAC+v55A8g\=\= +MotorMount.IgnitionEvent.BURNOUT..text.changed=20110317061957 +MotorMount.IgnitionEvent.BURNOUT..text.md5=AZFvaAg4Oxw7NylNQqJiIQ\=\= +MotorMount.IgnitionEvent.BURNOUT.es.text.changed=20110317062041 +MotorMount.IgnitionEvent.BURNOUT.es.text.md5=AZFvaAg4Oxw7NylNQqJiIQ\=\= +MotorMount.IgnitionEvent.BURNOUT.fr.text.changed=20110317061957 +MotorMount.IgnitionEvent.BURNOUT.fr.text.md5=AZFvaAg4Oxw7NylNQqJiIQ\=\= +MotorMount.IgnitionEvent.EJECTION_CHARGE..text.changed=20110317061957 +MotorMount.IgnitionEvent.EJECTION_CHARGE..text.md5=Uh/aD3z+iJFA2opleUANQg\=\= +MotorMount.IgnitionEvent.EJECTION_CHARGE.es.text.changed=20110317062041 +MotorMount.IgnitionEvent.EJECTION_CHARGE.es.text.md5=Uh/aD3z+iJFA2opleUANQg\=\= +MotorMount.IgnitionEvent.EJECTION_CHARGE.fr.text.changed=20110317061957 +MotorMount.IgnitionEvent.EJECTION_CHARGE.fr.text.md5=5Zw/8F1d6gHnu8t72Xw6Eg\=\= +MotorMount.IgnitionEvent.LAUNCH..text.changed=20110317061957 +MotorMount.IgnitionEvent.LAUNCH..text.md5=lQbw/Q9/GweWCxW0yeaNGg\=\= +MotorMount.IgnitionEvent.LAUNCH.es.text.changed=20110317062041 +MotorMount.IgnitionEvent.LAUNCH.es.text.md5=lQbw/Q9/GweWCxW0yeaNGg\=\= +MotorMount.IgnitionEvent.LAUNCH.fr.text.changed=20110317061957 +MotorMount.IgnitionEvent.LAUNCH.fr.text.md5=rY9s9XYfmob7ItSdUunCkw\=\= +MotorMount.IgnitionEvent.NEVER..text.changed=20110317061957 +MotorMount.IgnitionEvent.NEVER..text.md5=bns0+lnhvSKbIHiSlW3EHA\=\= +MotorMount.IgnitionEvent.NEVER.es.text.changed=20110317062041 +MotorMount.IgnitionEvent.NEVER.es.text.md5=bns0+lnhvSKbIHiSlW3EHA\=\= +MotorMount.IgnitionEvent.NEVER.fr.text.changed=20110317061957 +MotorMount.IgnitionEvent.NEVER.fr.text.md5=WQFO0zJ7d4GnWlO+xwF2Nw\=\= +MotorPlot.Chart.Motorthrustcurve..text.changed=20110317061957 +MotorPlot.Chart.Motorthrustcurve..text.md5=8DUArhdjOHxFN/8SP0doFA\=\= +MotorPlot.Chart.Motorthrustcurve.es.text.changed=20110317062041 +MotorPlot.Chart.Motorthrustcurve.es.text.md5=6HGtzC+C6nDfMsXzrltBuw\=\= +MotorPlot.Chart.Motorthrustcurve.fr.text.changed=20110317061957 +MotorPlot.Chart.Motorthrustcurve.fr.text.md5=x31U9b1uX7urqY/eqm8o3A\=\= +MotorPlot.Chart.Thrust..text.changed=20110317061957 +MotorPlot.Chart.Thrust..text.md5=+tyeABZJK0pOKDcbPve6EQ\=\= +MotorPlot.Chart.Thrust.es.text.changed=20110317062041 +MotorPlot.Chart.Thrust.es.text.md5=o8EJIqJbqsARLk0j27qSpQ\=\= +MotorPlot.Chart.Thrust.fr.text.changed=20110317061957 +MotorPlot.Chart.Thrust.fr.text.md5=FlOQQaWfTF4UydcpjAiZtQ\=\= +MotorPlot.Chart.Time..text.changed=20110317061957 +MotorPlot.Chart.Time..text.md5=WfHQdTL3Z3Brv27VcYah+A\=\= +MotorPlot.Chart.Time.es.text.changed=20110317062041 +MotorPlot.Chart.Time.es.text.md5=kryI27EgrwuvvxfBfWEFGQ\=\= +MotorPlot.Chart.Time.fr.text.changed=20110317061957 +MotorPlot.Chart.Time.fr.text.md5=4nF3ow4HYd+Z1wxxnxXg6Q\=\= +MotorPlot.but.Select..text.changed=20110317061957 +MotorPlot.but.Select..text.md5=4GJiImFL3uMZUdhMZOXp/w\=\= +MotorPlot.but.Select.es.text.changed=20110317062041 +MotorPlot.but.Select.es.text.md5=Ev8cbjgxLx1B7T9UfjjyxA\=\= +MotorPlot.but.Select.fr.text.changed=20110317061957 +MotorPlot.but.Select.fr.text.md5=b/ndDTT2UYEXPB5Lw5k53g\=\= +MotorPlot.title.Motorplot..text.changed=20110317061957 +MotorPlot.title.Motorplot..text.md5=270v3AQN5uLpv5pGFDskpg\=\= +MotorPlot.title.Motorplot.es.text.changed=20110317062041 +MotorPlot.title.Motorplot.es.text.md5=qJogHyoesdiTmGSm4F8H9Q\=\= +MotorPlot.title.Motorplot.fr.text.changed=20110317061957 +MotorPlot.title.Motorplot.fr.text.md5=oH0x/MwQLwW3kXfcV5dqAg\=\= +MotorPlot.txt.Comment..text.changed=20110317061957 +MotorPlot.txt.Comment..text.md5=VyU3dflVPoemJ35AU0KV+Q\=\= +MotorPlot.txt.Comment.es.text.changed=20110317062041 +MotorPlot.txt.Comment.es.text.md5=prQi9577KcmlO7Tgkr2Fcw\=\= +MotorPlot.txt.Comment.fr.text.changed=20110317061957 +MotorPlot.txt.Comment.fr.text.md5=O2f9IJ9msRTXoIbaZeftXQ\=\= +MotorPlot.txt.Delays..text.changed=20110317061957 +MotorPlot.txt.Delays..text.md5=myHhWmpn0BLhLprPSVDmnQ\=\= +MotorPlot.txt.Delays.es.text.changed=20110317062041 +MotorPlot.txt.Delays.es.text.md5=V8r9BiccuksTqTXysSNUZA\=\= +MotorPlot.txt.Delays.fr.text.changed=20110317061957 +MotorPlot.txt.Delays.fr.text.md5=VLyqmtmhqOMOGiWdN/jRCA\=\= +MotorPlot.txt.Designation..text.changed=20110317061957 +MotorPlot.txt.Designation..text.md5=YhiFyr0LuBagGayEotNM3A\=\= +MotorPlot.txt.Designation.es.text.changed=20110317062041 +MotorPlot.txt.Designation.es.text.md5=i1U/HVle+2Xf6BBT3ZYRUg\=\= +MotorPlot.txt.Designation.fr.text.changed=20110317061957 +MotorPlot.txt.Designation.fr.text.md5=0273tWsYL8GrpKSNFBDBxA\=\= +MotorPlot.txt.Manufacturer..text.changed=20110317061957 +MotorPlot.txt.Manufacturer..text.md5=9KJ1qTG4LlBYvI/62LjlvQ\=\= +MotorPlot.txt.Manufacturer.es.text.changed=20110317062041 +MotorPlot.txt.Manufacturer.es.text.md5=yQOwvWeasWXk4XmzXxPG0w\=\= +MotorPlot.txt.Manufacturer.fr.text.changed=20110317061957 +MotorPlot.txt.Manufacturer.fr.text.md5=9KJ1qTG4LlBYvI/62LjlvQ\=\= +MotorPlot.txt.Type..text.changed=20110317061957 +MotorPlot.txt.Type..text.md5=5lm1LrofApmy2Mo0g5Gecg\=\= +MotorPlot.txt.Type.es.text.changed=20110317062041 +MotorPlot.txt.Type.es.text.md5=uCjv+xfsc/A/4zpwdWCjcg\=\= +MotorPlot.txt.Type.fr.text.changed=20110317061957 +MotorPlot.txt.Type.fr.text.md5=5lm1LrofApmy2Mo0g5Gecg\=\= +NoseCone.NoseCone..text.changed=20110317061957 +NoseCone.NoseCone..text.md5=2Eu3u5wFNw/urTRrBp/d/Q\=\= +NoseCone.NoseCone.es.text.changed=20110317062041 +NoseCone.NoseCone.es.text.md5=2Eu3u5wFNw/urTRrBp/d/Q\=\= +NoseCone.NoseCone.fr.text.changed=20110317061957 +NoseCone.NoseCone.fr.text.md5=jwC8jX5d14XDDyiDS/vw5w\=\= +NoseConeCfg.checkbox.Automatic..text.changed=20110317061957 +NoseConeCfg.checkbox.Automatic..text.md5=CGJHqbV/3m7v7ioMR1IkLQ\=\= +NoseConeCfg.checkbox.Automatic.es.text.changed=20110317062041 +NoseConeCfg.checkbox.Automatic.es.text.md5=D3uT6/H6hH/AStlgA624Tw\=\= +NoseConeCfg.checkbox.Automatic.fr.text.changed=20110317061957 +NoseConeCfg.checkbox.Automatic.fr.text.md5=rO2dama6vw/FNskM7H2i5w\=\= +NoseConeCfg.checkbox.Filled..text.changed=20110317061957 +NoseConeCfg.checkbox.Filled..text.md5=2dWG+MeS+PZhBSr0JTYyPA\=\= +NoseConeCfg.checkbox.Filled.es.text.changed=20110317062041 +NoseConeCfg.checkbox.Filled.es.text.md5=HQ2GNI1le2Dl+Mw8w7w38w\=\= +NoseConeCfg.checkbox.Filled.fr.text.changed=20110317061957 +NoseConeCfg.checkbox.Filled.fr.text.md5=S975CUbtxnqWOai6+gtVIw\=\= +NoseConeCfg.lbl.Basediam..text.changed=20110317061957 +NoseConeCfg.lbl.Basediam..text.md5=WnVLorAtyLwvC8th9BDt0g\=\= +NoseConeCfg.lbl.Basediam.es.text.changed=20110317062041 +NoseConeCfg.lbl.Basediam.es.text.md5=MzEE4jmYfkOb/YZtYbAMyA\=\= +NoseConeCfg.lbl.Basediam.fr.text.changed=20110317061957 +NoseConeCfg.lbl.Basediam.fr.text.md5=sk55XWkUScI3P13XTofBoQ\=\= +NoseConeCfg.lbl.Noseconelength..text.changed=20110317061957 +NoseConeCfg.lbl.Noseconelength..text.md5=6MjwyMQznxVC5ml+DEzcgw\=\= +NoseConeCfg.lbl.Noseconelength.es.text.changed=20110317062041 +NoseConeCfg.lbl.Noseconelength.es.text.md5=aobjGK9R7jRu9Uw7M5PkQQ\=\= +NoseConeCfg.lbl.Noseconelength.fr.text.changed=20110317061957 +NoseConeCfg.lbl.Noseconelength.fr.text.md5=Zw7V76pANrI+bpISdXcIfA\=\= +NoseConeCfg.lbl.Noseconeshape..text.changed=20110317061957 +NoseConeCfg.lbl.Noseconeshape..text.md5=zljhTVuHlxue/6LqZgGWgA\=\= +NoseConeCfg.lbl.Noseconeshape.es.text.changed=20110317062041 +NoseConeCfg.lbl.Noseconeshape.es.text.md5=8Z3NleZqAQzd4cZXg9TrmA\=\= +NoseConeCfg.lbl.Noseconeshape.fr.text.changed=20110317061957 +NoseConeCfg.lbl.Noseconeshape.fr.text.md5=azFoV5IE82gMI8mlobudYA\=\= +NoseConeCfg.lbl.Shapeparam..text.changed=20110317061957 +NoseConeCfg.lbl.Shapeparam..text.md5=KVaIAlkq0XzFBnTFAB255w\=\= +NoseConeCfg.lbl.Shapeparam.es.text.changed=20110317062041 +NoseConeCfg.lbl.Shapeparam.es.text.md5=5Xy1hNGGrYa4hfGVGFJxTA\=\= +NoseConeCfg.lbl.Shapeparam.fr.text.changed=20110317061957 +NoseConeCfg.lbl.Shapeparam.fr.text.md5=3y8h1BkZndT/FOnJYA5FVQ\=\= +NoseConeCfg.lbl.Wallthickness..text.changed=20110317061957 +NoseConeCfg.lbl.Wallthickness..text.md5=+fnX03pPwQt6SXS2we8xRg\=\= +NoseConeCfg.lbl.Wallthickness.es.text.changed=20110317062041 +NoseConeCfg.lbl.Wallthickness.es.text.md5=tT1+InFckvVCzc2RCNVVSQ\=\= +NoseConeCfg.lbl.Wallthickness.fr.text.changed=20110317061957 +NoseConeCfg.lbl.Wallthickness.fr.text.md5=iFOwo5u9UFPeev2I4ToeLA\=\= +NoseConeCfg.tab.General..text.changed=20110317061957 +NoseConeCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +NoseConeCfg.tab.General.es.text.changed=20110317062041 +NoseConeCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +NoseConeCfg.tab.General.fr.text.changed=20110317061957 +NoseConeCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\= +NoseConeCfg.tab.Shoulder..text.changed=20110317061957 +NoseConeCfg.tab.Shoulder..text.md5=g8tMFEs9buGoR77lGkS5Mw\=\= +NoseConeCfg.tab.Shoulder.es.text.changed=20110317062041 +NoseConeCfg.tab.Shoulder.es.text.md5=78fPmNoWzrpkK+C7wA1R1g\=\= +NoseConeCfg.tab.Shoulder.fr.text.changed=20110317061957 +NoseConeCfg.tab.Shoulder.fr.text.md5=ij0NnDUcQgwNuNOYKx3eiw\=\= +NoseConeCfg.tab.ttip.General..text.changed=20110317061957 +NoseConeCfg.tab.ttip.General..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\= +NoseConeCfg.tab.ttip.General.es.text.changed=20110317062041 +NoseConeCfg.tab.ttip.General.es.text.md5=fQ39GJFiR6oG9aUxLug5YQ\=\= +NoseConeCfg.tab.ttip.General.fr.text.changed=20110317061957 +NoseConeCfg.tab.ttip.General.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\= +NoseConeCfg.tab.ttip.Shoulder..text.changed=20110317061957 +NoseConeCfg.tab.ttip.Shoulder..text.md5=veo49O9fQ4SLjde6bY/VVQ\=\= +NoseConeCfg.tab.ttip.Shoulder.es.text.changed=20110317062041 +NoseConeCfg.tab.ttip.Shoulder.es.text.md5=4Y4Kzhcq0JFqewGDiCwbPw\=\= +NoseConeCfg.tab.ttip.Shoulder.fr.text.changed=20110317061957 +NoseConeCfg.tab.ttip.Shoulder.fr.text.md5=sti2mJGzRjITPrUDeouq7Q\=\= +Parachute.Parachute..text.changed=20110317061957 +Parachute.Parachute..text.md5=iJ1sZoJJtUSAO6/GwY2/NA\=\= +Parachute.Parachute.es.text.changed=20110317062041 +Parachute.Parachute.es.text.md5=iJ1sZoJJtUSAO6/GwY2/NA\=\= +Parachute.Parachute.fr.text.changed=20110317061957 +Parachute.Parachute.fr.text.md5=iJ1sZoJJtUSAO6/GwY2/NA\=\= +ParachuteCfg.but.Reset..text.changed=20110317061957 +ParachuteCfg.but.Reset..text.md5=Um1ojzeobTw/J9DFAW63HQ\=\= +ParachuteCfg.but.Reset.es.text.changed=20110317062041 +ParachuteCfg.but.Reset.es.text.md5=Um1ojzeobTw/J9DFAW63HQ\=\= +ParachuteCfg.but.Reset.fr.text.changed=20110317061957 +ParachuteCfg.but.Reset.fr.text.md5=fgGw8uzsqquPbh/0yFLRMg\=\= +ParachuteCfg.combo.MaterialModel..text.changed=20110317061957 +ParachuteCfg.combo.MaterialModel..text.md5=DAgqIeIiYrmv0taT33oRxg\=\= +ParachuteCfg.combo.MaterialModel.es.text.changed=20110317062041 +ParachuteCfg.combo.MaterialModel.es.text.md5=X/hW308rVQ/o6fhdoswWkg\=\= +ParachuteCfg.combo.MaterialModel.fr.text.changed=20110317061957 +ParachuteCfg.combo.MaterialModel.fr.text.md5=ItFmkpJv49F3DxVe8FVQlg\=\= +ParachuteCfg.lbl.Altitude..text.changed=20110317061957 +ParachuteCfg.lbl.Altitude..text.md5=E0gTnkAiZOiphJQJBJsnHg\=\= +ParachuteCfg.lbl.Altitude.es.text.changed=20110317062041 +ParachuteCfg.lbl.Altitude.es.text.md5=kW45w2n1Z2I4g9aZwsJQ7A\=\= +ParachuteCfg.lbl.Altitude.fr.text.changed=20110317061957 +ParachuteCfg.lbl.Altitude.fr.text.md5=E0gTnkAiZOiphJQJBJsnHg\=\= +ParachuteCfg.lbl.Canopy..text.changed=20110317061957 +ParachuteCfg.lbl.Canopy..text.md5=Xa9JZGaehPbhQS3WYka1KQ\=\= +ParachuteCfg.lbl.Canopy.es.text.changed=20110317062041 +ParachuteCfg.lbl.Canopy.es.text.md5=Q46+SL+zdDSdVDgqQlfAqQ\=\= +ParachuteCfg.lbl.Canopy.fr.text.changed=20110317061957 +ParachuteCfg.lbl.Canopy.fr.text.md5=2e/Bq3sQA/iG3uGZ6gS5ow\=\= +ParachuteCfg.lbl.Deploysat..text.changed=20110317061957 +ParachuteCfg.lbl.Deploysat..text.md5=IxstQijgTJb/8AvIWRQH9w\=\= +ParachuteCfg.lbl.Deploysat.es.text.changed=20110317062041 +ParachuteCfg.lbl.Deploysat.es.text.md5=moF/hPQVM84ksGjGjs1UeQ\=\= +ParachuteCfg.lbl.Deploysat.fr.text.changed=20110317061957 +ParachuteCfg.lbl.Deploysat.fr.text.md5=JELD/qo7Duj0UQ7PerJNLA\=\= +ParachuteCfg.lbl.Diameter..text.changed=20110317061957 +ParachuteCfg.lbl.Diameter..text.md5=uh4JG3VOop6684+vupv7wg\=\= +ParachuteCfg.lbl.Diameter.es.text.changed=20110317062041 +ParachuteCfg.lbl.Diameter.es.text.md5=p0rJqnplUaq6vzp71r8kxw\=\= +ParachuteCfg.lbl.Diameter.fr.text.changed=20110317061957 +ParachuteCfg.lbl.Diameter.fr.text.md5=krQJbrSG9ksshs17OtWyJg\=\= +ParachuteCfg.lbl.Linelength..text.changed=20110317061957 +ParachuteCfg.lbl.Linelength..text.md5=hHJBtfXGinZxEVeR0HlUPw\=\= +ParachuteCfg.lbl.Linelength.es.text.changed=20110317062041 +ParachuteCfg.lbl.Linelength.es.text.md5=Ikvpi04J3+Fg7lTl37zZiA\=\= +ParachuteCfg.lbl.Linelength.fr.text.changed=20110317061957 +ParachuteCfg.lbl.Linelength.fr.text.md5=HvZiEVJ+VOK5uxlFtyfrnA\=\= +ParachuteCfg.lbl.Material..text.changed=20110317061957 +ParachuteCfg.lbl.Material..text.md5=1zibzLtopzoHLVvzqb0tkw\=\= +ParachuteCfg.lbl.Material.es.text.changed=20110317062041 +ParachuteCfg.lbl.Material.es.text.md5=1zibzLtopzoHLVvzqb0tkw\=\= +ParachuteCfg.lbl.Material.fr.text.changed=20110317061957 +ParachuteCfg.lbl.Material.fr.text.md5=cPnLRUd7khfn1RS1/D+2uw\=\= +ParachuteCfg.lbl.Numberoflines..text.changed=20110317061957 +ParachuteCfg.lbl.Numberoflines..text.md5=c+a/9Fnh0rLjyk4vW+JioQ\=\= +ParachuteCfg.lbl.Numberoflines.es.text.changed=20110317062041 +ParachuteCfg.lbl.Numberoflines.es.text.md5=0tW/qN7+4xzcn9ysgLdzXg\=\= +ParachuteCfg.lbl.Numberoflines.fr.text.changed=20110317061957 +ParachuteCfg.lbl.Numberoflines.fr.text.md5=hYNCbADGVRlMDcbaAMf0BQ\=\= +ParachuteCfg.lbl.Packeddiam..text.changed=20110317061957 +ParachuteCfg.lbl.Packeddiam..text.md5=ZLli2T49cm2t4O2DM2Qdfg\=\= +ParachuteCfg.lbl.Packeddiam.es.text.changed=20110317062041 +ParachuteCfg.lbl.Packeddiam.es.text.md5=h2fYHq6dIS69oa5+UT2jzQ\=\= +ParachuteCfg.lbl.Packeddiam.fr.text.changed=20110317061957 +ParachuteCfg.lbl.Packeddiam.fr.text.md5=MCBW0PoxQ8Qtb5TAUsjc2w\=\= +ParachuteCfg.lbl.Packedlength..text.changed=20110317061957 +ParachuteCfg.lbl.Packedlength..text.md5=UXXIbj2JBgPTWzdfLI0olQ\=\= +ParachuteCfg.lbl.Packedlength.es.text.changed=20110317062041 +ParachuteCfg.lbl.Packedlength.es.text.md5=GEwxxwwW5Vw6LWX65NhM4Q\=\= +ParachuteCfg.lbl.Packedlength.fr.text.changed=20110317061957 +ParachuteCfg.lbl.Packedlength.fr.text.md5=/o7zfx/ENDsTSGus481oFA\=\= +ParachuteCfg.lbl.Posrelativeto..text.changed=20110317061957 +ParachuteCfg.lbl.Posrelativeto..text.md5=uld2YfO/C3gWkbRzlw+EMA\=\= +ParachuteCfg.lbl.Posrelativeto.es.text.changed=20110317062041 +ParachuteCfg.lbl.Posrelativeto.es.text.md5=6hQM5zYAcKv2lio49/hQqQ\=\= +ParachuteCfg.lbl.Posrelativeto.fr.text.changed=20110317061957 +ParachuteCfg.lbl.Posrelativeto.fr.text.md5=b5qJfneiAEVaRoxk125f2Q\=\= +ParachuteCfg.lbl.Radialdirection..text.changed=20110317061957 +ParachuteCfg.lbl.Radialdirection..text.md5=i1kLjBiCCrq0JyXJbJJWLQ\=\= +ParachuteCfg.lbl.Radialdirection.es.text.changed=20110317062041 +ParachuteCfg.lbl.Radialdirection.es.text.md5=8+Pa5rnto1tOMcLkMe+SVQ\=\= +ParachuteCfg.lbl.Radialdirection.fr.text.changed=20110317061957 +ParachuteCfg.lbl.Radialdirection.fr.text.md5=t1/lCCHD0C++YMqbld91CQ\=\= +ParachuteCfg.lbl.Radialdistance..text.changed=20110317061957 +ParachuteCfg.lbl.Radialdistance..text.md5=h+4GwPEjxtLCbattbJsWCg\=\= +ParachuteCfg.lbl.Radialdistance.es.text.changed=20110317062041 +ParachuteCfg.lbl.Radialdistance.es.text.md5=uZzanR16zi50c71Ltb76ZA\=\= +ParachuteCfg.lbl.Radialdistance.fr.text.changed=20110317061957 +ParachuteCfg.lbl.Radialdistance.fr.text.md5=EyX3DbszXL+q71CaMkPwjw\=\= +ParachuteCfg.lbl.Shroudlines..text.changed=20110317061957 +ParachuteCfg.lbl.Shroudlines..text.md5=s7AK/5jrJBT9Tys80QRVvg\=\= +ParachuteCfg.lbl.Shroudlines.es.text.changed=20110317062041 +ParachuteCfg.lbl.Shroudlines.es.text.md5=lXFby+fvDC/EdFe9beeNdQ\=\= +ParachuteCfg.lbl.Shroudlines.fr.text.changed=20110317061957 +ParachuteCfg.lbl.Shroudlines.fr.text.md5=ySvu3bU9c0uc2HHjZPxvRQ\=\= +ParachuteCfg.lbl.longA1..text.changed=20110317061957 +ParachuteCfg.lbl.longA1..text.md5=+e/wsU4oZBXvD9lztBpgiw\=\= +ParachuteCfg.lbl.longA1.es.text.changed=20110317062041 +ParachuteCfg.lbl.longA1.es.text.md5=+e/wsU4oZBXvD9lztBpgiw\=\= +ParachuteCfg.lbl.longA1.fr.text.changed=20110317061957 +ParachuteCfg.lbl.longA1.fr.text.md5=0FHoANBt31B4ZVACneVWrg\=\= +ParachuteCfg.lbl.longB1..text.changed=20110317061957 +ParachuteCfg.lbl.longB1..text.md5=ZdTWmOl129ZhcXUx6bV7DQ\=\= +ParachuteCfg.lbl.longB1.es.text.changed=20110317062041 +ParachuteCfg.lbl.longB1.es.text.md5=2nnNZj5EQjYR5Ifp9BuIoQ\=\= +ParachuteCfg.lbl.longB1.fr.text.changed=20110317061957 +ParachuteCfg.lbl.longB1.fr.text.md5=k0OLfYlJY7x8bGUIWwdcug\=\= +ParachuteCfg.lbl.longB2..text.changed=20110317061957 +ParachuteCfg.lbl.longB2..text.md5=oQfgl5p9PWQ6DTOH15Ngeg\=\= +ParachuteCfg.lbl.longB2.es.text.changed=20110317062041 +ParachuteCfg.lbl.longB2.es.text.md5=mcXuh/pfQvavJJxXLK431A\=\= +ParachuteCfg.lbl.longB2.fr.text.changed=20110317061957 +ParachuteCfg.lbl.longB2.fr.text.md5=TH7IzUBsWaGydBnj3Ir4dQ\=\= +ParachuteCfg.lbl.longB3..text.changed=20110317061957 +ParachuteCfg.lbl.longB3..text.md5=wAyHhRXJ1wOjpW5UEy+EEA\=\= +ParachuteCfg.lbl.longB3.es.text.changed=20110317062041 +ParachuteCfg.lbl.longB3.es.text.md5=bFwp9vfBrCfmx9Iq9CQDbA\=\= +ParachuteCfg.lbl.longB3.fr.text.changed=20110317061957 +ParachuteCfg.lbl.longB3.fr.text.md5=dgz7whzhi9lzpjFseQ+0Nw\=\= +ParachuteCfg.lbl.plus..text.changed=20110317061957 +ParachuteCfg.lbl.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +ParachuteCfg.lbl.plus.es.text.changed=20110317062041 +ParachuteCfg.lbl.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +ParachuteCfg.lbl.plus.fr.text.changed=20110317061957 +ParachuteCfg.lbl.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +ParachuteCfg.lbl.seconds..text.changed=20110317061957 +ParachuteCfg.lbl.seconds..text.md5=eD6OKeaow+IrqlihlCDrTw\=\= +ParachuteCfg.lbl.seconds.es.text.changed=20110317062041 +ParachuteCfg.lbl.seconds.es.text.md5=UxqeEPFTlrCXqhUT1Oib0A\=\= +ParachuteCfg.lbl.seconds.fr.text.changed=20110317061957 +ParachuteCfg.lbl.seconds.fr.text.md5=PK6Hg67qettTlQ/ZvpMLrg\=\= +ParachuteCfg.tab.General..text.changed=20110317061957 +ParachuteCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +ParachuteCfg.tab.General.es.text.changed=20110317062041 +ParachuteCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +ParachuteCfg.tab.General.fr.text.changed=20110317061957 +ParachuteCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\= +ParachuteCfg.tab.Radialpos..text.changed=20110317061957 +ParachuteCfg.tab.Radialpos..text.md5=N5z4APVe3yv5ut4IxUtg8A\=\= +ParachuteCfg.tab.Radialpos.es.text.changed=20110317062041 +ParachuteCfg.tab.Radialpos.es.text.md5=gAtRIJz+LZxcZML8QNFtSQ\=\= +ParachuteCfg.tab.Radialpos.fr.text.changed=20110317061957 +ParachuteCfg.tab.Radialpos.fr.text.md5=rX8euW6QQ2ZOgQivvVMsOg\=\= +ParachuteCfg.tab.ttip.General..text.changed=20110317061957 +ParachuteCfg.tab.ttip.General..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\= +ParachuteCfg.tab.ttip.General.es.text.changed=20110317062041 +ParachuteCfg.tab.ttip.General.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\= +ParachuteCfg.tab.ttip.General.fr.text.changed=20110317061957 +ParachuteCfg.tab.ttip.General.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\= +ParachuteCfg.tab.ttip.Radialpos..text.changed=20110317061957 +ParachuteCfg.tab.ttip.Radialpos..text.md5=VWjNybFzuNElITpmCwHoJA\=\= +ParachuteCfg.tab.ttip.Radialpos.es.text.changed=20110317062041 +ParachuteCfg.tab.ttip.Radialpos.es.text.md5=bKv0q9SafUyC4RoSTTQTcA\=\= +ParachuteCfg.tab.ttip.Radialpos.fr.text.changed=20110317061957 +ParachuteCfg.tab.ttip.Radialpos.fr.text.md5=JnclFOKoByk5DG7SAVaXbg\=\= +PlotConfiguration.Angleofattack..text.changed=20110317061957 +PlotConfiguration.Angleofattack..text.md5=aVSiRffT9QhlLVh6HiejjA\=\= +PlotConfiguration.Angleofattack.es.text.changed=20110317062041 +PlotConfiguration.Angleofattack.es.text.md5=aVSiRffT9QhlLVh6HiejjA\=\= +PlotConfiguration.Angleofattack.fr.text.changed=20110317061957 +PlotConfiguration.Angleofattack.fr.text.md5=yH3fqV570mzGn3W0eTBdNw\=\= +PlotConfiguration.Dragcoef..text.changed=20110317061957 +PlotConfiguration.Dragcoef..text.md5=IRx3d8x0SSm/r05sHsP5dw\=\= +PlotConfiguration.Dragcoef.es.text.changed=20110317062041 +PlotConfiguration.Dragcoef.es.text.md5=IRx3d8x0SSm/r05sHsP5dw\=\= +PlotConfiguration.Dragcoef.fr.text.changed=20110317061957 +PlotConfiguration.Dragcoef.fr.text.md5=Jcogt7Gqwex5iTpGLKH+MA\=\= +PlotConfiguration.Flightside..text.changed=20110317061957 +PlotConfiguration.Flightside..text.md5=lYO23jd9Bg5jQp1jm50oWA\=\= +PlotConfiguration.Flightside.es.text.changed=20110317062041 +PlotConfiguration.Flightside.es.text.md5=lYO23jd9Bg5jQp1jm50oWA\=\= +PlotConfiguration.Flightside.fr.text.changed=20110317061957 +PlotConfiguration.Flightside.fr.text.md5=lYO23jd9Bg5jQp1jm50oWA\=\= +PlotConfiguration.Rollcharacteristics..text.changed=20110317061957 +PlotConfiguration.Rollcharacteristics..text.md5=V/0iq6J0oItWKmy6+DzIgg\=\= +PlotConfiguration.Rollcharacteristics.es.text.changed=20110317062041 +PlotConfiguration.Rollcharacteristics.es.text.md5=V/0iq6J0oItWKmy6+DzIgg\=\= +PlotConfiguration.Rollcharacteristics.fr.text.changed=20110317061957 +PlotConfiguration.Rollcharacteristics.fr.text.md5=3JQSSZBEp4bYZ8+Wukk5LQ\=\= +PlotConfiguration.Simulationtime..text.changed=20110317061957 +PlotConfiguration.Simulationtime..text.md5=N2c1nZfL1a5YaQKpzZN/2A\=\= +PlotConfiguration.Simulationtime.es.text.changed=20110317062041 +PlotConfiguration.Simulationtime.es.text.md5=N2c1nZfL1a5YaQKpzZN/2A\=\= +PlotConfiguration.Simulationtime.fr.text.changed=20110317061957 +PlotConfiguration.Simulationtime.fr.text.md5=dOyZRsoLLCuKkqmyhk3Fig\=\= +PlotConfiguration.Stability..text.changed=20110317061957 +PlotConfiguration.Stability..text.md5=Jju0QevDcOmA9BAHslsHBg\=\= +PlotConfiguration.Stability.es.text.changed=20110317062041 +PlotConfiguration.Stability.es.text.md5=Jju0QevDcOmA9BAHslsHBg\=\= +PlotConfiguration.Stability.fr.text.changed=20110317061957 +PlotConfiguration.Stability.fr.text.md5=+fBo0rbd2JbfhL3pBtZPpw\=\= +PlotConfiguration.Totalmotion..text.changed=20110317061957 +PlotConfiguration.Totalmotion..text.md5=QyRGUqr9BqxPoi80NWxt1w\=\= +PlotConfiguration.Totalmotion.es.text.changed=20110317062041 +PlotConfiguration.Totalmotion.es.text.md5=QyRGUqr9BqxPoi80NWxt1w\=\= +PlotConfiguration.Totalmotion.fr.text.changed=20110317061957 +PlotConfiguration.Totalmotion.fr.text.md5=2uEdBlS6Lz9xDoRnmFHgJQ\=\= +PlotConfiguration.Verticalmotion..text.changed=20110317061957 +PlotConfiguration.Verticalmotion..text.md5=gdX5RDbNXAAUcV+f6jL5MQ\=\= +PlotConfiguration.Verticalmotion.es.text.changed=20110317062041 +PlotConfiguration.Verticalmotion.es.text.md5=gdX5RDbNXAAUcV+f6jL5MQ\=\= +PlotConfiguration.Verticalmotion.fr.text.changed=20110317061957 +PlotConfiguration.Verticalmotion.fr.text.md5=LAQhZwsH730XL1PKO05stQ\=\= +PlotDialog.Chart.Simulatedflight..text.changed=20110317061957 +PlotDialog.Chart.Simulatedflight..text.md5=9dB8ETg7rbeNkLDb7mWEwA\=\= +PlotDialog.Chart.Simulatedflight.es.text.changed=20110317062041 +PlotDialog.Chart.Simulatedflight.es.text.md5=TuSR9mNnUGttJOUezJGFxg\=\= +PlotDialog.Chart.Simulatedflight.fr.text.changed=20110317061957 +PlotDialog.Chart.Simulatedflight.fr.text.md5=HQ7AglQXkuWzD0phV9dRoQ\=\= +PlotDialog.CheckBox.Showdatapoints..text.changed=20110317061957 +PlotDialog.CheckBox.Showdatapoints..text.md5=om90RTYZLYMttfHdnyARwQ\=\= +PlotDialog.CheckBox.Showdatapoints.es.text.changed=20110317062041 +PlotDialog.CheckBox.Showdatapoints.es.text.md5=9HhbWuZTShaNmp+Mf9PMhg\=\= +PlotDialog.CheckBox.Showdatapoints.fr.text.changed=20110317061957 +PlotDialog.CheckBox.Showdatapoints.fr.text.md5=AgiwXKK+w6+LCJzqZ+YGug\=\= +PlotDialog.lbl.Chart..text.changed=20110317061957 +PlotDialog.lbl.Chart..text.md5=INPMX3sAwhdN0cyoh/zGQA\=\= +PlotDialog.lbl.Chart.es.text.changed=20110317062041 +PlotDialog.lbl.Chart.es.text.md5=XVVcu8Ek59XCGEQjGrDYkg\=\= +PlotDialog.lbl.Chart.fr.text.changed=20110317061957 +PlotDialog.lbl.Chart.fr.text.md5=m6HpoWiZ4Cx+W9suzJ2HlQ\=\= +PlotDialog.title.Flightdataplot..text.changed=20110317061957 +PlotDialog.title.Flightdataplot..text.md5=GrhKtk4CjdjbJgYSOGCQWQ\=\= +PlotDialog.title.Flightdataplot.es.text.changed=20110317062041 +PlotDialog.title.Flightdataplot.es.text.md5=LrzZQ1f84jECz+EA7fYDbQ\=\= +PlotDialog.title.Flightdataplot.fr.text.changed=20110317061957 +PlotDialog.title.Flightdataplot.fr.text.md5=R8yDPEhVVzOK10Tyx2tn7g\=\= +RecoveryDevice.DeployEvent.ALTITUDE..text.changed=20110317061957 +RecoveryDevice.DeployEvent.ALTITUDE..text.md5=cjx6Et6BQ38Qu4xGe/lgRQ\=\= +RecoveryDevice.DeployEvent.ALTITUDE.es.text.changed=20110317062041 +RecoveryDevice.DeployEvent.ALTITUDE.es.text.md5=cjx6Et6BQ38Qu4xGe/lgRQ\=\= +RecoveryDevice.DeployEvent.ALTITUDE.fr.text.changed=20110317061957 +RecoveryDevice.DeployEvent.ALTITUDE.fr.text.md5=QU6GYU7GK3K4of3kTx2Xvw\=\= +RecoveryDevice.DeployEvent.APOGEE..text.changed=20110317061957 +RecoveryDevice.DeployEvent.APOGEE..text.md5=QL6gVpnPUZKBPZU18+Unyg\=\= +RecoveryDevice.DeployEvent.APOGEE.es.text.changed=20110317062041 +RecoveryDevice.DeployEvent.APOGEE.es.text.md5=QL6gVpnPUZKBPZU18+Unyg\=\= +RecoveryDevice.DeployEvent.APOGEE.fr.text.changed=20110317061957 +RecoveryDevice.DeployEvent.APOGEE.fr.text.md5=+AS6Lmac9yoej6GMJZ2KZA\=\= +RecoveryDevice.DeployEvent.EJECTION..text.changed=20110317061957 +RecoveryDevice.DeployEvent.EJECTION..text.md5=mu+I9O2xUsODQl5FtzSz8w\=\= +RecoveryDevice.DeployEvent.EJECTION.es.text.changed=20110317062041 +RecoveryDevice.DeployEvent.EJECTION.es.text.md5=mu+I9O2xUsODQl5FtzSz8w\=\= +RecoveryDevice.DeployEvent.EJECTION.fr.text.changed=20110317061957 +RecoveryDevice.DeployEvent.EJECTION.fr.text.md5=HWulhCqBZXYJKFD9snI40Q\=\= +RecoveryDevice.DeployEvent.LAUNCH..text.changed=20110317061957 +RecoveryDevice.DeployEvent.LAUNCH..text.md5=9+5UZNC9Z4kr1gJCIwjdMw\=\= +RecoveryDevice.DeployEvent.LAUNCH.es.text.changed=20110317062041 +RecoveryDevice.DeployEvent.LAUNCH.es.text.md5=9+5UZNC9Z4kr1gJCIwjdMw\=\= +RecoveryDevice.DeployEvent.LAUNCH.fr.text.changed=20110317061957 +RecoveryDevice.DeployEvent.LAUNCH.fr.text.md5=BMbqIxZQgdiInjg9fouZbw\=\= +RecoveryDevice.DeployEvent.NEVER..text.changed=20110317061957 +RecoveryDevice.DeployEvent.NEVER..text.md5=bns0+lnhvSKbIHiSlW3EHA\=\= +RecoveryDevice.DeployEvent.NEVER.es.text.changed=20110317062041 +RecoveryDevice.DeployEvent.NEVER.es.text.md5=bns0+lnhvSKbIHiSlW3EHA\=\= +RecoveryDevice.DeployEvent.NEVER.fr.text.changed=20110317061957 +RecoveryDevice.DeployEvent.NEVER.fr.text.md5=WQFO0zJ7d4GnWlO+xwF2Nw\=\= +Rocket.compname.Rocket..text.changed=20110317061957 +Rocket.compname.Rocket..text.md5=Fei//ywQyiLaJE2Fsr99lA\=\= +Rocket.compname.Rocket.es.text.changed=20110317062041 +Rocket.compname.Rocket.es.text.md5=Fei//ywQyiLaJE2Fsr99lA\=\= +Rocket.compname.Rocket.fr.text.changed=20110317061957 +Rocket.compname.Rocket.fr.text.md5=8c0NEcH/7TAuZBq4FDvE8g\=\= +Rocket.motorCount.Nomotor..text.changed=20110317061957 +Rocket.motorCount.Nomotor..text.md5=qePC7rg7GMdGpt6dRgEH0A\=\= +Rocket.motorCount.Nomotor.es.text.changed=20110317062041 +Rocket.motorCount.Nomotor.es.text.md5=qePC7rg7GMdGpt6dRgEH0A\=\= +Rocket.motorCount.Nomotor.fr.text.changed=20110317061957 +Rocket.motorCount.Nomotor.fr.text.md5=H3f0W58FUMnTmQ7G//DmTg\=\= +RocketActions.ActBoosterstage..text.changed=20110317061957 +RocketActions.ActBoosterstage..text.md5=4C9W6n1UD6vtpaj+i2Mf9w\=\= +RocketActions.ActBoosterstage.es.text.changed=20110317062041 +RocketActions.ActBoosterstage.es.text.md5=K+ZtGNhPwONlL9H99El8Bw\=\= +RocketActions.ActBoosterstage.fr.text.changed=20110317061957 +RocketActions.ActBoosterstage.fr.text.md5=S0Puz/hgsKvtY3p3HU7nhw\=\= +RocketActions.CopyAct.Copy..text.changed=20110317061957 +RocketActions.CopyAct.Copy..text.md5=X7Y1efyYFpj5fVW/7LIT6g\=\= +RocketActions.CopyAct.Copy.es.text.changed=20110317062041 +RocketActions.CopyAct.Copy.es.text.md5=CBa9ot/1XfUMF6SLuD3Ddw\=\= +RocketActions.CopyAct.Copy.fr.text.changed=20110317061957 +RocketActions.CopyAct.Copy.fr.text.md5=uE4+hfTPBEmO3DKM+KMhDw\=\= +RocketActions.CopyAct.ttip.Copy..text.changed=20110317061957 +RocketActions.CopyAct.ttip.Copy..text.md5=9CLedSaxIfwF4SLzRkMfRg\=\= +RocketActions.CopyAct.ttip.Copy.es.text.changed=20110317062041 +RocketActions.CopyAct.ttip.Copy.es.text.md5=kBo4d0pfIQH8AaPqVmxlGg\=\= +RocketActions.CopyAct.ttip.Copy.fr.text.changed=20110317061957 +RocketActions.CopyAct.ttip.Copy.fr.text.md5=CxXO5K8+ulBUnFRrxhU5hA\=\= +RocketActions.CutAction.Cut..text.changed=20110317061957 +RocketActions.CutAction.Cut..text.md5=6zNNygDjkODT6/UtIFgH1w\=\= +RocketActions.CutAction.Cut.es.text.changed=20110317062041 +RocketActions.CutAction.Cut.es.text.md5=aWgiHXr6Fsd+VJNxrWi7Gw\=\= +RocketActions.CutAction.Cut.fr.text.changed=20110317061957 +RocketActions.CutAction.Cut.fr.text.md5=XK3u18MJpYLFmlet2BJhOw\=\= +RocketActions.CutAction.ttip.Cut..text.changed=20110317061957 +RocketActions.CutAction.ttip.Cut..text.md5=KRVOZml7MfvDMwbCKcDcbw\=\= +RocketActions.CutAction.ttip.Cut.es.text.changed=20110317062041 +RocketActions.CutAction.ttip.Cut.es.text.md5=oUqYEPtlTfKyTI9R2j0gdg\=\= +RocketActions.CutAction.ttip.Cut.fr.text.changed=20110317061957 +RocketActions.CutAction.ttip.Cut.fr.text.md5=iRpm4akNmj1wC63yWXJUBQ\=\= +RocketActions.DelAct.Delete..text.changed=20110317061957 +RocketActions.DelAct.Delete..text.md5=m/dkKMcBhVIw5dFfkDDgkA\=\= +RocketActions.DelAct.Delete.es.text.changed=20110317062041 +RocketActions.DelAct.Delete.es.text.md5=qW8w8KI9Nx6TExpCCjKBgA\=\= +RocketActions.DelAct.Delete.fr.text.changed=20110317061957 +RocketActions.DelAct.Delete.fr.text.md5=hxcoU0FFPmPWYDCXJSPLBw\=\= +RocketActions.DelAct.ttip.Delete..text.changed=20110317061957 +RocketActions.DelAct.ttip.Delete..text.md5=5VPJobDDVwk0DRtgVZK5uQ\=\= +RocketActions.DelAct.ttip.Delete.es.text.changed=20110317062041 +RocketActions.DelAct.ttip.Delete.es.text.md5=ispNFDoanKmvhb1Qz1kGvA\=\= +RocketActions.DelAct.ttip.Delete.fr.text.changed=20110317061957 +RocketActions.DelAct.ttip.Delete.fr.text.md5=m4SuT3Qy7R2bHU+MEUWGqA\=\= +RocketActions.DelCompAct.Delete..text.changed=20110317061957 +RocketActions.DelCompAct.Delete..text.md5=8qbEmPuQ7jRdmX+Ij847GA\=\= +RocketActions.DelCompAct.Delete.es.text.changed=20110317062041 +RocketActions.DelCompAct.Delete.es.text.md5=qW8w8KI9Nx6TExpCCjKBgA\=\= +RocketActions.DelCompAct.Delete.fr.text.changed=20110317061957 +RocketActions.DelCompAct.Delete.fr.text.md5=HppJ6h38NCxh/nWp6557Iw\=\= +RocketActions.DelCompAct.ttip.Delete..text.changed=20110317061957 +RocketActions.DelCompAct.ttip.Delete..text.md5=vBPQbeJGOqbkX50gnqUepw\=\= +RocketActions.DelCompAct.ttip.Delete.es.text.changed=20110317062041 +RocketActions.DelCompAct.ttip.Delete.es.text.md5=1sCvCNdxCNekd938s9yvoQ\=\= +RocketActions.DelCompAct.ttip.Delete.fr.text.changed=20110317061957 +RocketActions.DelCompAct.ttip.Delete.fr.text.md5=Y+/LvqB6MlSe3Kchs6MOYA\=\= +RocketActions.DelSimuAct.Delete..text.changed=20110317061957 +RocketActions.DelSimuAct.Delete..text.md5=8qbEmPuQ7jRdmX+Ij847GA\=\= +RocketActions.DelSimuAct.Delete.es.text.changed=20110317062041 +RocketActions.DelSimuAct.Delete.es.text.md5=qW8w8KI9Nx6TExpCCjKBgA\=\= +RocketActions.DelSimuAct.Delete.fr.text.changed=20110317061957 +RocketActions.DelSimuAct.Delete.fr.text.md5=HppJ6h38NCxh/nWp6557Iw\=\= +RocketActions.DelSimuAct.ttip.Delete..text.changed=20110317061957 +RocketActions.DelSimuAct.ttip.Delete..text.md5=azLkE0/2hlp/CrW8sc1fUg\=\= +RocketActions.DelSimuAct.ttip.Delete.es.text.changed=20110317062041 +RocketActions.DelSimuAct.ttip.Delete.es.text.md5=fUppntn2Oa013mKphlO5uA\=\= +RocketActions.DelSimuAct.ttip.Delete.fr.text.changed=20110317061957 +RocketActions.DelSimuAct.ttip.Delete.fr.text.md5=NFhOA98BNuHvQd9zcTGmGA\=\= +RocketActions.EditAct.Edit..text.changed=20110317061957 +RocketActions.EditAct.Edit..text.md5=fc4SIASWnVauLgJFy3VNNQ\=\= +RocketActions.EditAct.Edit.es.text.changed=20110317062041 +RocketActions.EditAct.Edit.es.text.md5=95bHNQIFl280Jr7ZhHm5ag\=\= +RocketActions.EditAct.Edit.fr.text.changed=20110317061957 +RocketActions.EditAct.Edit.fr.text.md5=iYwHnS5ipLGXHfutnYYIOA\=\= +RocketActions.EditAct.ttip.Edit..text.changed=20110317061957 +RocketActions.EditAct.ttip.Edit..text.md5=ohe8PUux3nIwTfIa3yKqrA\=\= +RocketActions.EditAct.ttip.Edit.es.text.changed=20110317062041 +RocketActions.EditAct.ttip.Edit.es.text.md5=dq9S6wtVgKXDhzsg686nrQ\=\= +RocketActions.EditAct.ttip.Edit.fr.text.changed=20110317061957 +RocketActions.EditAct.ttip.Edit.fr.text.md5=mhT62Mp8QQTDq8sC7W2J/w\=\= +RocketActions.MoveDownAct.Movedown..text.changed=20110317061957 +RocketActions.MoveDownAct.Movedown..text.md5=3Z8Mfhuzt0m9Qj41RLSo4w\=\= +RocketActions.MoveDownAct.Movedown.es.text.changed=20110317062041 +RocketActions.MoveDownAct.Movedown.es.text.md5=TdT6Njrvfc0kpFb4B21x1Q\=\= +RocketActions.MoveDownAct.Movedown.fr.text.changed=20110317061957 +RocketActions.MoveDownAct.Movedown.fr.text.md5=Ps8Ld+kYrQ/yPyPsV/4qHA\=\= +RocketActions.MoveDownAct.ttip.Movedown..text.changed=20110317061957 +RocketActions.MoveDownAct.ttip.Movedown..text.md5=b4PcYqmMAJ35D7a7SIDlTw\=\= +RocketActions.MoveDownAct.ttip.Movedown.es.text.changed=20110317062041 +RocketActions.MoveDownAct.ttip.Movedown.es.text.md5=jevkL0m9vVMxtZMsY+o6QQ\=\= +RocketActions.MoveDownAct.ttip.Movedown.fr.text.changed=20110317061957 +RocketActions.MoveDownAct.ttip.Movedown.fr.text.md5=irUE6+lWsiaRLYl4Sk+ClA\=\= +RocketActions.MoveUpAct.Moveup..text.changed=20110317061957 +RocketActions.MoveUpAct.Moveup..text.md5=93r3aV9xMjgI+bbieVzehg\=\= +RocketActions.MoveUpAct.Moveup.es.text.changed=20110317062041 +RocketActions.MoveUpAct.Moveup.es.text.md5=A1zfbcRgZZlaQys8bQFF9w\=\= +RocketActions.MoveUpAct.Moveup.fr.text.changed=20110317061957 +RocketActions.MoveUpAct.Moveup.fr.text.md5=3wRuk7X8zSbDusfaC3nkIg\=\= +RocketActions.MoveUpAct.ttip.Moveup..text.changed=20110317061957 +RocketActions.MoveUpAct.ttip.Moveup..text.md5=oI7JDwCLKMX6b51V2exipg\=\= +RocketActions.MoveUpAct.ttip.Moveup.es.text.changed=20110317062041 +RocketActions.MoveUpAct.ttip.Moveup.es.text.md5=o6Myy/thJmigXQuOvvdZdg\=\= +RocketActions.MoveUpAct.ttip.Moveup.fr.text.changed=20110317061957 +RocketActions.MoveUpAct.ttip.Moveup.fr.text.md5=MLZ7jXpENYXKW80C9OWy8w\=\= +RocketActions.NewStageAct.Newstage..text.changed=20110317061957 +RocketActions.NewStageAct.Newstage..text.md5=BcwLOTia7BjY1rUzj44qbg\=\= +RocketActions.NewStageAct.Newstage.es.text.changed=20110317062041 +RocketActions.NewStageAct.Newstage.es.text.md5=uZTQtGKbhbJU/SZ4OKVsRw\=\= +RocketActions.NewStageAct.Newstage.fr.text.changed=20110317061957 +RocketActions.NewStageAct.Newstage.fr.text.md5=RwkxfKUGXIXAjF9c3z6icQ\=\= +RocketActions.NewStageAct.ttip.Newstage..text.changed=20110317061957 +RocketActions.NewStageAct.ttip.Newstage..text.md5=PLyTO1pYiJiZoZjOBUgP6A\=\= +RocketActions.NewStageAct.ttip.Newstage.es.text.changed=20110317062041 +RocketActions.NewStageAct.ttip.Newstage.es.text.md5=tlgdeblLPC1swHGN5C3OlA\=\= +RocketActions.NewStageAct.ttip.Newstage.fr.text.changed=20110317061957 +RocketActions.NewStageAct.ttip.Newstage.fr.text.md5=gyL+5/6RSxOJxONaCxwCLA\=\= +RocketActions.PasteAct.Paste..text.changed=20110317061957 +RocketActions.PasteAct.Paste..text.md5=NrtlWWltyRJJhq4SBRWYTw\=\= +RocketActions.PasteAct.Paste.es.text.changed=20110317062041 +RocketActions.PasteAct.Paste.es.text.md5=EWZL2wlyml7l3JQTGpeT2g\=\= +RocketActions.PasteAct.Paste.fr.text.changed=20110317061957 +RocketActions.PasteAct.Paste.fr.text.md5=IQgJsyd+wJkZOJWAdYLDZw\=\= +RocketActions.PasteAct.ttip.Paste..text.changed=20110317061957 +RocketActions.PasteAct.ttip.Paste..text.md5=Cfl/LNPfAVM6k6kksN+KfA\=\= +RocketActions.PasteAct.ttip.Paste.es.text.changed=20110317062041 +RocketActions.PasteAct.ttip.Paste.es.text.md5=/irCAaptvqJ3wse3+78mWg\=\= +RocketActions.PasteAct.ttip.Paste.fr.text.changed=20110317061957 +RocketActions.PasteAct.ttip.Paste.fr.text.md5=0uufTYvUedPwFV7bURYLyw\=\= +RocketActions.checkbox.Donotaskmeagain..text.changed=20110317061957 +RocketActions.checkbox.Donotaskmeagain..text.md5=xMeqCOFI2ELVUxa8B2WjDA\=\= +RocketActions.checkbox.Donotaskmeagain.es.text.changed=20110317062041 +RocketActions.checkbox.Donotaskmeagain.es.text.md5=HJ2HbOIonh+Cr/zcNkHUpw\=\= +RocketActions.checkbox.Donotaskmeagain.fr.text.changed=20110317061957 +RocketActions.checkbox.Donotaskmeagain.fr.text.md5=V49H2SSvKhMBpOVtwMoaIA\=\= +RocketActions.lbl.Youcanchangedefop..text.changed=20110317061957 +RocketActions.lbl.Youcanchangedefop..text.md5=cYQgfnoeRCK2h69YzRSoxw\=\= +RocketActions.lbl.Youcanchangedefop.es.text.changed=20110317062041 +RocketActions.lbl.Youcanchangedefop.es.text.md5=EQsZr/4U/ssrzU9Un2mUxQ\=\= +RocketActions.lbl.Youcanchangedefop.fr.text.changed=20110317061957 +RocketActions.lbl.Youcanchangedefop.fr.text.md5=Eh0bpqvlxuZrT/bnzq9zpw\=\= +RocketActions.showConfirmDialog.lbl1..text.changed=20110317061957 +RocketActions.showConfirmDialog.lbl1..text.md5=DNJ2o5oEGUaGa7yIHcFAiw\=\= +RocketActions.showConfirmDialog.lbl1.es.text.changed=20110317062041 +RocketActions.showConfirmDialog.lbl1.es.text.md5=JJiDlPhnaQrc0nPucCJvBw\=\= +RocketActions.showConfirmDialog.lbl1.fr.text.changed=20110317061957 +RocketActions.showConfirmDialog.lbl1.fr.text.md5=EsL/WDLd3+IrLAmGoMbGRQ\=\= +RocketActions.showConfirmDialog.lbl2..text.changed=20110317061957 +RocketActions.showConfirmDialog.lbl2..text.md5=82qtdSO4rsRCe24wWOe1UQ\=\= +RocketActions.showConfirmDialog.lbl2.es.text.changed=20110317062041 +RocketActions.showConfirmDialog.lbl2.es.text.md5=JJcmRbw0W63auwokuAIrBg\=\= +RocketActions.showConfirmDialog.lbl2.fr.text.changed=20110317061957 +RocketActions.showConfirmDialog.lbl2.fr.text.md5=dMTK4JEtD9GD3Y7btp7rVg\=\= +RocketActions.showConfirmDialog.title..text.changed=20110317061957 +RocketActions.showConfirmDialog.title..text.md5=E2ccIhH6w7qOFhOsd4212A\=\= +RocketActions.showConfirmDialog.title.es.text.changed=20110317062041 +RocketActions.showConfirmDialog.title.es.text.md5=P0q7OT50d8WsSHOfb98XCg\=\= +RocketActions.showConfirmDialog.title.fr.text.changed=20110317061957 +RocketActions.showConfirmDialog.title.fr.text.md5=DAv7od/Vxf0J1c/DIufXOA\=\= +RocketCfg.lbl.Comments..text.changed=20110317061957 +RocketCfg.lbl.Comments..text.md5=wUoMqVUKizEdv3rLs+bKxA\=\= +RocketCfg.lbl.Comments.es.text.changed=20110317062041 +RocketCfg.lbl.Comments.es.text.md5=aMuYNrluHtxC66+qW1qbug\=\= +RocketCfg.lbl.Comments.fr.text.changed=20110317061957 +RocketCfg.lbl.Comments.fr.text.md5=VPjJ1g+X0euD/x+bKyMw/w\=\= +RocketCfg.lbl.Designer..text.changed=20110317061957 +RocketCfg.lbl.Designer..text.md5=8bZ/UdklQjm1Oe9ZrtgzdQ\=\= +RocketCfg.lbl.Designer.es.text.changed=20110317062041 +RocketCfg.lbl.Designer.es.text.md5=u1oQ6HGtnYprhdnbcLWYLA\=\= +RocketCfg.lbl.Designer.fr.text.changed=20110317061957 +RocketCfg.lbl.Designer.fr.text.md5=/Z9QY35A6Pk84u8sKJ5fbQ\=\= +RocketCfg.lbl.Designname..text.changed=20110317061957 +RocketCfg.lbl.Designname..text.md5=XCvmR6fg8Sxe7sRoHKE/Tg\=\= +RocketCfg.lbl.Designname.es.text.changed=20110317062041 +RocketCfg.lbl.Designname.es.text.md5=9N7puzbo3v/H8NsEwQDMGg\=\= +RocketCfg.lbl.Designname.fr.text.changed=20110317061957 +RocketCfg.lbl.Designname.fr.text.md5=xegaanYiiC7DFD9Ybxt3/w\=\= +RocketCfg.lbl.Material..text.changed=20110317061957 +RocketCfg.lbl.Material..text.md5=1zibzLtopzoHLVvzqb0tkw\=\= +RocketCfg.lbl.Material.es.text.changed=20110317062041 +RocketCfg.lbl.Material.es.text.md5=1zibzLtopzoHLVvzqb0tkw\=\= +RocketCfg.lbl.Material.fr.text.changed=20110317061957 +RocketCfg.lbl.Material.fr.text.md5=FtyLJTt+AZUazbtIKrUeAQ\=\= +RocketCfg.lbl.Revisionhistory..text.changed=20110317061957 +RocketCfg.lbl.Revisionhistory..text.md5=OYkrcBuOjzPOsrvHKyqT6Q\=\= +RocketCfg.lbl.Revisionhistory.es.text.changed=20110317062041 +RocketCfg.lbl.Revisionhistory.es.text.md5=XXCPjqjLeS8h2PGJlwSegA\=\= +RocketCfg.lbl.Revisionhistory.fr.text.changed=20110317061957 +RocketCfg.lbl.Revisionhistory.fr.text.md5=uHG4Pa+w2gzxxH+rCdRP/w\=\= +RocketCompCfg.border.Foreshoulder..text.changed=20110317061957 +RocketCompCfg.border.Foreshoulder..text.md5=e9ckYlSGPWGznNo20lto7A\=\= +RocketCompCfg.border.Foreshoulder.es.text.changed=20110317062041 +RocketCompCfg.border.Foreshoulder.es.text.md5=e9ckYlSGPWGznNo20lto7A\=\= +RocketCompCfg.border.Foreshoulder.fr.text.changed=20110317061957 +RocketCompCfg.border.Foreshoulder.fr.text.md5=e9ckYlSGPWGznNo20lto7A\=\= +RocketCompCfg.but.Saveasdefstyle..text.changed=20110317061957 +RocketCompCfg.but.Saveasdefstyle..text.md5=vFM6dSiFdVWcHJdgAQlUqQ\=\= +RocketCompCfg.but.Saveasdefstyle.es.text.changed=20110317062041 +RocketCompCfg.but.Saveasdefstyle.es.text.md5=4LsxmqKpUb4KWzrhJdML3Q\=\= +RocketCompCfg.but.Saveasdefstyle.fr.text.changed=20110317061957 +RocketCompCfg.but.Saveasdefstyle.fr.text.md5=oQY9RyRksWbgxdhdyjzT5w\=\= +RocketCompCfg.but.Setforall..text.changed=20110317061957 +RocketCompCfg.but.Setforall..text.md5=s7Nbmd0He4q90hHVbiVpNQ\=\= +RocketCompCfg.but.Setforall.es.text.changed=20110317062041 +RocketCompCfg.but.Setforall.es.text.md5=sfbL+fCMnxbv0n0bCZYQQw\=\= +RocketCompCfg.but.Setforall.fr.text.changed=20110317061957 +RocketCompCfg.but.Setforall.fr.text.md5=ryfo8m4Ynny7KYX8qok9eg\=\= +RocketCompCfg.but.ttip.Setforall..text.changed=20110317061957 +RocketCompCfg.but.ttip.Setforall..text.md5=jvpRbG4EHJLx9A/gzWkP8Q\=\= +RocketCompCfg.but.ttip.Setforall.es.text.changed=20110317062041 +RocketCompCfg.but.ttip.Setforall.es.text.md5=vTCm7qt4teVUS3/1i7EPVA\=\= +RocketCompCfg.but.ttip.Setforall.fr.text.changed=20110317061957 +RocketCompCfg.but.ttip.Setforall.fr.text.md5=UtojL6usyjeSNCJ6W4T+kg\=\= +RocketCompCfg.checkbox.Endcapped..text.changed=20110317061957 +RocketCompCfg.checkbox.Endcapped..text.md5=INUOqJrYiV5HWmFx1sEG/w\=\= +RocketCompCfg.checkbox.Endcapped.es.text.changed=20110317062041 +RocketCompCfg.checkbox.Endcapped.es.text.md5=TuC5GqPlrkbxItMfxN6LBQ\=\= +RocketCompCfg.checkbox.Endcapped.fr.text.changed=20110317061957 +RocketCompCfg.checkbox.Endcapped.fr.text.md5=1KldF9/h+0P9HzII3qI7HA\=\= +RocketCompCfg.checkbox.Overridecenterofgrav..text.changed=20110317061957 +RocketCompCfg.checkbox.Overridecenterofgrav..text.md5=30OLTQtKlbW1pDw/RILCGA\=\= +RocketCompCfg.checkbox.Overridecenterofgrav.es.text.changed=20110317062041 +RocketCompCfg.checkbox.Overridecenterofgrav.es.text.md5=gF0gdmxLl/oYxUNUXL2iXA\=\= +RocketCompCfg.checkbox.Overridecenterofgrav.fr.text.changed=20110317061957 +RocketCompCfg.checkbox.Overridecenterofgrav.fr.text.md5=7dsEk9um+RQD+TWW79ng8A\=\= +RocketCompCfg.checkbox.Overridemass..text.changed=20110317061957 +RocketCompCfg.checkbox.Overridemass..text.md5=jh5Q384y7gH9KPjigx9lCQ\=\= +RocketCompCfg.checkbox.Overridemass.es.text.changed=20110317062041 +RocketCompCfg.checkbox.Overridemass.es.text.md5=q/aEicQQtRbAXWcBnUOXhw\=\= +RocketCompCfg.checkbox.Overridemass.fr.text.changed=20110317061957 +RocketCompCfg.checkbox.Overridemass.fr.text.md5=yT8qxyklOhDfc4hfT+PM3Q\=\= +RocketCompCfg.checkbox.OverridemassandCG..text.changed=20110317061957 +RocketCompCfg.checkbox.OverridemassandCG..text.md5=8MhvGH6XnagOmVw5+fG2Nw\=\= +RocketCompCfg.checkbox.OverridemassandCG.es.text.changed=20110317062041 +RocketCompCfg.checkbox.OverridemassandCG.es.text.md5=hLSQCUam8ihwRXJdKacy3w\=\= +RocketCompCfg.checkbox.OverridemassandCG.fr.text.changed=20110317061957 +RocketCompCfg.checkbox.OverridemassandCG.fr.text.md5=C/qvCL79VNjJ6OxTt+/tHg\=\= +RocketCompCfg.checkbox.Usedefaultcolor..text.changed=20110317061957 +RocketCompCfg.checkbox.Usedefaultcolor..text.md5=zJsIoTdD/5Rh0HmM7++a/A\=\= +RocketCompCfg.checkbox.Usedefaultcolor.es.text.changed=20110317062041 +RocketCompCfg.checkbox.Usedefaultcolor.es.text.md5=v6kTjNET+ZDHU4GAkXU5eg\=\= +RocketCompCfg.checkbox.Usedefaultcolor.fr.text.changed=20110317061957 +RocketCompCfg.checkbox.Usedefaultcolor.fr.text.md5=ttvqkrXqXPOhTBWvAdlRgg\=\= +RocketCompCfg.combo.ttip.componentmaterialaffects..text.changed=20110317061957 +RocketCompCfg.combo.ttip.componentmaterialaffects..text.md5=DAgqIeIiYrmv0taT33oRxg\=\= +RocketCompCfg.combo.ttip.componentmaterialaffects.es.text.changed=20110317062041 +RocketCompCfg.combo.ttip.componentmaterialaffects.es.text.md5=X/hW308rVQ/o6fhdoswWkg\=\= +RocketCompCfg.combo.ttip.componentmaterialaffects.fr.text.changed=20110317061957 +RocketCompCfg.combo.ttip.componentmaterialaffects.fr.text.md5=CZAe/chmN10dE01suemImw\=\= +RocketCompCfg.lbl.Choosecolor..text.changed=20110317061957 +RocketCompCfg.lbl.Choosecolor..text.md5=YqOrFslH/yGzRZavn7Kcuw\=\= +RocketCompCfg.lbl.Choosecolor.es.text.changed=20110317062041 +RocketCompCfg.lbl.Choosecolor.es.text.md5=pHOww47HQnxk+UlJYCq4Mw\=\= +RocketCompCfg.lbl.Choosecolor.fr.text.changed=20110317061957 +RocketCompCfg.lbl.Choosecolor.fr.text.md5=J5q4cznb4+RsIxhiJSoVnQ\=\= +RocketCompCfg.lbl.Commentsonthe..text.changed=20110317061957 +RocketCompCfg.lbl.Commentsonthe..text.md5=Nq8c1cn9hUBfSdtA6TZKnQ\=\= +RocketCompCfg.lbl.Commentsonthe.es.text.changed=20110317062041 +RocketCompCfg.lbl.Commentsonthe.es.text.md5=vaZ20GKwetiBruW+WALc3A\=\= +RocketCompCfg.lbl.Commentsonthe.fr.text.changed=20110317061957 +RocketCompCfg.lbl.Commentsonthe.fr.text.md5=SJrX7GPIZVr/xN0MmlkPxw\=\= +RocketCompCfg.lbl.Complinestyle..text.changed=20110317061957 +RocketCompCfg.lbl.Complinestyle..text.md5=zx0i+qwXvV8I3abZ8rIlkQ\=\= +RocketCompCfg.lbl.Complinestyle.es.text.changed=20110317062041 +RocketCompCfg.lbl.Complinestyle.es.text.md5=Oaslr+rOmoRefzozggMnXw\=\= +RocketCompCfg.lbl.Complinestyle.fr.text.changed=20110317061957 +RocketCompCfg.lbl.Complinestyle.fr.text.md5=/QipSYN6sBDzHhx57pSo2A\=\= +RocketCompCfg.lbl.Componentcolor..text.changed=20110317061957 +RocketCompCfg.lbl.Componentcolor..text.md5=Gfuj/kODS+V63RnkNMOMXg\=\= +RocketCompCfg.lbl.Componentcolor.es.text.changed=20110317062041 +RocketCompCfg.lbl.Componentcolor.es.text.md5=4khp2aobSnQpICgr8sOlCA\=\= +RocketCompCfg.lbl.Componentcolor.fr.text.changed=20110317061957 +RocketCompCfg.lbl.Componentcolor.fr.text.md5=wU5SDTFqGnzZzK4bMb7ueg\=\= +RocketCompCfg.lbl.Componentfinish..text.changed=20110317061957 +RocketCompCfg.lbl.Componentfinish..text.md5=H9Rb/K2XhKtM+9Qn0Aj+qw\=\= +RocketCompCfg.lbl.Componentfinish.es.text.changed=20110317062041 +RocketCompCfg.lbl.Componentfinish.es.text.md5=9iol545Q03f4Xcn+iopjZg\=\= +RocketCompCfg.lbl.Componentfinish.fr.text.changed=20110317061957 +RocketCompCfg.lbl.Componentfinish.fr.text.md5=dX0YoUhQ8+7YOCnni2g18A\=\= +RocketCompCfg.lbl.Componentmass..text.changed=20110317061957 +RocketCompCfg.lbl.Componentmass..text.md5=qoE/osmW9zCvQLf6qlBpkQ\=\= +RocketCompCfg.lbl.Componentmass.es.text.changed=20110317062041 +RocketCompCfg.lbl.Componentmass.es.text.md5=TZaCyu5kICb2x5QhESUKGQ\=\= +RocketCompCfg.lbl.Componentmass.fr.text.changed=20110317061957 +RocketCompCfg.lbl.Componentmass.fr.text.md5=Im2fGQHT+X+UBRzljS8kLw\=\= +RocketCompCfg.lbl.Componentmaterial..text.changed=20110317061957 +RocketCompCfg.lbl.Componentmaterial..text.md5=lCQ+jFOnXCMrT3fQ1hmm2w\=\= +RocketCompCfg.lbl.Componentmaterial.es.text.changed=20110317062041 +RocketCompCfg.lbl.Componentmaterial.es.text.md5=VE6vkn7meR8SWAfalNErUw\=\= +RocketCompCfg.lbl.Componentmaterial.fr.text.changed=20110317061957 +RocketCompCfg.lbl.Componentmaterial.fr.text.md5=zMCw6C451k/6RldZdGYWsA\=\= +RocketCompCfg.lbl.Componentname..text.changed=20110317061957 +RocketCompCfg.lbl.Componentname..text.md5=9QgqWnsyly40WEBzqSpBQA\=\= +RocketCompCfg.lbl.Componentname.es.text.changed=20110317062041 +RocketCompCfg.lbl.Componentname.es.text.md5=PNKCMp07e+T5ihb6jNbKRw\=\= +RocketCompCfg.lbl.Componentname.fr.text.changed=20110317061957 +RocketCompCfg.lbl.Componentname.fr.text.md5=yOylQjU+VGgmr7R/izRQVw\=\= +RocketCompCfg.lbl.Diameter..text.changed=20110317061957 +RocketCompCfg.lbl.Diameter..text.md5=uh4JG3VOop6684+vupv7wg\=\= +RocketCompCfg.lbl.Diameter.es.text.changed=20110317062041 +RocketCompCfg.lbl.Diameter.es.text.md5=p0rJqnplUaq6vzp71r8kxw\=\= +RocketCompCfg.lbl.Diameter.fr.text.changed=20110317061957 +RocketCompCfg.lbl.Diameter.fr.text.md5=krQJbrSG9ksshs17OtWyJg\=\= +RocketCompCfg.lbl.Figurestyle..text.changed=20110317061957 +RocketCompCfg.lbl.Figurestyle..text.md5=fWB92XOqSUFlfFhqO6qmJA\=\= +RocketCompCfg.lbl.Figurestyle.es.text.changed=20110317062041 +RocketCompCfg.lbl.Figurestyle.es.text.md5=0PIyBSDV6/TRiqIqYJIRSA\=\= +RocketCompCfg.lbl.Figurestyle.fr.text.changed=20110317061957 +RocketCompCfg.lbl.Figurestyle.fr.text.md5=jNBJojLdQtamdJiepr6psw\=\= +RocketCompCfg.lbl.Length..text.changed=20110317061957 +RocketCompCfg.lbl.Length..text.md5=ZLM0xpJRtyw1DiXkYrVEKQ\=\= +RocketCompCfg.lbl.Length.es.text.changed=20110317062041 +RocketCompCfg.lbl.Length.es.text.md5=ycRTbjDcF+h0kJEC9Al45A\=\= +RocketCompCfg.lbl.Length.fr.text.changed=20110317061957 +RocketCompCfg.lbl.Length.fr.text.md5=+LpNY6MXcK9YQIbuQnHwPA\=\= +RocketCompCfg.lbl.Mass..text.changed=20110317061957 +RocketCompCfg.lbl.Mass..text.md5=uhJztJZI9YFN9J6bF8Trng\=\= +RocketCompCfg.lbl.Mass.es.text.changed=20110317062041 +RocketCompCfg.lbl.Mass.es.text.md5=GV/FcctiBOU+rrzQkQf+bQ\=\= +RocketCompCfg.lbl.Mass.fr.text.changed=20110317061957 +RocketCompCfg.lbl.Mass.fr.text.md5=pM5yVmT3KWHb26EEkoINoQ\=\= +RocketCompCfg.lbl.Overridemassorcenter..text.changed=20110317061957 +RocketCompCfg.lbl.Overridemassorcenter..text.md5=ejuTuPJMAXHZucQZzIUpoA\=\= +RocketCompCfg.lbl.Overridemassorcenter.es.text.changed=20110317062041 +RocketCompCfg.lbl.Overridemassorcenter.es.text.md5=M5CMNa9A3Mv7spi4XwEHvQ\=\= +RocketCompCfg.lbl.Overridemassorcenter.fr.text.changed=20110317061957 +RocketCompCfg.lbl.Overridemassorcenter.fr.text.md5=iJw8eRtDOWXlnjpy+zxsUg\=\= +RocketCompCfg.lbl.Thickness..text.changed=20110317061957 +RocketCompCfg.lbl.Thickness..text.md5=De6os9fTRKpjp0AF4eicGg\=\= +RocketCompCfg.lbl.Thickness.es.text.changed=20110317062041 +RocketCompCfg.lbl.Thickness.es.text.md5=xJjWfhrb7lNPRDbDLxB+9A\=\= +RocketCompCfg.lbl.Thickness.fr.text.changed=20110317061957 +RocketCompCfg.lbl.Thickness.fr.text.md5=wQJDV7ZNGPpFMM+AiyCNxg\=\= +RocketCompCfg.lbl.longA1..text.changed=20110317061957 +RocketCompCfg.lbl.longA1..text.md5=ZE4zy/4sbM/ESaOTUAsOxw\=\= +RocketCompCfg.lbl.longA1.es.text.changed=20110317062041 +RocketCompCfg.lbl.longA1.es.text.md5=jiJuBkzhNPzNalBtErxJXw\=\= +RocketCompCfg.lbl.longA1.fr.text.changed=20110317061957 +RocketCompCfg.lbl.longA1.fr.text.md5=Wn0KPcyAydU/YVda1dRZow\=\= +RocketCompCfg.lbl.longA2..text.changed=20110317061957 +RocketCompCfg.lbl.longA2..text.md5=ia6bgj1XXTtStu6VbE5rXg\=\= +RocketCompCfg.lbl.longA2.es.text.changed=20110317062041 +RocketCompCfg.lbl.longA2.es.text.md5=SkvNHix9XAKXQYRK0TKTMQ\=\= +RocketCompCfg.lbl.longA2.fr.text.changed=20110317061957 +RocketCompCfg.lbl.longA2.fr.text.md5=y1FE0r5LWlsqKijUoiTYMQ\=\= +RocketCompCfg.lbl.longB1..text.changed=20110317061957 +RocketCompCfg.lbl.longB1..text.md5=+l4YjgWmLaIIiacAX4J7vw\=\= +RocketCompCfg.lbl.longB1.es.text.changed=20110317062041 +RocketCompCfg.lbl.longB1.es.text.md5=xV/od2RDiA+hc78uZ7bVBA\=\= +RocketCompCfg.lbl.longB1.fr.text.changed=20110317061957 +RocketCompCfg.lbl.longB1.fr.text.md5=qLkQ7necm+nmqd/eb0H7Gw\=\= +RocketCompCfg.lbl.longB2..text.changed=20110317061957 +RocketCompCfg.lbl.longB2..text.md5=6MQUSadzob+54jbqPSFToQ\=\= +RocketCompCfg.lbl.longB2.es.text.changed=20110317062041 +RocketCompCfg.lbl.longB2.es.text.md5=dZtX/7ChoczKA5b7+y/LLg\=\= +RocketCompCfg.lbl.longB2.fr.text.changed=20110317061957 +RocketCompCfg.lbl.longB2.fr.text.md5=fJcf9pBmYFZxdSo9iXS2CQ\=\= +RocketCompCfg.lbl.overriddenby..text.changed=20110317061957 +RocketCompCfg.lbl.overriddenby..text.md5=/ZzjN3H4+jMcirwmSI3hww\=\= +RocketCompCfg.lbl.overriddenby.es.text.changed=20110317062041 +RocketCompCfg.lbl.overriddenby.es.text.md5=3K3gVaPAVa/b+pPToaehzA\=\= +RocketCompCfg.lbl.overriddenby.fr.text.changed=20110317061957 +RocketCompCfg.lbl.overriddenby.fr.text.md5=4PdRvPkIR8TNyeGTo9b73A\=\= +RocketCompCfg.lbl.overriddento..text.changed=20110317061957 +RocketCompCfg.lbl.overriddento..text.md5=phNQKbBdYzz8+JUhVf5X/A\=\= +RocketCompCfg.lbl.overriddento.es.text.changed=20110317062041 +RocketCompCfg.lbl.overriddento.es.text.md5=FRekWP4MYZafNc8JXYDCRg\=\= +RocketCompCfg.lbl.overriddento.fr.text.changed=20110317061957 +RocketCompCfg.lbl.overriddento.fr.text.md5=Rql/Xyx6bQyxjTSo1L8Abw\=\= +RocketCompCfg.lbl.ttip.componentmaterialaffects..text.changed=20110317061957 +RocketCompCfg.lbl.ttip.componentmaterialaffects..text.md5=DAgqIeIiYrmv0taT33oRxg\=\= +RocketCompCfg.lbl.ttip.componentmaterialaffects.es.text.changed=20110317062041 +RocketCompCfg.lbl.ttip.componentmaterialaffects.es.text.md5=X/hW308rVQ/o6fhdoswWkg\=\= +RocketCompCfg.lbl.ttip.componentmaterialaffects.fr.text.changed=20110317061957 +RocketCompCfg.lbl.ttip.componentmaterialaffects.fr.text.md5=CZAe/chmN10dE01suemImw\=\= +RocketCompCfg.tab.Comment..text.changed=20110317061957 +RocketCompCfg.tab.Comment..text.md5=C+hAaVHN/agvAPeTKM9O/A\=\= +RocketCompCfg.tab.Comment.es.text.changed=20110317062041 +RocketCompCfg.tab.Comment.es.text.md5=MARZIhY9h9rxlNm8sqqKxA\=\= +RocketCompCfg.tab.Comment.fr.text.changed=20110317061957 +RocketCompCfg.tab.Comment.fr.text.md5=XCT7v7OS5WiCW7E1BhuhkQ\=\= +RocketCompCfg.tab.Figstyleopt..text.changed=20110317061957 +RocketCompCfg.tab.Figstyleopt..text.md5=4TSyk6oIMIClGXLsXGBVcA\=\= +RocketCompCfg.tab.Figstyleopt.es.text.changed=20110317062041 +RocketCompCfg.tab.Figstyleopt.es.text.md5=P5f19cbyQCGxQ2Tl6JBhuQ\=\= +RocketCompCfg.tab.Figstyleopt.fr.text.changed=20110317061957 +RocketCompCfg.tab.Figstyleopt.fr.text.md5=VtJ78jxYzWvwdTe/qNVIJw\=\= +RocketCompCfg.tab.Figure..text.changed=20110317061957 +RocketCompCfg.tab.Figure..text.md5=Zm3y9IzRbzghLAk5mSSHaQ\=\= +RocketCompCfg.tab.Figure.es.text.changed=20110317062041 +RocketCompCfg.tab.Figure.es.text.md5=MlD0gZC9aDu+JjqQE9Ub/w\=\= +RocketCompCfg.tab.Figure.fr.text.changed=20110317061957 +RocketCompCfg.tab.Figure.fr.text.md5=l+oBS+ZhaCaQKoOlyApR8w\=\= +RocketCompCfg.tab.MassandCGoverride..text.changed=20110317061957 +RocketCompCfg.tab.MassandCGoverride..text.md5=BWdkeWMuc4BoXRp1FrpIbw\=\= +RocketCompCfg.tab.MassandCGoverride.es.text.changed=20110317062041 +RocketCompCfg.tab.MassandCGoverride.es.text.md5=tAdcM6tKdQXSOXW5BVfFVQ\=\= +RocketCompCfg.tab.MassandCGoverride.fr.text.changed=20110317061957 +RocketCompCfg.tab.MassandCGoverride.fr.text.md5=9dSVobEuYBr3CsEvaup1SA\=\= +RocketCompCfg.tab.Override..text.changed=20110317061957 +RocketCompCfg.tab.Override..text.md5=bajmciX9z6eMPqXcMVS4SQ\=\= +RocketCompCfg.tab.Override.es.text.changed=20110317062041 +RocketCompCfg.tab.Override.es.text.md5=InQwsBMP9TQJ0la5Jb59jA\=\= +RocketCompCfg.tab.Override.fr.text.changed=20110317061957 +RocketCompCfg.tab.Override.fr.text.md5=WmNUdi7uEXMsdOP4T3OUKw\=\= +RocketCompCfg.tab.Specifyacomment..text.changed=20110317061957 +RocketCompCfg.tab.Specifyacomment..text.md5=EfsC6/w5pfK1bMajAVkZKw\=\= +RocketCompCfg.tab.Specifyacomment.es.text.changed=20110317062041 +RocketCompCfg.tab.Specifyacomment.es.text.md5=C9jd8dYx3g1XIXKQP2+d3w\=\= +RocketCompCfg.tab.Specifyacomment.fr.text.changed=20110317061957 +RocketCompCfg.tab.Specifyacomment.fr.text.md5=8GZyDu0AskxjMCKyKMY4Dg\=\= +RocketCompCfg.title.Aftshoulder..text.changed=20110317061957 +RocketCompCfg.title.Aftshoulder..text.md5=VMKdYHObaFBvTrlvc43pjA\=\= +RocketCompCfg.title.Aftshoulder.es.text.changed=20110317062041 +RocketCompCfg.title.Aftshoulder.es.text.md5=500uV1D3qgMfQUQWm1nilA\=\= +RocketCompCfg.title.Aftshoulder.fr.text.changed=20110317061957 +RocketCompCfg.title.Aftshoulder.fr.text.md5=52hYzDmiBpypNbX9YVyx5Q\=\= +RocketCompCfg.title.Noseconeshoulder..text.changed=20110317061957 +RocketCompCfg.title.Noseconeshoulder..text.md5=gcLUTCLjOFbyH0AbMjoSqw\=\= +RocketCompCfg.title.Noseconeshoulder.es.text.changed=20110317062041 +RocketCompCfg.title.Noseconeshoulder.es.text.md5=3NIYL4KSrTMhxx4YXi74dg\=\= +RocketCompCfg.title.Noseconeshoulder.fr.text.changed=20110317061957 +RocketCompCfg.title.Noseconeshoulder.fr.text.md5=6cf3OctlEz9rBJR5owKZTA\=\= +RocketCompCfg.ttip.Endcapped..text.changed=20110317061957 +RocketCompCfg.ttip.Endcapped..text.md5=/tw8OA/3kZGvZ45n69GOJg\=\= +RocketCompCfg.ttip.Endcapped.es.text.changed=20110317062041 +RocketCompCfg.ttip.Endcapped.es.text.md5=vMyL1G2czlvYphWCreJSAg\=\= +RocketCompCfg.ttip.Endcapped.fr.text.changed=20110317061957 +RocketCompCfg.ttip.Endcapped.fr.text.md5=/tw8OA/3kZGvZ45n69GOJg\=\= +RocketCompCfg.ttip.Thecomponentname..text.changed=20110317061957 +RocketCompCfg.ttip.Thecomponentname..text.md5=wXfxXR4f78lIsPxJRfu1sA\=\= +RocketCompCfg.ttip.Thecomponentname.es.text.changed=20110317062041 +RocketCompCfg.ttip.Thecomponentname.es.text.md5=VLHDspj9BgZ3jS+OjrmavQ\=\= +RocketCompCfg.ttip.Thecomponentname.fr.text.changed=20110317061957 +RocketCompCfg.ttip.Thecomponentname.fr.text.md5=BCdvEySuxEUPjJpDK14bTg\=\= +RocketComponent.Position.ABSOLUTE..text.changed=20110317061957 +RocketComponent.Position.ABSOLUTE..text.md5=AzhhZIbnNYQaLPwHmRLirg\=\= +RocketComponent.Position.ABSOLUTE.es.text.changed=20110317062041 +RocketComponent.Position.ABSOLUTE.es.text.md5=AzhhZIbnNYQaLPwHmRLirg\=\= +RocketComponent.Position.ABSOLUTE.fr.text.changed=20110317061957 +RocketComponent.Position.ABSOLUTE.fr.text.md5=Jdmj3Dq5Jt3FKgzBvZIIYQ\=\= +RocketComponent.Position.AFTER..text.changed=20110317061957 +RocketComponent.Position.AFTER..text.md5=c+3M7ppDR+wuNOWnNJd18g\=\= +RocketComponent.Position.AFTER.es.text.changed=20110317062041 +RocketComponent.Position.AFTER.es.text.md5=c+3M7ppDR+wuNOWnNJd18g\=\= +RocketComponent.Position.AFTER.fr.text.changed=20110317061957 +RocketComponent.Position.AFTER.fr.text.md5=ZsvfzJuRzBo2X5N6fsGpWQ\=\= +RocketComponent.Position.BOTTOM..text.changed=20110317061957 +RocketComponent.Position.BOTTOM..text.md5=kfwrw7AMt4riZFSLiFy3Rg\=\= +RocketComponent.Position.BOTTOM.es.text.changed=20110317062041 +RocketComponent.Position.BOTTOM.es.text.md5=kfwrw7AMt4riZFSLiFy3Rg\=\= +RocketComponent.Position.BOTTOM.fr.text.changed=20110317061957 +RocketComponent.Position.BOTTOM.fr.text.md5=MU0uZ8zJ6Z9w3ifWTVeDiQ\=\= +RocketComponent.Position.MIDDLE..text.changed=20110317061957 +RocketComponent.Position.MIDDLE..text.md5=J4PApZ7AF518oMTx+Px4tA\=\= +RocketComponent.Position.MIDDLE.es.text.changed=20110317062041 +RocketComponent.Position.MIDDLE.es.text.md5=J4PApZ7AF518oMTx+Px4tA\=\= +RocketComponent.Position.MIDDLE.fr.text.changed=20110317061957 +RocketComponent.Position.MIDDLE.fr.text.md5=rMQ8esVbhoF/se0fQQxrXQ\=\= +RocketComponent.Position.TOP..text.changed=20110317061957 +RocketComponent.Position.TOP..text.md5=TFkRbZ2Q1I/RXdigYybxeA\=\= +RocketComponent.Position.TOP.es.text.changed=20110317062041 +RocketComponent.Position.TOP.es.text.md5=TFkRbZ2Q1I/RXdigYybxeA\=\= +RocketComponent.Position.TOP.fr.text.changed=20110317061957 +RocketComponent.Position.TOP.fr.text.md5=2MG8lm3Gr//Bgzp2dl+u8g\=\= +RocketInfo.Apogee..text.changed=20110317061957 +RocketInfo.Apogee..text.md5=m835/6hkcf3928i5E0KuTA\=\= +RocketInfo.Apogee.es.text.changed=20110317062041 +RocketInfo.Apogee.es.text.md5=m835/6hkcf3928i5E0KuTA\=\= +RocketInfo.Apogee.fr.text.changed=20110317061957 +RocketInfo.Apogee.fr.text.md5=JdjHcWzYZB6wmbxGcWK3Tg\=\= +RocketInfo.Calculating..text.changed=20110317061957 +RocketInfo.Calculating..text.md5=BYLNL9YnQ6idtfcV/VHlMg\=\= +RocketInfo.Calculating.es.text.changed=20110317062041 +RocketInfo.Calculating.es.text.md5=BYLNL9YnQ6idtfcV/VHlMg\=\= +RocketInfo.Calculating.fr.text.changed=20110317061957 +RocketInfo.Calculating.fr.text.md5=zndMSA9ddOhatKMWddaorQ\=\= +RocketInfo.Mach..text.changed=20110317061957 +RocketInfo.Mach..text.md5=yoT7hD3AmSzXb4F4VolXAQ\=\= +RocketInfo.Mach.es.text.changed=20110317062041 +RocketInfo.Mach.es.text.md5=yoT7hD3AmSzXb4F4VolXAQ\=\= +RocketInfo.Mach.fr.text.changed=20110317061957 +RocketInfo.Mach.fr.text.md5=yoT7hD3AmSzXb4F4VolXAQ\=\= +RocketInfo.Maxacceleration..text.changed=20110317061957 +RocketInfo.Maxacceleration..text.md5=W/1eO0rir5rKGvsPz26Q3Q\=\= +RocketInfo.Maxacceleration.es.text.changed=20110317062041 +RocketInfo.Maxacceleration.es.text.md5=W/1eO0rir5rKGvsPz26Q3Q\=\= +RocketInfo.Maxacceleration.fr.text.changed=20110317061957 +RocketInfo.Maxacceleration.fr.text.md5=wnNQyKVF+jJ/acTeYxHRLQ\=\= +RocketInfo.Maxvelocity..text.changed=20110317061957 +RocketInfo.Maxvelocity..text.md5=2UhiyS/Z0gAkmgwIs+uCkA\=\= +RocketInfo.Maxvelocity.es.text.changed=20110317062041 +RocketInfo.Maxvelocity.es.text.md5=2UhiyS/Z0gAkmgwIs+uCkA\=\= +RocketInfo.Maxvelocity.fr.text.changed=20110317061957 +RocketInfo.Maxvelocity.fr.text.md5=zl2gKupfyrpiX97LisL+Dw\=\= +RocketInfo.Warning..text.changed=20110317061957 +RocketInfo.Warning..text.md5=Pz4zbi8foQN179kj/KGLVQ\=\= +RocketInfo.Warning.es.text.changed=20110317062041 +RocketInfo.Warning.es.text.md5=Pz4zbi8foQN179kj/KGLVQ\=\= +RocketInfo.Warning.fr.text.changed=20110317061957 +RocketInfo.Warning.fr.text.md5=bXzrjmDn/CV68NqUR2aUPg\=\= +RocketInfo.accelerationValue..text.changed=20110317061957 +RocketInfo.accelerationValue..text.md5=OCsPUYV3P6D2eo7YBWx3WQ\=\= +RocketInfo.accelerationValue.es.text.changed=20110317062041 +RocketInfo.accelerationValue.es.text.md5=OCsPUYV3P6D2eo7YBWx3WQ\=\= +RocketInfo.accelerationValue.fr.text.changed=20110317061957 +RocketInfo.accelerationValue.fr.text.md5=OCsPUYV3P6D2eo7YBWx3WQ\=\= +RocketInfo.apogeeValue..text.changed=20110317061957 +RocketInfo.apogeeValue..text.md5=OCsPUYV3P6D2eo7YBWx3WQ\=\= +RocketInfo.apogeeValue.es.text.changed=20110317062041 +RocketInfo.apogeeValue.es.text.md5=OCsPUYV3P6D2eo7YBWx3WQ\=\= +RocketInfo.apogeeValue.fr.text.changed=20110317061957 +RocketInfo.apogeeValue.fr.text.md5=OCsPUYV3P6D2eo7YBWx3WQ\=\= +RocketInfo.at..text.changed=20110317061957 +RocketInfo.at..text.md5=W6cWsnOZ/knopYTPCzaTeA\=\= +RocketInfo.at.es.text.changed=20110317062041 +RocketInfo.at.es.text.md5=W6cWsnOZ/knopYTPCzaTeA\=\= +RocketInfo.at.fr.text.changed=20110317061957 +RocketInfo.at.fr.text.md5=+2xTQMeep5vm+yU2MLGvJA\=\= +RocketInfo.cgText..text.changed=20110317061957 +RocketInfo.cgText..text.md5=1ZJYYUk1hlT/YiMygmRlUA\=\= +RocketInfo.cgText.es.text.changed=20110317062041 +RocketInfo.cgText.es.text.md5=1ZJYYUk1hlT/YiMygmRlUA\=\= +RocketInfo.cgText.fr.text.changed=20110317061957 +RocketInfo.cgText.fr.text.md5=1ZJYYUk1hlT/YiMygmRlUA\=\= +RocketInfo.cpText..text.changed=20110317061957 +RocketInfo.cpText..text.md5=WUhBZhhcwneQOoDqGKgehQ\=\= +RocketInfo.cpText.es.text.changed=20110317062041 +RocketInfo.cpText.es.text.md5=WUhBZhhcwneQOoDqGKgehQ\=\= +RocketInfo.cpText.fr.text.changed=20110317061957 +RocketInfo.cpText.fr.text.md5=WUhBZhhcwneQOoDqGKgehQ\=\= +RocketInfo.lengthLine.Length..text.changed=20110317061957 +RocketInfo.lengthLine.Length..text.md5=uiqcbIx34D+D74v1Q2EidQ\=\= +RocketInfo.lengthLine.Length.es.text.changed=20110317062041 +RocketInfo.lengthLine.Length.es.text.md5=uiqcbIx34D+D74v1Q2EidQ\=\= +RocketInfo.lengthLine.Length.fr.text.changed=20110317061957 +RocketInfo.lengthLine.Length.fr.text.md5=9IOe9DS00o4xVraDw/tFiQ\=\= +RocketInfo.lengthLine.maxdiameter..text.changed=20110317061957 +RocketInfo.lengthLine.maxdiameter..text.md5=b54K5jvMqQwFuiupKTW2Hw\=\= +RocketInfo.lengthLine.maxdiameter.es.text.changed=20110317062041 +RocketInfo.lengthLine.maxdiameter.es.text.md5=b54K5jvMqQwFuiupKTW2Hw\=\= +RocketInfo.lengthLine.maxdiameter.fr.text.changed=20110317061957 +RocketInfo.lengthLine.maxdiameter.fr.text.md5=yDlnB/eGrHA0Ku26kyspVA\=\= +RocketInfo.massText1..text.changed=20110317061957 +RocketInfo.massText1..text.md5=RkY0syGtVBuF/S7ywbxlIg\=\= +RocketInfo.massText1.es.text.changed=20110317062041 +RocketInfo.massText1.es.text.md5=RkY0syGtVBuF/S7ywbxlIg\=\= +RocketInfo.massText1.fr.text.changed=20110317061957 +RocketInfo.massText1.fr.text.md5=v44c9NpUg+qJiSX8K6HG1Q\=\= +RocketInfo.massText2..text.changed=20110317061957 +RocketInfo.massText2..text.md5=jhqtGU7OYqShOF1CHJzN5A\=\= +RocketInfo.massText2.es.text.changed=20110317062041 +RocketInfo.massText2.es.text.md5=jhqtGU7OYqShOF1CHJzN5A\=\= +RocketInfo.massText2.fr.text.changed=20110317061957 +RocketInfo.massText2.fr.text.md5=XVccBgTh1jlB6g0sW7DBmQ\=\= +RocketInfo.stabText..text.changed=20110317061957 +RocketInfo.stabText..text.md5=LBO6FRY6BiV2OFFMimk7Cw\=\= +RocketInfo.stabText.es.text.changed=20110317062041 +RocketInfo.stabText.es.text.md5=LBO6FRY6BiV2OFFMimk7Cw\=\= +RocketInfo.stabText.fr.text.changed=20110317061957 +RocketInfo.stabText.fr.text.md5=mKdlKkmTwloZqh6SDoqzDA\=\= +RocketInfo.velocityValue..text.changed=20110317061957 +RocketInfo.velocityValue..text.md5=OCsPUYV3P6D2eo7YBWx3WQ\=\= +RocketInfo.velocityValue.es.text.changed=20110317062041 +RocketInfo.velocityValue.es.text.md5=OCsPUYV3P6D2eo7YBWx3WQ\=\= +RocketInfo.velocityValue.fr.text.changed=20110317061957 +RocketInfo.velocityValue.fr.text.md5=OCsPUYV3P6D2eo7YBWx3WQ\=\= +RocketPanel.FigTypeAct.Backview..text.changed=20110317061957 +RocketPanel.FigTypeAct.Backview..text.md5=U3L0JY9WIf2QbwuCXttoqQ\=\= +RocketPanel.FigTypeAct.Backview.es.text.changed=20110317062041 +RocketPanel.FigTypeAct.Backview.es.text.md5=1ONvntlgu6B2Y4HBxrGRFw\=\= +RocketPanel.FigTypeAct.Backview.fr.text.changed=20110317061957 +RocketPanel.FigTypeAct.Backview.fr.text.md5=MJEgbB97ut1ogwRUVK4paQ\=\= +RocketPanel.FigTypeAct.Sideview..text.changed=20110317061957 +RocketPanel.FigTypeAct.Sideview..text.md5=QSuwa9rhkCos4AGWreXB6A\=\= +RocketPanel.FigTypeAct.Sideview.es.text.changed=20110317062041 +RocketPanel.FigTypeAct.Sideview.es.text.md5=Njf4QATFRWsAcDfncsaHRw\=\= +RocketPanel.FigTypeAct.Sideview.fr.text.changed=20110317061957 +RocketPanel.FigTypeAct.Sideview.fr.text.md5=pSMg/Uv2AyB+FxDegG864Q\=\= +RocketPanel.FigTypeAct.ttip.Backview..text.changed=20110317061957 +RocketPanel.FigTypeAct.ttip.Backview..text.md5=LlrvaKoDwvazjZK6TP61sw\=\= +RocketPanel.FigTypeAct.ttip.Backview.es.text.changed=20110317062041 +RocketPanel.FigTypeAct.ttip.Backview.es.text.md5=Omr5Thw1fLpHvcX5Y4CE8g\=\= +RocketPanel.FigTypeAct.ttip.Backview.fr.text.changed=20110317061957 +RocketPanel.FigTypeAct.ttip.Backview.fr.text.md5=Ssti6RFnBTNXGcsaD7LQ9w\=\= +RocketPanel.FigTypeAct.ttip.Sideview..text.changed=20110317061957 +RocketPanel.FigTypeAct.ttip.Sideview..text.md5=QSuwa9rhkCos4AGWreXB6A\=\= +RocketPanel.FigTypeAct.ttip.Sideview.es.text.changed=20110317062041 +RocketPanel.FigTypeAct.ttip.Sideview.es.text.md5=Njf4QATFRWsAcDfncsaHRw\=\= +RocketPanel.FigTypeAct.ttip.Sideview.fr.text.changed=20110317061957 +RocketPanel.FigTypeAct.ttip.Sideview.fr.text.md5=pSMg/Uv2AyB+FxDegG864Q\=\= +RocketPanel.lbl.Motorcfg..text.changed=20110317061957 +RocketPanel.lbl.Motorcfg..text.md5=hUqBQQLOQuV2isn4DoTERA\=\= +RocketPanel.lbl.Motorcfg.es.text.changed=20110317062041 +RocketPanel.lbl.Motorcfg.es.text.md5=efYZwmQVTVFKW1PjvSQfNg\=\= +RocketPanel.lbl.Motorcfg.fr.text.changed=20110317061957 +RocketPanel.lbl.Motorcfg.fr.text.md5=st9rfEOQdUm8ojOAmyA0Tg\=\= +RocketPanel.lbl.infoMessage..text.changed=20110317061957 +RocketPanel.lbl.infoMessage..text.md5=v0kUo0r5oYqnT6JgzFamUA\=\= +RocketPanel.lbl.infoMessage.es.text.changed=20110317062041 +RocketPanel.lbl.infoMessage.es.text.md5=hygrW8Za0yQrf0CJT4NBdg\=\= +RocketPanel.lbl.infoMessage.fr.text.changed=20110317061957 +RocketPanel.lbl.infoMessage.fr.text.md5=ZAeUGkwGz0ZbdzbL2XqmWQ\=\= +Shape.Conical..text.changed=20110317061957 +Shape.Conical..text.md5=oFczFN9xZInLHoKoIKEKfw\=\= +Shape.Conical.desc1..text.changed=20110317061957 +Shape.Conical.desc1..text.md5=TcY2J51pk3OejMtSDSdNPA\=\= +Shape.Conical.desc1.es.text.changed=20110317062041 +Shape.Conical.desc1.es.text.md5=TcY2J51pk3OejMtSDSdNPA\=\= +Shape.Conical.desc1.fr.text.changed=20110317061957 +Shape.Conical.desc1.fr.text.md5=PNdjM2bOv5y09xGUEd9KWA\=\= +Shape.Conical.desc2..text.changed=20110317061957 +Shape.Conical.desc2..text.md5=peIIPTNQoADk10xqxGqkng\=\= +Shape.Conical.desc2.es.text.changed=20110317062041 +Shape.Conical.desc2.es.text.md5=peIIPTNQoADk10xqxGqkng\=\= +Shape.Conical.desc2.fr.text.changed=20110317061957 +Shape.Conical.desc2.fr.text.md5=aja0B+3UcT8i+kkuc/M+Wg\=\= +Shape.Conical.es.text.changed=20110317062041 +Shape.Conical.es.text.md5=oFczFN9xZInLHoKoIKEKfw\=\= +Shape.Conical.fr.text.changed=20110317061957 +Shape.Conical.fr.text.md5=KdpWLh9slmw1EpxM3v0u6A\=\= +Shape.Ellipsoid..text.changed=20110317061957 +Shape.Ellipsoid..text.md5=7uU5fOzYgNFu9yRIGao4PQ\=\= +Shape.Ellipsoid.desc1..text.changed=20110317061957 +Shape.Ellipsoid.desc1..text.md5=7GQzaN9KCDxQoxle0MpyFQ\=\= +Shape.Ellipsoid.desc1.es.text.changed=20110317062041 +Shape.Ellipsoid.desc1.es.text.md5=7GQzaN9KCDxQoxle0MpyFQ\=\= +Shape.Ellipsoid.desc1.fr.text.changed=20110317061957 +Shape.Ellipsoid.desc1.fr.text.md5=q+xqm2VoDMaGoO103PJOYw\=\= +Shape.Ellipsoid.desc2..text.changed=20110317061957 +Shape.Ellipsoid.desc2..text.md5=fLlIhPnuuNQ/pPT/FgqcSQ\=\= +Shape.Ellipsoid.desc2.es.text.changed=20110317062041 +Shape.Ellipsoid.desc2.es.text.md5=fLlIhPnuuNQ/pPT/FgqcSQ\=\= +Shape.Ellipsoid.desc2.fr.text.changed=20110317061957 +Shape.Ellipsoid.desc2.fr.text.md5=SF3oiAP8p6Yy1EDW+e6I0Q\=\= +Shape.Ellipsoid.es.text.changed=20110317062041 +Shape.Ellipsoid.es.text.md5=7uU5fOzYgNFu9yRIGao4PQ\=\= +Shape.Ellipsoid.fr.text.changed=20110317061957 +Shape.Ellipsoid.fr.text.md5=HHjK19ROcCNFsQX+nyxXqA\=\= +Shape.Haackseries..text.changed=20110317061957 +Shape.Haackseries..text.md5=py8pQTgKooNxmG5cKNZn7g\=\= +Shape.Haackseries.desc1..text.changed=20110317061957 +Shape.Haackseries.desc1..text.md5=VybzlzbSilHA3/OwqdU83Q\=\= +Shape.Haackseries.desc1.es.text.changed=20110317062041 +Shape.Haackseries.desc1.es.text.md5=VybzlzbSilHA3/OwqdU83Q\=\= +Shape.Haackseries.desc1.fr.text.changed=20110317061957 +Shape.Haackseries.desc1.fr.text.md5=YL/Q8+dFRpi3YZmGDBwH5g\=\= +Shape.Haackseries.desc2..text.changed=20110317061957 +Shape.Haackseries.desc2..text.md5=YmRsw4mO6F6ggVBUePvNzQ\=\= +Shape.Haackseries.desc2.es.text.changed=20110317062041 +Shape.Haackseries.desc2.es.text.md5=YmRsw4mO6F6ggVBUePvNzQ\=\= +Shape.Haackseries.desc2.fr.text.changed=20110317061957 +Shape.Haackseries.desc2.fr.text.md5=TXN79I5wzZ7qHjhGn6tvKw\=\= +Shape.Haackseries.es.text.changed=20110317062041 +Shape.Haackseries.es.text.md5=py8pQTgKooNxmG5cKNZn7g\=\= +Shape.Haackseries.fr.text.changed=20110317061957 +Shape.Haackseries.fr.text.md5=4YjZ+5MsxLMVWG/5Wt0maQ\=\= +Shape.Ogive..text.changed=20110317061957 +Shape.Ogive..text.md5=jwC8jX5d14XDDyiDS/vw5w\=\= +Shape.Ogive.desc1..text.changed=20110317061957 +Shape.Ogive.desc1..text.md5=Gg4Xz8vNq6XY7ehoCPtcJA\=\= +Shape.Ogive.desc1.es.text.changed=20110317062041 +Shape.Ogive.desc1.es.text.md5=Gg4Xz8vNq6XY7ehoCPtcJA\=\= +Shape.Ogive.desc1.fr.text.changed=20110317061957 +Shape.Ogive.desc1.fr.text.md5=MImWwPSo5TQn2Pk7aJmKgw\=\= +Shape.Ogive.desc2..text.changed=20110317061957 +Shape.Ogive.desc2..text.md5=01Xnb8Z7Q6TTNzmtTZol2w\=\= +Shape.Ogive.desc2.es.text.changed=20110317062041 +Shape.Ogive.desc2.es.text.md5=01Xnb8Z7Q6TTNzmtTZol2w\=\= +Shape.Ogive.desc2.fr.text.changed=20110317061957 +Shape.Ogive.desc2.fr.text.md5=mqFVLLnCXdPkh1aY4g+sfQ\=\= +Shape.Ogive.es.text.changed=20110317062041 +Shape.Ogive.es.text.md5=jwC8jX5d14XDDyiDS/vw5w\=\= +Shape.Ogive.fr.text.changed=20110317061957 +Shape.Ogive.fr.text.md5=jwC8jX5d14XDDyiDS/vw5w\=\= +Shape.Parabolicseries..text.changed=20110317061957 +Shape.Parabolicseries..text.md5=EYW40xRaNfc+C0uivBf9Ug\=\= +Shape.Parabolicseries.desc1..text.changed=20110317061957 +Shape.Parabolicseries.desc1..text.md5=eEXd8+9GMRMbrXHCZ9Mi8A\=\= +Shape.Parabolicseries.desc1.es.text.changed=20110317062041 +Shape.Parabolicseries.desc1.es.text.md5=eEXd8+9GMRMbrXHCZ9Mi8A\=\= +Shape.Parabolicseries.desc1.fr.text.changed=20110317061957 +Shape.Parabolicseries.desc1.fr.text.md5=8e0zroohGZWmahqc3jZjKg\=\= +Shape.Parabolicseries.desc2..text.changed=20110317061957 +Shape.Parabolicseries.desc2..text.md5=dEPGt+x46kNmN1htAk0wxQ\=\= +Shape.Parabolicseries.desc2.es.text.changed=20110317062041 +Shape.Parabolicseries.desc2.es.text.md5=dEPGt+x46kNmN1htAk0wxQ\=\= +Shape.Parabolicseries.desc2.fr.text.changed=20110317061957 +Shape.Parabolicseries.desc2.fr.text.md5=lUdQTLzzj3X1Aejimr61ng\=\= +Shape.Parabolicseries.es.text.changed=20110317062041 +Shape.Parabolicseries.es.text.md5=EYW40xRaNfc+C0uivBf9Ug\=\= +Shape.Parabolicseries.fr.text.changed=20110317061957 +Shape.Parabolicseries.fr.text.md5=jnSFa/6bTdPhefIfIXG8yw\=\= +Shape.Powerseries..text.changed=20110317061957 +Shape.Powerseries..text.md5=txqqbnMJRgpTptXC+mzyeg\=\= +Shape.Powerseries.descA1..text.changed=20110317061957 +Shape.Powerseries.descA1..text.md5=EDUu4mRnEXUVfyKaW2NIKQ\=\= +Shape.Powerseries.descA1.es.text.changed=20110317062041 +Shape.Powerseries.descA1.es.text.md5=EDUu4mRnEXUVfyKaW2NIKQ\=\= +Shape.Powerseries.descA1.fr.text.changed=20110317061957 +Shape.Powerseries.descA1.fr.text.md5=kQrALdUk5iXJzLzrbBXnuw\=\= +Shape.Powerseries.descA2..text.changed=20110317061957 +Shape.Powerseries.descA2..text.md5=1jKcaCazuh7PNs3BkVc6Kg\=\= +Shape.Powerseries.descA2.es.text.changed=20110317062041 +Shape.Powerseries.descA2.es.text.md5=1jKcaCazuh7PNs3BkVc6Kg\=\= +Shape.Powerseries.descA2.fr.text.changed=20110317061957 +Shape.Powerseries.descA2.fr.text.md5=ML0j4ftQOMMia/eCDPpKpA\=\= +Shape.Powerseries.descA3..text.changed=20110317061957 +Shape.Powerseries.descA3..text.md5=XMJhQNRwyENzvL1X+U+AjQ\=\= +Shape.Powerseries.descA3.es.text.changed=20110317062041 +Shape.Powerseries.descA3.es.text.md5=XMJhQNRwyENzvL1X+U+AjQ\=\= +Shape.Powerseries.descA3.fr.text.changed=20110317061957 +Shape.Powerseries.descA3.fr.text.md5=Pxbr4dDViCipgpT7Oh92Fw\=\= +Shape.Powerseries.descB1..text.changed=20110317061957 +Shape.Powerseries.descB1..text.md5=Z0H3/s+HBuf+BJJu/ps2dw\=\= +Shape.Powerseries.descB1.es.text.changed=20110317062041 +Shape.Powerseries.descB1.es.text.md5=Z0H3/s+HBuf+BJJu/ps2dw\=\= +Shape.Powerseries.descB1.fr.text.changed=20110317061957 +Shape.Powerseries.descB1.fr.text.md5=sYlp3hE13fp/mTO8HA0g/g\=\= +Shape.Powerseries.descB2..text.changed=20110317061957 +Shape.Powerseries.descB2..text.md5=mUiD9qVyRAaTd+Y56f6MXw\=\= +Shape.Powerseries.descB2.es.text.changed=20110317062041 +Shape.Powerseries.descB2.es.text.md5=mUiD9qVyRAaTd+Y56f6MXw\=\= +Shape.Powerseries.descB2.fr.text.changed=20110317061957 +Shape.Powerseries.descB2.fr.text.md5=+EMLHjj7IO+n09K51mPTzw\=\= +Shape.Powerseries.descB3..text.changed=20110317061957 +Shape.Powerseries.descB3..text.md5=lCje8XOjke26knMQ/PW/Ig\=\= +Shape.Powerseries.descB3.es.text.changed=20110317062041 +Shape.Powerseries.descB3.es.text.md5=lCje8XOjke26knMQ/PW/Ig\=\= +Shape.Powerseries.descB3.fr.text.changed=20110317061957 +Shape.Powerseries.descB3.fr.text.md5=lm1aJ24xvjEYxXLuFa8nKA\=\= +Shape.Powerseries.es.text.changed=20110317062041 +Shape.Powerseries.es.text.md5=txqqbnMJRgpTptXC+mzyeg\=\= +Shape.Powerseries.fr.text.changed=20110317061957 +Shape.Powerseries.fr.text.md5=vcZbZA1z0wAuZp0l/ccRdQ\=\= +ShockCord.ShockCord..text.changed=20110317061957 +ShockCord.ShockCord..text.md5=f1YpHYc/4tbiAJ1i7/v80A\=\= +ShockCord.ShockCord.es.text.changed=20110317062041 +ShockCord.ShockCord.es.text.md5=f1YpHYc/4tbiAJ1i7/v80A\=\= +ShockCord.ShockCord.fr.text.changed=20110317061957 +ShockCord.ShockCord.fr.text.md5=RnR22FP/b23+JTzmuMDTbw\=\= +ShockCordCfg.lbl.Packeddiam..text.changed=20110317061957 +ShockCordCfg.lbl.Packeddiam..text.md5=ZLli2T49cm2t4O2DM2Qdfg\=\= +ShockCordCfg.lbl.Packeddiam.es.text.changed=20110317062041 +ShockCordCfg.lbl.Packeddiam.es.text.md5=h2fYHq6dIS69oa5+UT2jzQ\=\= +ShockCordCfg.lbl.Packeddiam.fr.text.changed=20110317061957 +ShockCordCfg.lbl.Packeddiam.fr.text.md5=g380nkSdujAcYudBWYsSug\=\= +ShockCordCfg.lbl.Packedlength..text.changed=20110317061957 +ShockCordCfg.lbl.Packedlength..text.md5=UXXIbj2JBgPTWzdfLI0olQ\=\= +ShockCordCfg.lbl.Packedlength.es.text.changed=20110317062041 +ShockCordCfg.lbl.Packedlength.es.text.md5=DImf4/EwgTobPEQmPeECXA\=\= +ShockCordCfg.lbl.Packedlength.fr.text.changed=20110317061957 +ShockCordCfg.lbl.Packedlength.fr.text.md5=PdS66kMXqE7v7fQkz222Xg\=\= +ShockCordCfg.lbl.Posrelativeto..text.changed=20110317061957 +ShockCordCfg.lbl.Posrelativeto..text.md5=uld2YfO/C3gWkbRzlw+EMA\=\= +ShockCordCfg.lbl.Posrelativeto.es.text.changed=20110317062041 +ShockCordCfg.lbl.Posrelativeto.es.text.md5=6hQM5zYAcKv2lio49/hQqQ\=\= +ShockCordCfg.lbl.Posrelativeto.fr.text.changed=20110317061957 +ShockCordCfg.lbl.Posrelativeto.fr.text.md5=b5qJfneiAEVaRoxk125f2Q\=\= +ShockCordCfg.lbl.Shockcordlength..text.changed=20110317061957 +ShockCordCfg.lbl.Shockcordlength..text.md5=m2JEPiQ+qmfaGIwKqbkbeA\=\= +ShockCordCfg.lbl.Shockcordlength.es.text.changed=20110317062041 +ShockCordCfg.lbl.Shockcordlength.es.text.md5=m2JEPiQ+qmfaGIwKqbkbeA\=\= +ShockCordCfg.lbl.Shockcordlength.fr.text.changed=20110317061957 +ShockCordCfg.lbl.Shockcordlength.fr.text.md5=NZTCexhp1YSvSuAhzXqN2w\=\= +ShockCordCfg.lbl.Shockcordmaterial..text.changed=20110317061957 +ShockCordCfg.lbl.Shockcordmaterial..text.md5=JRNrQQrE8AvP83jDro1TRA\=\= +ShockCordCfg.lbl.Shockcordmaterial.es.text.changed=20110317062041 +ShockCordCfg.lbl.Shockcordmaterial.es.text.md5=4O93qGNZgYkstK3ZbQ332g\=\= +ShockCordCfg.lbl.Shockcordmaterial.fr.text.changed=20110317061957 +ShockCordCfg.lbl.Shockcordmaterial.fr.text.md5=Iqa0zPDrXelVsP2rA8QhHw\=\= +ShockCordCfg.lbl.plus..text.changed=20110317061957 +ShockCordCfg.lbl.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +ShockCordCfg.lbl.plus.es.text.changed=20110317062041 +ShockCordCfg.lbl.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +ShockCordCfg.lbl.plus.fr.text.changed=20110317061957 +ShockCordCfg.lbl.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +ShockCordCfg.tab.General..text.changed=20110317061957 +ShockCordCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +ShockCordCfg.tab.General.es.text.changed=20110317062041 +ShockCordCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +ShockCordCfg.tab.General.fr.text.changed=20110317061957 +ShockCordCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\= +ShockCordCfg.tab.ttip.General..text.changed=20110317061957 +ShockCordCfg.tab.ttip.General..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\= +ShockCordCfg.tab.ttip.General.es.text.changed=20110317062041 +ShockCordCfg.tab.ttip.General.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\= +ShockCordCfg.tab.ttip.General.fr.text.changed=20110317061957 +ShockCordCfg.tab.ttip.General.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\= +SimExpPan.Col.Unit..text.changed=20110317061957 +SimExpPan.Col.Unit..text.md5=GcVio2rrRV0JU0+TtPUjbw\=\= +SimExpPan.Col.Unit.es.text.changed=20110317062041 +SimExpPan.Col.Unit.es.text.md5=GcVio2rrRV0JU0+TtPUjbw\=\= +SimExpPan.Col.Unit.fr.text.changed=20110317061957 +SimExpPan.Col.Unit.fr.text.md5=7OCXHL7LsvpU0MsJoI/PUg\=\= +SimExpPan.Col.Variable..text.changed=20110317061957 +SimExpPan.Col.Variable..text.md5=R8FIQNjhUzH6QgubL3V82Q\=\= +SimExpPan.Col.Variable.es.text.changed=20110317062041 +SimExpPan.Col.Variable.es.text.md5=R8FIQNjhUzH6QgubL3V82Q\=\= +SimExpPan.Col.Variable.fr.text.changed=20110317061957 +SimExpPan.Col.Variable.fr.text.md5=R8FIQNjhUzH6QgubL3V82Q\=\= +SimExpPan.ExportingVar.desc1..text.changed=20110317061957 +SimExpPan.ExportingVar.desc1..text.md5=7QOGiZQ41+LsaCdNA5Yogg\=\= +SimExpPan.ExportingVar.desc1.es.text.changed=20110317062041 +SimExpPan.ExportingVar.desc1.es.text.md5=7QOGiZQ41+LsaCdNA5Yogg\=\= +SimExpPan.ExportingVar.desc1.fr.text.changed=20110317061957 +SimExpPan.ExportingVar.desc1.fr.text.md5=vfx+vv+gofxyxUurGMUZEQ\=\= +SimExpPan.ExportingVar.desc2..text.changed=20110317061957 +SimExpPan.ExportingVar.desc2..text.md5=m2dCYj0pXcKRFELUnPejdg\=\= +SimExpPan.ExportingVar.desc2.es.text.changed=20110317062041 +SimExpPan.ExportingVar.desc2.es.text.md5=m2dCYj0pXcKRFELUnPejdg\=\= +SimExpPan.ExportingVar.desc2.fr.text.changed=20110317061957 +SimExpPan.ExportingVar.desc2.fr.text.md5=3v7A0Xx5mVRzQoPLJdsJbQ\=\= +SimExpPan.ExportingVar.desc3..text.changed=20110317061957 +SimExpPan.ExportingVar.desc3..text.md5=PCLuMbKMr0vf8fYO1Ycfuw\=\= +SimExpPan.ExportingVar.desc3.es.text.changed=20110317062041 +SimExpPan.ExportingVar.desc3.es.text.md5=PCLuMbKMr0vf8fYO1Ycfuw\=\= +SimExpPan.ExportingVar.desc3.fr.text.changed=20110317061957 +SimExpPan.ExportingVar.desc3.fr.text.md5=nA/s83NgXWMyTt5D5OLsKQ\=\= +SimExpPan.Fileexists.desc1..text.changed=20110317061957 +SimExpPan.Fileexists.desc1..text.md5=70/mN5sZOxVzgnuY1Vt8bw\=\= +SimExpPan.Fileexists.desc1.es.text.changed=20110317062041 +SimExpPan.Fileexists.desc1.es.text.md5=70/mN5sZOxVzgnuY1Vt8bw\=\= +SimExpPan.Fileexists.desc1.fr.text.changed=20110317061957 +SimExpPan.Fileexists.desc1.fr.text.md5=difeNRrruxYGHIPvmdW6Mw\=\= +SimExpPan.Fileexists.desc2..text.changed=20110317061957 +SimExpPan.Fileexists.desc2..text.md5=1hx0LSrG91VR6prkah9CgQ\=\= +SimExpPan.Fileexists.desc2.es.text.changed=20110317062041 +SimExpPan.Fileexists.desc2.es.text.md5=1hx0LSrG91VR6prkah9CgQ\=\= +SimExpPan.Fileexists.desc2.fr.text.changed=20110317061957 +SimExpPan.Fileexists.desc2.fr.text.md5=A6RI99AP5r5yDfGivlTICQ\=\= +SimExpPan.Fileexists.title..text.changed=20110317061957 +SimExpPan.Fileexists.title..text.md5=ZLSxQF9+zve/FlwIr3ih3g\=\= +SimExpPan.Fileexists.title.es.text.changed=20110317062041 +SimExpPan.Fileexists.title.es.text.md5=ZLSxQF9+zve/FlwIr3ih3g\=\= +SimExpPan.Fileexists.title.fr.text.changed=20110317061957 +SimExpPan.Fileexists.title.fr.text.md5=H7iWSf9TmA2BDYAXpsbvXQ\=\= +SimExpPan.border.Comments..text.changed=20110317061957 +SimExpPan.border.Comments..text.md5=hBPGg7SyfMP029TJAynYug\=\= +SimExpPan.border.Comments.es.text.changed=20110317062041 +SimExpPan.border.Comments.es.text.md5=MARZIhY9h9rxlNm8sqqKxA\=\= +SimExpPan.border.Comments.fr.text.changed=20110317061957 +SimExpPan.border.Comments.fr.text.md5=XCT7v7OS5WiCW7E1BhuhkQ\=\= +SimExpPan.border.Fieldsep..text.changed=20110317061957 +SimExpPan.border.Fieldsep..text.md5=NevQuh6tVO7pxWhEN6pRmw\=\= +SimExpPan.border.Fieldsep.es.text.changed=20110317062041 +SimExpPan.border.Fieldsep.es.text.md5=F1L5yoaZxE1/UyinNdXDXA\=\= +SimExpPan.border.Fieldsep.fr.text.changed=20110317061957 +SimExpPan.border.Fieldsep.fr.text.md5=o7Cx3HpSphBkXUON3vPsVg\=\= +SimExpPan.border.Vartoexport..text.changed=20110317061957 +SimExpPan.border.Vartoexport..text.md5=e6CREd9HyFfw+NvBtVxifA\=\= +SimExpPan.border.Vartoexport.es.text.changed=20110317062041 +SimExpPan.border.Vartoexport.es.text.md5=s1A13IFNGHv7P10nZdw/AQ\=\= +SimExpPan.border.Vartoexport.fr.text.changed=20110317061957 +SimExpPan.border.Vartoexport.fr.text.md5=7hG66BwmNnC0TIWQggyMKw\=\= +SimExpPan.but.Exporttofile..text.changed=20110317061957 +SimExpPan.but.Exporttofile..text.md5=rrEYVLIMeUQLUWB4G0UAqA\=\= +SimExpPan.but.Exporttofile.es.text.changed=20110317062041 +SimExpPan.but.Exporttofile.es.text.md5=KQ9+kifGuvz+trF4i9Y6Qg\=\= +SimExpPan.but.Exporttofile.fr.text.changed=20110317061957 +SimExpPan.but.Exporttofile.fr.text.md5=Uns3erwNPuQ4PzrB80Psmg\=\= +SimExpPan.but.Selectall..text.changed=20110317061957 +SimExpPan.but.Selectall..text.md5=TEHgvZV2mLWBAKXGh9dX2Q\=\= +SimExpPan.but.Selectall.es.text.changed=20110317062041 +SimExpPan.but.Selectall.es.text.md5=jwwV9moesy7ZzW9SafToEQ\=\= +SimExpPan.but.Selectall.fr.text.changed=20110317061957 +SimExpPan.but.Selectall.fr.text.md5=5cJm3hB1vmCaFn1pXUAx1g\=\= +SimExpPan.but.Selectnone..text.changed=20110317061957 +SimExpPan.but.Selectnone..text.md5=ahhU9i4heRHbmipDfSGSEg\=\= +SimExpPan.but.Selectnone.es.text.changed=20110317062041 +SimExpPan.but.Selectnone.es.text.md5=IUQkBoH4hngBTigP9FDDiw\=\= +SimExpPan.but.Selectnone.fr.text.changed=20110317061957 +SimExpPan.but.Selectnone.fr.text.md5=dYd8uI8/j9VqQNugFBQK5w\=\= +SimExpPan.checkbox.Incflightevents..text.changed=20110317061957 +SimExpPan.checkbox.Incflightevents..text.md5=215rCrfLPRolKLZ5arKYeA\=\= +SimExpPan.checkbox.Incflightevents.es.text.changed=20110317062041 +SimExpPan.checkbox.Incflightevents.es.text.md5=PhYYf9krG6vFX3jLeEcj4g\=\= +SimExpPan.checkbox.Incflightevents.fr.text.changed=20110317061957 +SimExpPan.checkbox.Incflightevents.fr.text.md5=84wjG89sagiQ19078fn23w\=\= +SimExpPan.checkbox.Includefielddesc..text.changed=20110317061957 +SimExpPan.checkbox.Includefielddesc..text.md5=iadKdUIG1vMFTLAqPrtIzA\=\= +SimExpPan.checkbox.Includefielddesc.es.text.changed=20110317062041 +SimExpPan.checkbox.Includefielddesc.es.text.md5=dlgOyCoGA68+FhzcxDU+TA\=\= +SimExpPan.checkbox.Includefielddesc.fr.text.changed=20110317061957 +SimExpPan.checkbox.Includefielddesc.fr.text.md5=OiKvgPsybO2/lauon6KxaQ\=\= +SimExpPan.checkbox.Includesimudesc..text.changed=20110317061957 +SimExpPan.checkbox.Includesimudesc..text.md5=V+8GUPF17dVnFpBwZHGEJA\=\= +SimExpPan.checkbox.Includesimudesc.es.text.changed=20110317062041 +SimExpPan.checkbox.Includesimudesc.es.text.md5=fDReLQ1wtuKqzAidK3v0Yg\=\= +SimExpPan.checkbox.Includesimudesc.fr.text.changed=20110317061957 +SimExpPan.checkbox.Includesimudesc.fr.text.md5=RW9NorkTT5GSgP3FDLYzNw\=\= +SimExpPan.checkbox.ttip.Incflightevents..text.changed=20110317061957 +SimExpPan.checkbox.ttip.Incflightevents..text.md5=ZY5c0qP+PMY6M/SOr1Ty5g\=\= +SimExpPan.checkbox.ttip.Incflightevents.es.text.changed=20110317062041 +SimExpPan.checkbox.ttip.Incflightevents.es.text.md5=tC0O0WMJLSl1PvwzCaP11w\=\= +SimExpPan.checkbox.ttip.Incflightevents.fr.text.changed=20110317061957 +SimExpPan.checkbox.ttip.Incflightevents.fr.text.md5=DWMxpzcm3dO7lxJGisOjiA\=\= +SimExpPan.checkbox.ttip.Includefielddesc..text.changed=20110317061957 +SimExpPan.checkbox.ttip.Includefielddesc..text.md5=ZBW/gOSRIk/1/10L5IwlFw\=\= +SimExpPan.checkbox.ttip.Includefielddesc.es.text.changed=20110317062041 +SimExpPan.checkbox.ttip.Includefielddesc.es.text.md5=nwcqf2QLGwUJq9NpE+lhAA\=\= +SimExpPan.checkbox.ttip.Includefielddesc.fr.text.changed=20110317061957 +SimExpPan.checkbox.ttip.Includefielddesc.fr.text.md5=95O7CCvYdqsGO0FoucatdA\=\= +SimExpPan.checkbox.ttip.Includesimudesc..text.changed=20110317061957 +SimExpPan.checkbox.ttip.Includesimudesc..text.md5=zFfmZhq4CkOcPweUhjfm/g\=\= +SimExpPan.checkbox.ttip.Includesimudesc.es.text.changed=20110317062041 +SimExpPan.checkbox.ttip.Includesimudesc.es.text.md5=cIhT/EaQa/C9HH3A/I816w\=\= +SimExpPan.checkbox.ttip.Includesimudesc.fr.text.changed=20110317061957 +SimExpPan.checkbox.ttip.Includesimudesc.fr.text.md5=Qd6ywWo/2Au92zexTreKuA\=\= +SimExpPan.desc..text.changed=20110317061957 +SimExpPan.desc..text.md5=RjiB5jgrldfMzev51POXRA\=\= +SimExpPan.desc.es.text.changed=20110317062041 +SimExpPan.desc.es.text.md5=axBDJ60Nvg/fSJQ/OhHGvw\=\= +SimExpPan.desc.fr.text.changed=20110317061957 +SimExpPan.desc.fr.text.md5=b3pQcNdQ7P0kJeBenErRQw\=\= +SimExpPan.lbl.Commentchar..text.changed=20110317061957 +SimExpPan.lbl.Commentchar..text.md5=jQRh0+nE8kTUm5ecBouGMA\=\= +SimExpPan.lbl.Commentchar.es.text.changed=20110317062041 +SimExpPan.lbl.Commentchar.es.text.md5=Nw1X9E/2jM5Drtc38OPQ0w\=\= +SimExpPan.lbl.Commentchar.fr.text.changed=20110317061957 +SimExpPan.lbl.Commentchar.fr.text.md5=KKCKQB0fKOJ8ZP+gW08OqA\=\= +SimExpPan.lbl.Fieldsepstr..text.changed=20110317061957 +SimExpPan.lbl.Fieldsepstr..text.md5=UQl9XX8d2Nnaor2EDw8FSQ\=\= +SimExpPan.lbl.Fieldsepstr.es.text.changed=20110317062041 +SimExpPan.lbl.Fieldsepstr.es.text.md5=o3JpCtBRfg8WglnD1gITAg\=\= +SimExpPan.lbl.Fieldsepstr.fr.text.changed=20110317061957 +SimExpPan.lbl.Fieldsepstr.fr.text.md5=iVOya5b5YAcD6U9vYeoXeg\=\= +SimExpPan.lbl.longA1..text.changed=20110317061957 +SimExpPan.lbl.longA1..text.md5=vd8j63Y1WdCVSMGzmt+QaQ\=\= +SimExpPan.lbl.longA1.es.text.changed=20110317062041 +SimExpPan.lbl.longA1.es.text.md5=WeEGrAJDthg2b0cMA3F+HA\=\= +SimExpPan.lbl.longA1.fr.text.changed=20110317061957 +SimExpPan.lbl.longA1.fr.text.md5=u08vfF3ZR/WgajyNBHek7A\=\= +SimExpPan.lbl.longA2..text.changed=20110317061957 +SimExpPan.lbl.longA2..text.md5=d67MEZfstTttt/+TSY1SzA\=\= +SimExpPan.lbl.longA2.es.text.changed=20110317062041 +SimExpPan.lbl.longA2.es.text.md5=wcnbbIPed/i2/jJUhNbxWw\=\= +SimExpPan.lbl.longA2.fr.text.changed=20110317061957 +SimExpPan.lbl.longA2.fr.text.md5=GRJuWUJREYIPqnMmx+YZVQ\=\= +SimExpPan.lbl.ttip.Commentchar..text.changed=20110317061957 +SimExpPan.lbl.ttip.Commentchar..text.md5=1OymuQ+eSOGMwss4GZmM1Q\=\= +SimExpPan.lbl.ttip.Commentchar.es.text.changed=20110317062041 +SimExpPan.lbl.ttip.Commentchar.es.text.md5=scQM1XeIwZA6ELqNE93OlQ\=\= +SimExpPan.lbl.ttip.Commentchar.fr.text.changed=20110317061957 +SimExpPan.lbl.ttip.Commentchar.fr.text.md5=53tC9SUf4xOXZZXyT7163Q\=\= +SimuRunDlg.lbl.Altitude..text.changed=20110317061957 +SimuRunDlg.lbl.Altitude..text.md5=E0gTnkAiZOiphJQJBJsnHg\=\= +SimuRunDlg.lbl.Altitude.es.text.changed=20110317062041 +SimuRunDlg.lbl.Altitude.es.text.md5=kW45w2n1Z2I4g9aZwsJQ7A\=\= +SimuRunDlg.lbl.Altitude.fr.text.changed=20110317061957 +SimuRunDlg.lbl.Altitude.fr.text.md5=E0gTnkAiZOiphJQJBJsnHg\=\= +SimuRunDlg.lbl.Running..text.changed=20110317061957 +SimuRunDlg.lbl.Running..text.md5=nCmpKDg/x9YBrd3JY9XAtA\=\= +SimuRunDlg.lbl.Running.es.text.changed=20110317062041 +SimuRunDlg.lbl.Running.es.text.md5=t0hClt3tsdR27aUNxWZLNQ\=\= +SimuRunDlg.lbl.Running.fr.text.changed=20110317061957 +SimuRunDlg.lbl.Running.fr.text.md5=upJoJBKZ8fTUez83ESBvGA\=\= +SimuRunDlg.lbl.Simutime..text.changed=20110317061957 +SimuRunDlg.lbl.Simutime..text.md5=0RS8WyigaWMiUlTNQoV7vw\=\= +SimuRunDlg.lbl.Simutime.es.text.changed=20110317062041 +SimuRunDlg.lbl.Simutime.es.text.md5=jTlI+zP/DFjPLhGWQT//lw\=\= +SimuRunDlg.lbl.Simutime.fr.text.changed=20110317061957 +SimuRunDlg.lbl.Simutime.fr.text.md5=Dd3JMtIlCGfZZXC7iaLmjA\=\= +SimuRunDlg.lbl.Velocity..text.changed=20110317061957 +SimuRunDlg.lbl.Velocity..text.md5=amkZLQ7Ohc5lBM+RMkfv/A\=\= +SimuRunDlg.lbl.Velocity.es.text.changed=20110317062041 +SimuRunDlg.lbl.Velocity.es.text.md5=JemM4HUdhG9EOAzTlOrJzA\=\= +SimuRunDlg.lbl.Velocity.fr.text.changed=20110317061957 +SimuRunDlg.lbl.Velocity.fr.text.md5=oMRuKRVl4xB6oKw4Jwd+og\=\= +SimuRunDlg.msg.AnException1..text.changed=20110317061957 +SimuRunDlg.msg.AnException1..text.md5=+kWYuH3gNDP9Ucdf7IaxUg\=\= +SimuRunDlg.msg.AnException1.es.text.changed=20110317062041 +SimuRunDlg.msg.AnException1.es.text.md5=oeQL8GLYn1yVggaUMgutjw\=\= +SimuRunDlg.msg.AnException1.fr.text.changed=20110317061957 +SimuRunDlg.msg.AnException1.fr.text.md5=kmZQH64Q0iTUBIHkAsAnTg\=\= +SimuRunDlg.msg.AnException2..text.changed=20110317061957 +SimuRunDlg.msg.AnException2..text.md5=igR1+s3eAV9gl0J0Ecm8lw\=\= +SimuRunDlg.msg.AnException2.es.text.changed=20110317062041 +SimuRunDlg.msg.AnException2.es.text.md5=N3RSxETcuLdxueRSmDs2uA\=\= +SimuRunDlg.msg.AnException2.fr.text.changed=20110317061957 +SimuRunDlg.msg.AnException2.fr.text.md5=0Z592+sI/18umbgJYEb7Xg\=\= +SimuRunDlg.msg.AssertionError1..text.changed=20110317061957 +SimuRunDlg.msg.AssertionError1..text.md5=lfSKzA90PPCIoUGgSKK34g\=\= +SimuRunDlg.msg.AssertionError1.es.text.changed=20110317062041 +SimuRunDlg.msg.AssertionError1.es.text.md5=04bBtE4Ob8cKnf0AWGy0TA\=\= +SimuRunDlg.msg.AssertionError1.fr.text.changed=20110317061957 +SimuRunDlg.msg.AssertionError1.fr.text.md5=kSFFC6wqTSpBcqYa+GTnxw\=\= +SimuRunDlg.msg.AssertionError2..text.changed=20110317061957 +SimuRunDlg.msg.AssertionError2..text.md5=igR1+s3eAV9gl0J0Ecm8lw\=\= +SimuRunDlg.msg.AssertionError2.es.text.changed=20110317062041 +SimuRunDlg.msg.AssertionError2.es.text.md5=N3RSxETcuLdxueRSmDs2uA\=\= +SimuRunDlg.msg.AssertionError2.fr.text.changed=20110317061957 +SimuRunDlg.msg.AssertionError2.fr.text.md5=0Z592+sI/18umbgJYEb7Xg\=\= +SimuRunDlg.msg.Unabletosim..text.changed=20110317061957 +SimuRunDlg.msg.Unabletosim..text.md5=prdzX/arJfUPkqa5FTFkcQ\=\= +SimuRunDlg.msg.Unabletosim.es.text.changed=20110317062041 +SimuRunDlg.msg.Unabletosim.es.text.md5=dx7ykAySIvn3Ia8AueSX8A\=\= +SimuRunDlg.msg.Unabletosim.fr.text.changed=20110317061957 +SimuRunDlg.msg.Unabletosim.fr.text.md5=DA/LR3j2rEEcMorK9mvMLw\=\= +SimuRunDlg.msg.errorOccurred..text.changed=20110317061957 +SimuRunDlg.msg.errorOccurred..text.md5=vbnUhY0WWy3bkDKVn0aGkA\=\= +SimuRunDlg.msg.errorOccurred.es.text.changed=20110317062041 +SimuRunDlg.msg.errorOccurred.es.text.md5=S0DqZhCxB+jnV/B1gVYb1g\=\= +SimuRunDlg.msg.errorOccurred.fr.text.changed=20110317061957 +SimuRunDlg.msg.errorOccurred.fr.text.md5=5BdVoCnih+mKR4ZzNjtm3A\=\= +SimuRunDlg.msg.unknownerror1..text.changed=20110317061957 +SimuRunDlg.msg.unknownerror1..text.md5=Yii2QnKXuVTxOq5z06I9PQ\=\= +SimuRunDlg.msg.unknownerror1.es.text.changed=20110317062041 +SimuRunDlg.msg.unknownerror1.es.text.md5=2utY5H8Ze4ojT1DpcoWXsw\=\= +SimuRunDlg.msg.unknownerror1.fr.text.changed=20110317061957 +SimuRunDlg.msg.unknownerror1.fr.text.md5=YdVMVvMwg//977E2YlpjNQ\=\= +SimuRunDlg.msg.unknownerror2..text.changed=20110317061957 +SimuRunDlg.msg.unknownerror2..text.md5=AjuSNENYxOQGF0WqFeTFpw\=\= +SimuRunDlg.msg.unknownerror2.es.text.changed=20110317062041 +SimuRunDlg.msg.unknownerror2.es.text.md5=w63WhA0j4tPkikGPg3Fiug\=\= +SimuRunDlg.msg.unknownerror2.fr.text.changed=20110317061957 +SimuRunDlg.msg.unknownerror2.fr.text.md5=/tmQcLCTq+RUxEDaSzlxag\=\= +SimuRunDlg.title.RunSim..text.changed=20110317061957 +SimuRunDlg.title.RunSim..text.md5=JQ6acbvmL4OayHJh2Rum2w\=\= +SimuRunDlg.title.RunSim.es.text.changed=20110317062041 +SimuRunDlg.title.RunSim.es.text.md5=yYAvKKJdI+j3cLiJZo8cBA\=\= +SimuRunDlg.title.RunSim.fr.text.changed=20110317061957 +SimuRunDlg.title.RunSim.fr.text.md5=KNX7awTyGQi+z36oG0GXsQ\=\= +SleeveCfg.tab.General..text.changed=20110317061957 +SleeveCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +SleeveCfg.tab.General.es.text.changed=20110317062041 +SleeveCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +SleeveCfg.tab.General.fr.text.changed=20110317061957 +SleeveCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\= +SleeveCfg.tab.Generalproperties..text.changed=20110317061957 +SleeveCfg.tab.Generalproperties..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\= +SleeveCfg.tab.Generalproperties.es.text.changed=20110317062041 +SleeveCfg.tab.Generalproperties.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\= +SleeveCfg.tab.Generalproperties.fr.text.changed=20110317061957 +SleeveCfg.tab.Generalproperties.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\= +SleeveCfg.tab.Innerdiam..text.changed=20110317061957 +SleeveCfg.tab.Innerdiam..text.md5=tl1ONj0/SCF9YCFirUoyVw\=\= +SleeveCfg.tab.Innerdiam.es.text.changed=20110317062041 +SleeveCfg.tab.Innerdiam.es.text.md5=Gjyh8ZBfEyVhHkk+5diXMw\=\= +SleeveCfg.tab.Innerdiam.fr.text.changed=20110317061957 +SleeveCfg.tab.Innerdiam.fr.text.md5=dCK7G8SxW0uKiJDjm3NQkA\=\= +SleeveCfg.tab.Length..text.changed=20110317061957 +SleeveCfg.tab.Length..text.md5=ZLM0xpJRtyw1DiXkYrVEKQ\=\= +SleeveCfg.tab.Length.es.text.changed=20110317062041 +SleeveCfg.tab.Length.es.text.md5=ycRTbjDcF+h0kJEC9Al45A\=\= +SleeveCfg.tab.Length.fr.text.changed=20110317061957 +SleeveCfg.tab.Length.fr.text.md5=+LpNY6MXcK9YQIbuQnHwPA\=\= +SleeveCfg.tab.Outerdiam..text.changed=20110317061957 +SleeveCfg.tab.Outerdiam..text.md5=AGmg3a+zlhzs+h+4J0JE8g\=\= +SleeveCfg.tab.Outerdiam.es.text.changed=20110317062041 +SleeveCfg.tab.Outerdiam.es.text.md5=Wm4jWwBkyecxm7/F8cQ0NQ\=\= +SleeveCfg.tab.Outerdiam.fr.text.changed=20110317061957 +SleeveCfg.tab.Outerdiam.fr.text.md5=XToXLedSc/XzNboRMC0Ujw\=\= +SleeveCfg.tab.Wallthickness..text.changed=20110317061957 +SleeveCfg.tab.Wallthickness..text.md5=+fnX03pPwQt6SXS2we8xRg\=\= +SleeveCfg.tab.Wallthickness.es.text.changed=20110317062041 +SleeveCfg.tab.Wallthickness.es.text.md5=tT1+InFckvVCzc2RCNVVSQ\=\= +SleeveCfg.tab.Wallthickness.fr.text.changed=20110317061957 +SleeveCfg.tab.Wallthickness.fr.text.md5=yvurrozSZlNuqNTccufoSw\=\= +Stage.Stage..text.changed=20110317061957 +Stage.Stage..text.md5=ZMbaJDZGXRFXOFjUYFa5XQ\=\= +Stage.Stage.es.text.changed=20110317062041 +Stage.Stage.es.text.md5=ZMbaJDZGXRFXOFjUYFa5XQ\=\= +Stage.Stage.fr.text.changed=20110317061957 +Stage.Stage.fr.text.md5=GsZSqK7cfTEM0uSxkKZ03g\=\= +StageAction.Stage..text.changed=20110317061957 +StageAction.Stage..text.md5=ZMbaJDZGXRFXOFjUYFa5XQ\=\= +StageAction.Stage.es.text.changed=20110317062041 +StageAction.Stage.es.text.md5=ZMbaJDZGXRFXOFjUYFa5XQ\=\= +StageAction.Stage.fr.text.changed=20110317061957 +StageAction.Stage.fr.text.md5=GsZSqK7cfTEM0uSxkKZ03g\=\= +StorageOptChooser.checkbox.Compfile..text.changed=20110317061957 +StorageOptChooser.checkbox.Compfile..text.md5=2yJLhWtOqD8+QbYKF0BPDg\=\= +StorageOptChooser.checkbox.Compfile.es.text.changed=20110317062041 +StorageOptChooser.checkbox.Compfile.es.text.md5=yAHn+UL8ObHQB6LETmzyEw\=\= +StorageOptChooser.checkbox.Compfile.fr.text.changed=20110317061957 +StorageOptChooser.checkbox.Compfile.fr.text.md5=AriofVV2svncy89104lESQ\=\= +StorageOptChooser.lbl.Estfilesize..text.changed=20110317061957 +StorageOptChooser.lbl.Estfilesize..text.md5=qebbOYq6e8Q4kQ0XhwAYCg\=\= +StorageOptChooser.lbl.Estfilesize.es.text.changed=20110317062041 +StorageOptChooser.lbl.Estfilesize.es.text.md5=YYPAeuhCX/peVuyJuE2KfA\=\= +StorageOptChooser.lbl.Estfilesize.fr.text.changed=20110317061957 +StorageOptChooser.lbl.Estfilesize.fr.text.md5=yUDON8L5GhE73GqAN7xZxw\=\= +StorageOptChooser.lbl.Saveopt..text.changed=20110317061957 +StorageOptChooser.lbl.Saveopt..text.md5=kRiD4hklEWPEoNvjKzbvjA\=\= +StorageOptChooser.lbl.Saveopt.es.text.changed=20110317062041 +StorageOptChooser.lbl.Saveopt.es.text.md5=7kyEiyBRR/2tbO6CzoKcnw\=\= +StorageOptChooser.lbl.Saveopt.fr.text.changed=20110317061957 +StorageOptChooser.lbl.Saveopt.fr.text.md5=14ocVB6TM5F3S/7LpG8NZQ\=\= +StorageOptChooser.lbl.Simdatatostore..text.changed=20110317061957 +StorageOptChooser.lbl.Simdatatostore..text.md5=IYCLXi4TFSvE8GD4m87iMQ\=\= +StorageOptChooser.lbl.Simdatatostore.es.text.changed=20110317062041 +StorageOptChooser.lbl.Simdatatostore.es.text.md5=9wnfMkiMVZI3JTyV6YlDXQ\=\= +StorageOptChooser.lbl.Simdatatostore.fr.text.changed=20110317061957 +StorageOptChooser.lbl.Simdatatostore.fr.text.md5=EgwKpX1Zezms8mpJYg+1fA\=\= +StorageOptChooser.lbl.UsingComp..text.changed=20110317061957 +StorageOptChooser.lbl.UsingComp..text.md5=qt+6OGagWGbmLI5ALEYY9w\=\= +StorageOptChooser.lbl.UsingComp.es.text.changed=20110317062041 +StorageOptChooser.lbl.UsingComp.es.text.md5=Qj7tPXRPPL+VH98H/dg5gA\=\= +StorageOptChooser.lbl.UsingComp.fr.text.changed=20110317061957 +StorageOptChooser.lbl.UsingComp.fr.text.md5=C1f7Kw7WfvN8QgEDjAJPCA\=\= +StorageOptChooser.lbl.longA1..text.changed=20110317061957 +StorageOptChooser.lbl.longA1..text.md5=44oOdU/uGiZGp2CsqEdmWQ\=\= +StorageOptChooser.lbl.longA1.es.text.changed=20110317062041 +StorageOptChooser.lbl.longA1.es.text.md5=HVF88+qmoNwfUVXSPD4cng\=\= +StorageOptChooser.lbl.longA1.fr.text.changed=20110317061957 +StorageOptChooser.lbl.longA1.fr.text.md5=YfPCBVK6BcdV3QDIJluj+g\=\= +StorageOptChooser.lbl.longA2..text.changed=20110317061957 +StorageOptChooser.lbl.longA2..text.md5=l7wKdZblyPZgrEzw+4zLNg\=\= +StorageOptChooser.lbl.longA2.es.text.changed=20110317062041 +StorageOptChooser.lbl.longA2.es.text.md5=TbilLD+N3RfbMx9n8RaPUA\=\= +StorageOptChooser.lbl.longA2.fr.text.changed=20110317061957 +StorageOptChooser.lbl.longA2.fr.text.md5=18RfzVC5eDLQ/YOK8PKHYw\=\= +StorageOptChooser.lbl.longB1..text.changed=20110317061957 +StorageOptChooser.lbl.longB1..text.md5=0DNnQcQIX6/VBQgLWi+XwA\=\= +StorageOptChooser.lbl.longB1.es.text.changed=20110317062041 +StorageOptChooser.lbl.longB1.es.text.md5=dwiCcbcdsF9gQ9pABZuOtg\=\= +StorageOptChooser.lbl.longB1.fr.text.changed=20110317061957 +StorageOptChooser.lbl.longB1.fr.text.md5=0DNnQcQIX6/VBQgLWi+XwA\=\= +StorageOptChooser.lbl.longB2..text.changed=20110317061957 +StorageOptChooser.lbl.longB2..text.md5=W9y9x8F7ZPfL/wUVvn10cQ\=\= +StorageOptChooser.lbl.longB2.es.text.changed=20110317062041 +StorageOptChooser.lbl.longB2.es.text.md5=58l74aQcUT29MqWn6nud7g\=\= +StorageOptChooser.lbl.longB2.fr.text.changed=20110317061957 +StorageOptChooser.lbl.longB2.fr.text.md5=xP92ttSn8RqItTPH6Hp7ag\=\= +StorageOptChooser.lbl.longC1..text.changed=20110317061957 +StorageOptChooser.lbl.longC1..text.md5=fTd67R3OkTFyqNO0/c2sgQ\=\= +StorageOptChooser.lbl.longC1.es.text.changed=20110317062041 +StorageOptChooser.lbl.longC1.es.text.md5=2edew8Ogh6ARKmt4qzdByA\=\= +StorageOptChooser.lbl.longC1.fr.text.changed=20110317061957 +StorageOptChooser.lbl.longC1.fr.text.md5=IPm/afwbftx8Z6i1YMzb4A\=\= +StorageOptChooser.lbl.longC2..text.changed=20110317061957 +StorageOptChooser.lbl.longC2..text.md5=6jsxmf6Tx8uO2mhj4WdtAA\=\= +StorageOptChooser.lbl.longC2.es.text.changed=20110317062041 +StorageOptChooser.lbl.longC2.es.text.md5=e8/RzQ8FTmzE2btU0aJAuQ\=\= +StorageOptChooser.lbl.longC2.fr.text.changed=20110317061957 +StorageOptChooser.lbl.longC2.fr.text.md5=1kiAknYfXMWZT/yQEtccGg\=\= +StorageOptChooser.lbl.longD1..text.changed=20110317061957 +StorageOptChooser.lbl.longD1..text.md5=bTRNdxLTB3CudJok7WDmjg\=\= +StorageOptChooser.lbl.longD1.es.text.changed=20110317062041 +StorageOptChooser.lbl.longD1.es.text.md5=pZ9uj04S9Z2M+1FwUyWy6g\=\= +StorageOptChooser.lbl.longD1.fr.text.changed=20110317061957 +StorageOptChooser.lbl.longD1.fr.text.md5=ParrYM4pvQqdVSiS1Hp5Ew\=\= +StorageOptChooser.lbl.seconds..text.changed=20110317061957 +StorageOptChooser.lbl.seconds..text.md5=eD6OKeaow+IrqlihlCDrTw\=\= +StorageOptChooser.lbl.seconds.es.text.changed=20110317062041 +StorageOptChooser.lbl.seconds.es.text.md5=uef9BJ071zSP7+kM+n4AfQ\=\= +StorageOptChooser.lbl.seconds.fr.text.changed=20110317061957 +StorageOptChooser.lbl.seconds.fr.text.md5=PK6Hg67qettTlQ/ZvpMLrg\=\= +StorageOptChooser.rdbut.Allsimdata..text.changed=20110317061957 +StorageOptChooser.rdbut.Allsimdata..text.md5=Ju1mILZUUCK+yy908q4nlw\=\= +StorageOptChooser.rdbut.Allsimdata.es.text.changed=20110317062041 +StorageOptChooser.rdbut.Allsimdata.es.text.md5=2ZdsnlskxZSBd3QBYCmTPA\=\= +StorageOptChooser.rdbut.Allsimdata.fr.text.changed=20110317061957 +StorageOptChooser.rdbut.Allsimdata.fr.text.md5=uYXySTU1VjhqwtdqWkDfPg\=\= +StorageOptChooser.rdbut.Every..text.changed=20110317061957 +StorageOptChooser.rdbut.Every..text.md5=/89w6JK4rD+susD4hgI5aw\=\= +StorageOptChooser.rdbut.Every.es.text.changed=20110317062041 +StorageOptChooser.rdbut.Every.es.text.md5=o1A1NlYQkkCsYyOqbtnuaA\=\= +StorageOptChooser.rdbut.Every.fr.text.changed=20110317061957 +StorageOptChooser.rdbut.Every.fr.text.md5=/89w6JK4rD+susD4hgI5aw\=\= +StorageOptChooser.rdbut.Onlyprimfig..text.changed=20110317061957 +StorageOptChooser.rdbut.Onlyprimfig..text.md5=cVGIKme2gZh6C2CPwcv5rw\=\= +StorageOptChooser.rdbut.Onlyprimfig.es.text.changed=20110317062041 +StorageOptChooser.rdbut.Onlyprimfig.es.text.md5=bh5KXQ00MY35WNZjHp2ZQg\=\= +StorageOptChooser.rdbut.Onlyprimfig.fr.text.changed=20110317061957 +StorageOptChooser.rdbut.Onlyprimfig.fr.text.md5=p2FA1g9I2oT4W7KZYmLQFg\=\= +StorageOptChooser.ttip.Saveopt..text.changed=20110317061957 +StorageOptChooser.ttip.Saveopt..text.md5=kRiD4hklEWPEoNvjKzbvjA\=\= +StorageOptChooser.ttip.Saveopt.es.text.changed=20110317062041 +StorageOptChooser.ttip.Saveopt.es.text.md5=7kyEiyBRR/2tbO6CzoKcnw\=\= +StorageOptChooser.ttip.Saveopt.fr.text.changed=20110317061957 +StorageOptChooser.ttip.Saveopt.fr.text.md5=14ocVB6TM5F3S/7LpG8NZQ\=\= +StreamerCfg.but.Reset..text.changed=20110317061957 +StreamerCfg.but.Reset..text.md5=Um1ojzeobTw/J9DFAW63HQ\=\= +StreamerCfg.but.Reset.es.text.changed=20110317062041 +StreamerCfg.but.Reset.es.text.md5=1AyYmA0X0AKMM9UVNCdanQ\=\= +StreamerCfg.but.Reset.fr.text.changed=20110317061957 +StreamerCfg.but.Reset.fr.text.md5=fgGw8uzsqquPbh/0yFLRMg\=\= +StreamerCfg.combo.ttip.MaterialModel..text.changed=20110317061957 +StreamerCfg.combo.ttip.MaterialModel..text.md5=DAgqIeIiYrmv0taT33oRxg\=\= +StreamerCfg.combo.ttip.MaterialModel.es.text.changed=20110317062041 +StreamerCfg.combo.ttip.MaterialModel.es.text.md5=X/hW308rVQ/o6fhdoswWkg\=\= +StreamerCfg.combo.ttip.MaterialModel.fr.text.changed=20110317061957 +StreamerCfg.combo.ttip.MaterialModel.fr.text.md5=ItFmkpJv49F3DxVe8FVQlg\=\= +StreamerCfg.lbl.Altitude..text.changed=20110317061957 +StreamerCfg.lbl.Altitude..text.md5=E0gTnkAiZOiphJQJBJsnHg\=\= +StreamerCfg.lbl.Altitude.es.text.changed=20110317062041 +StreamerCfg.lbl.Altitude.es.text.md5=kW45w2n1Z2I4g9aZwsJQ7A\=\= +StreamerCfg.lbl.Altitude.fr.text.changed=20110317061957 +StreamerCfg.lbl.Altitude.fr.text.md5=E0gTnkAiZOiphJQJBJsnHg\=\= +StreamerCfg.lbl.Aspectratio..text.changed=20110317061957 +StreamerCfg.lbl.Aspectratio..text.md5=Sj2yKs9mM2ftjEli9Tib/A\=\= +StreamerCfg.lbl.Aspectratio.es.text.changed=20110317062041 +StreamerCfg.lbl.Aspectratio.es.text.md5=eQRemWTwyGfRQbDiaY+ZTw\=\= +StreamerCfg.lbl.Aspectratio.fr.text.changed=20110317061957 +StreamerCfg.lbl.Aspectratio.fr.text.md5=Sj2yKs9mM2ftjEli9Tib/A\=\= +StreamerCfg.lbl.Automatic..text.changed=20110317061957 +StreamerCfg.lbl.Automatic..text.md5=CGJHqbV/3m7v7ioMR1IkLQ\=\= +StreamerCfg.lbl.Automatic.es.text.changed=20110317062041 +StreamerCfg.lbl.Automatic.es.text.md5=D3uT6/H6hH/AStlgA624Tw\=\= +StreamerCfg.lbl.Automatic.fr.text.changed=20110317061957 +StreamerCfg.lbl.Automatic.fr.text.md5=rO2dama6vw/FNskM7H2i5w\=\= +StreamerCfg.lbl.Deploysat..text.changed=20110317061957 +StreamerCfg.lbl.Deploysat..text.md5=IxstQijgTJb/8AvIWRQH9w\=\= +StreamerCfg.lbl.Deploysat.es.text.changed=20110317062041 +StreamerCfg.lbl.Deploysat.es.text.md5=PFtI778/6ixDszE4bzlYsg\=\= +StreamerCfg.lbl.Deploysat.fr.text.changed=20110317061957 +StreamerCfg.lbl.Deploysat.fr.text.md5=JELD/qo7Duj0UQ7PerJNLA\=\= +StreamerCfg.lbl.Material..text.changed=20110317061957 +StreamerCfg.lbl.Material..text.md5=1zibzLtopzoHLVvzqb0tkw\=\= +StreamerCfg.lbl.Material.es.text.changed=20110317062041 +StreamerCfg.lbl.Material.es.text.md5=1zibzLtopzoHLVvzqb0tkw\=\= +StreamerCfg.lbl.Material.fr.text.changed=20110317061957 +StreamerCfg.lbl.Material.fr.text.md5=cPnLRUd7khfn1RS1/D+2uw\=\= +StreamerCfg.lbl.Packeddiam..text.changed=20110317061957 +StreamerCfg.lbl.Packeddiam..text.md5=ZLli2T49cm2t4O2DM2Qdfg\=\= +StreamerCfg.lbl.Packeddiam.es.text.changed=20110317062041 +StreamerCfg.lbl.Packeddiam.es.text.md5=tDjygc1+amZ7kX7dxySsXQ\=\= +StreamerCfg.lbl.Packeddiam.fr.text.changed=20110317061957 +StreamerCfg.lbl.Packeddiam.fr.text.md5=g380nkSdujAcYudBWYsSug\=\= +StreamerCfg.lbl.Packedlength..text.changed=20110317061957 +StreamerCfg.lbl.Packedlength..text.md5=UXXIbj2JBgPTWzdfLI0olQ\=\= +StreamerCfg.lbl.Packedlength.es.text.changed=20110317062041 +StreamerCfg.lbl.Packedlength.es.text.md5=RoAOGZbGbTVf3xEEbt0gww\=\= +StreamerCfg.lbl.Packedlength.fr.text.changed=20110317061957 +StreamerCfg.lbl.Packedlength.fr.text.md5=PdS66kMXqE7v7fQkz222Xg\=\= +StreamerCfg.lbl.Posrelativeto..text.changed=20110317061957 +StreamerCfg.lbl.Posrelativeto..text.md5=uld2YfO/C3gWkbRzlw+EMA\=\= +StreamerCfg.lbl.Posrelativeto.es.text.changed=20110317062041 +StreamerCfg.lbl.Posrelativeto.es.text.md5=6hQM5zYAcKv2lio49/hQqQ\=\= +StreamerCfg.lbl.Posrelativeto.fr.text.changed=20110317061957 +StreamerCfg.lbl.Posrelativeto.fr.text.md5=b5qJfneiAEVaRoxk125f2Q\=\= +StreamerCfg.lbl.Radialdirection..text.changed=20110317061957 +StreamerCfg.lbl.Radialdirection..text.md5=i1kLjBiCCrq0JyXJbJJWLQ\=\= +StreamerCfg.lbl.Radialdirection.es.text.changed=20110317062041 +StreamerCfg.lbl.Radialdirection.es.text.md5=8+Pa5rnto1tOMcLkMe+SVQ\=\= +StreamerCfg.lbl.Radialdirection.fr.text.changed=20110317061957 +StreamerCfg.lbl.Radialdirection.fr.text.md5=t1/lCCHD0C++YMqbld91CQ\=\= +StreamerCfg.lbl.Radialdistance..text.changed=20110317061957 +StreamerCfg.lbl.Radialdistance..text.md5=h+4GwPEjxtLCbattbJsWCg\=\= +StreamerCfg.lbl.Radialdistance.es.text.changed=20110317062041 +StreamerCfg.lbl.Radialdistance.es.text.md5=uZzanR16zi50c71Ltb76ZA\=\= +StreamerCfg.lbl.Radialdistance.fr.text.changed=20110317061957 +StreamerCfg.lbl.Radialdistance.fr.text.md5=EyX3DbszXL+q71CaMkPwjw\=\= +StreamerCfg.lbl.Striparea..text.changed=20110317061957 +StreamerCfg.lbl.Striparea..text.md5=lpW4AwYL4U9zDDgrv4Dvjg\=\= +StreamerCfg.lbl.Striparea.es.text.changed=20110317062041 +StreamerCfg.lbl.Striparea.es.text.md5=w0kPkViQcTVDaxkFbPFl2A\=\= +StreamerCfg.lbl.Striparea.fr.text.changed=20110317061957 +StreamerCfg.lbl.Striparea.fr.text.md5=hO9MrIyjf3/pheq5d9//WA\=\= +StreamerCfg.lbl.Striplength..text.changed=20110317061957 +StreamerCfg.lbl.Striplength..text.md5=uadMy9mjgoATmzduOQBK7g\=\= +StreamerCfg.lbl.Striplength.es.text.changed=20110317062041 +StreamerCfg.lbl.Striplength.es.text.md5=Z3itL8N3oCQBqp5ATaFZkQ\=\= +StreamerCfg.lbl.Striplength.fr.text.changed=20110317061957 +StreamerCfg.lbl.Striplength.fr.text.md5=CEo3w7b2ctoIFPGXyCGZmg\=\= +StreamerCfg.lbl.Stripwidth..text.changed=20110317061957 +StreamerCfg.lbl.Stripwidth..text.md5=3lLZVVZ+uov5eI0NBfcc+A\=\= +StreamerCfg.lbl.Stripwidth.es.text.changed=20110317062041 +StreamerCfg.lbl.Stripwidth.es.text.md5=4DvqypzGbIJ9b0C0EzgiYQ\=\= +StreamerCfg.lbl.Stripwidth.fr.text.changed=20110317061957 +StreamerCfg.lbl.Stripwidth.fr.text.md5=oyXWXim/RbCY5bv3trAB4A\=\= +StreamerCfg.lbl.longA1..text.changed=20110317061957 +StreamerCfg.lbl.longA1..text.md5=+e/wsU4oZBXvD9lztBpgiw\=\= +StreamerCfg.lbl.longA1.es.text.changed=20110317062041 +StreamerCfg.lbl.longA1.es.text.md5=jE2h3oPBhipcxFLbZO8Dcg\=\= +StreamerCfg.lbl.longA1.fr.text.changed=20110317061957 +StreamerCfg.lbl.longA1.fr.text.md5=0FHoANBt31B4ZVACneVWrg\=\= +StreamerCfg.lbl.longB1..text.changed=20110317061957 +StreamerCfg.lbl.longB1..text.md5=TAsxKZJp1YOGgOpYuNLiiQ\=\= +StreamerCfg.lbl.longB1.es.text.changed=20110317062041 +StreamerCfg.lbl.longB1.es.text.md5=72A3WljVgTbFLdt4ZonqjA\=\= +StreamerCfg.lbl.longB1.fr.text.changed=20110317061957 +StreamerCfg.lbl.longB1.fr.text.md5=pc7bVfKhv1AXGR/gE+ickA\=\= +StreamerCfg.lbl.longB2..text.changed=20110317061957 +StreamerCfg.lbl.longB2..text.md5=OXsSZt4Vvw38WOQwP3JXpw\=\= +StreamerCfg.lbl.longB2.es.text.changed=20110317062041 +StreamerCfg.lbl.longB2.es.text.md5=CVONnEE4D7ZwHpS6rgaRhA\=\= +StreamerCfg.lbl.longB2.fr.text.changed=20110317061957 +StreamerCfg.lbl.longB2.fr.text.md5=ewcdCmcY77X4/IDkjVwfFA\=\= +StreamerCfg.lbl.longC1..text.changed=20110317061957 +StreamerCfg.lbl.longC1..text.md5=Pkhhx/eevmBtsclBE30YFQ\=\= +StreamerCfg.lbl.longC1.es.text.changed=20110317062041 +StreamerCfg.lbl.longC1.es.text.md5=CNf3NsunxsUDTDCM8pEeMA\=\= +StreamerCfg.lbl.longC1.fr.text.changed=20110317061957 +StreamerCfg.lbl.longC1.fr.text.md5=OaN1GOIvIAtfW68TV1ZjPg\=\= +StreamerCfg.lbl.plus..text.changed=20110317061957 +StreamerCfg.lbl.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +StreamerCfg.lbl.plus.es.text.changed=20110317062041 +StreamerCfg.lbl.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +StreamerCfg.lbl.plus.fr.text.changed=20110317061957 +StreamerCfg.lbl.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +StreamerCfg.lbl.seconds..text.changed=20110317061957 +StreamerCfg.lbl.seconds..text.md5=eD6OKeaow+IrqlihlCDrTw\=\= +StreamerCfg.lbl.seconds.es.text.changed=20110317062041 +StreamerCfg.lbl.seconds.es.text.md5=UxqeEPFTlrCXqhUT1Oib0A\=\= +StreamerCfg.lbl.seconds.fr.text.changed=20110317061957 +StreamerCfg.lbl.seconds.fr.text.md5=PK6Hg67qettTlQ/ZvpMLrg\=\= +StreamerCfg.tab.General..text.changed=20110317061957 +StreamerCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +StreamerCfg.tab.General.es.text.changed=20110317062041 +StreamerCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +StreamerCfg.tab.General.fr.text.changed=20110317061957 +StreamerCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\= +StreamerCfg.tab.Radialpos..text.changed=20110317061957 +StreamerCfg.tab.Radialpos..text.md5=N5z4APVe3yv5ut4IxUtg8A\=\= +StreamerCfg.tab.Radialpos.es.text.changed=20110317062041 +StreamerCfg.tab.Radialpos.es.text.md5=gAtRIJz+LZxcZML8QNFtSQ\=\= +StreamerCfg.tab.Radialpos.fr.text.changed=20110317061957 +StreamerCfg.tab.Radialpos.fr.text.md5=rX8euW6QQ2ZOgQivvVMsOg\=\= +StreamerCfg.tab.ttip.General..text.changed=20110317061957 +StreamerCfg.tab.ttip.General..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\= +StreamerCfg.tab.ttip.General.es.text.changed=20110317062041 +StreamerCfg.tab.ttip.General.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\= +StreamerCfg.tab.ttip.General.fr.text.changed=20110317061957 +StreamerCfg.tab.ttip.General.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\= +StreamerCfg.tab.ttip.Radialpos..text.changed=20110317061957 +StreamerCfg.tab.ttip.Radialpos..text.md5=VWjNybFzuNElITpmCwHoJA\=\= +StreamerCfg.tab.ttip.Radialpos.es.text.changed=20110317062041 +StreamerCfg.tab.ttip.Radialpos.es.text.md5=iykbais0v1SylZccOdKSRw\=\= +StreamerCfg.tab.ttip.Radialpos.fr.text.changed=20110317061957 +StreamerCfg.tab.ttip.Radialpos.fr.text.md5=5z3CTUaVO25LBXPH1X1pBA\=\= +TCMotorSelPan.SHOW_DESCRIPTIONS.desc1..text.changed=20110317061957 +TCMotorSelPan.SHOW_DESCRIPTIONS.desc1..text.md5=mQnK3ax2dWwe2jPF5u8Zmw\=\= +TCMotorSelPan.SHOW_DESCRIPTIONS.desc1.es.text.changed=20110317062041 +TCMotorSelPan.SHOW_DESCRIPTIONS.desc1.es.text.md5=mQnK3ax2dWwe2jPF5u8Zmw\=\= +TCMotorSelPan.SHOW_DESCRIPTIONS.desc1.fr.text.changed=20110317061957 +TCMotorSelPan.SHOW_DESCRIPTIONS.desc1.fr.text.md5=bI8aSKVFx7WxTJk5G9RYzw\=\= +TCMotorSelPan.SHOW_DESCRIPTIONS.desc2..text.changed=20110317061957 +TCMotorSelPan.SHOW_DESCRIPTIONS.desc2..text.md5=qLmFSlEtllxlygqSfsV1HQ\=\= +TCMotorSelPan.SHOW_DESCRIPTIONS.desc2.es.text.changed=20110317062041 +TCMotorSelPan.SHOW_DESCRIPTIONS.desc2.es.text.md5=qLmFSlEtllxlygqSfsV1HQ\=\= +TCMotorSelPan.SHOW_DESCRIPTIONS.desc2.fr.text.changed=20110317061957 +TCMotorSelPan.SHOW_DESCRIPTIONS.desc2.fr.text.md5=wa9Kcq+MwUnN8hY8HD2u0g\=\= +TCMotorSelPan.SHOW_DESCRIPTIONS.desc3..text.changed=20110317061957 +TCMotorSelPan.SHOW_DESCRIPTIONS.desc3..text.md5=JYVW19z/+VGMPJqE9s20UA\=\= +TCMotorSelPan.SHOW_DESCRIPTIONS.desc3.es.text.changed=20110317062041 +TCMotorSelPan.SHOW_DESCRIPTIONS.desc3.es.text.md5=JYVW19z/+VGMPJqE9s20UA\=\= +TCMotorSelPan.SHOW_DESCRIPTIONS.desc3.fr.text.changed=20110317061957 +TCMotorSelPan.SHOW_DESCRIPTIONS.desc3.fr.text.md5=mDkImOVA7BFg80JIqmgkfQ\=\= +TCMotorSelPan.checkbox.hideSimilar..text.changed=20110317061957 +TCMotorSelPan.checkbox.hideSimilar..text.md5=Q1pQ+6NCWnBqNpueeX1m5g\=\= +TCMotorSelPan.checkbox.hideSimilar.es.text.changed=20110317062041 +TCMotorSelPan.checkbox.hideSimilar.es.text.md5=3fcm0eHOTAHgoiHM9ccc8Q\=\= +TCMotorSelPan.checkbox.hideSimilar.fr.text.changed=20110317061957 +TCMotorSelPan.checkbox.hideSimilar.fr.text.md5=W093A91qJRkkTEMRWchqfA\=\= +TCMotorSelPan.delayBox.None..text.changed=20110317061957 +TCMotorSelPan.delayBox.None..text.md5=at+X+DrPZFPUpqSxBw83VA\=\= +TCMotorSelPan.delayBox.None.es.text.changed=20110317062041 +TCMotorSelPan.delayBox.None.es.text.md5=at+X+DrPZFPUpqSxBw83VA\=\= +TCMotorSelPan.delayBox.None.fr.text.changed=20110317061957 +TCMotorSelPan.delayBox.None.fr.text.md5=56vBja7oyq1Y8fL6i5EgTg\=\= +TCMotorSelPan.equalsIgnoreCase.None..text.changed=20110317061957 +TCMotorSelPan.equalsIgnoreCase.None..text.md5=at+X+DrPZFPUpqSxBw83VA\=\= +TCMotorSelPan.equalsIgnoreCase.None.es.text.changed=20110317062041 +TCMotorSelPan.equalsIgnoreCase.None.es.text.md5=at+X+DrPZFPUpqSxBw83VA\=\= +TCMotorSelPan.equalsIgnoreCase.None.fr.text.changed=20110317061957 +TCMotorSelPan.equalsIgnoreCase.None.fr.text.md5=56vBja7oyq1Y8fL6i5EgTg\=\= +TCMotorSelPan.lbl.Avgthrust..text.changed=20110317061957 +TCMotorSelPan.lbl.Avgthrust..text.md5=UynPDmo4yM9N7Tkbq9WnvA\=\= +TCMotorSelPan.lbl.Avgthrust.es.text.changed=20110317062041 +TCMotorSelPan.lbl.Avgthrust.es.text.md5=UynPDmo4yM9N7Tkbq9WnvA\=\= +TCMotorSelPan.lbl.Avgthrust.fr.text.changed=20110317061957 +TCMotorSelPan.lbl.Avgthrust.fr.text.md5=3uB1maOonQ6zzusEqRrltg\=\= +TCMotorSelPan.lbl.Burntime..text.changed=20110317061957 +TCMotorSelPan.lbl.Burntime..text.md5=gau5lgnkNrP9k3Qc5pX5OA\=\= +TCMotorSelPan.lbl.Burntime.es.text.changed=20110317062041 +TCMotorSelPan.lbl.Burntime.es.text.md5=gau5lgnkNrP9k3Qc5pX5OA\=\= +TCMotorSelPan.lbl.Burntime.fr.text.changed=20110317061957 +TCMotorSelPan.lbl.Burntime.fr.text.md5=LCw2pjRT87KJWooKTeI3eQ\=\= +TCMotorSelPan.lbl.Datapoints..text.changed=20110317061957 +TCMotorSelPan.lbl.Datapoints..text.md5=BjuD3zcrIsKjkWcsQUzYgg\=\= +TCMotorSelPan.lbl.Datapoints.es.text.changed=20110317062041 +TCMotorSelPan.lbl.Datapoints.es.text.md5=BjuD3zcrIsKjkWcsQUzYgg\=\= +TCMotorSelPan.lbl.Datapoints.fr.text.changed=20110317061957 +TCMotorSelPan.lbl.Datapoints.fr.text.md5=6K4aF3kZr66ujstz1RsLLQ\=\= +TCMotorSelPan.lbl.Digest..text.changed=20110317061957 +TCMotorSelPan.lbl.Digest..text.md5=xsGZDwLgzlxmYikt9I/z2g\=\= +TCMotorSelPan.lbl.Digest.es.text.changed=20110317062041 +TCMotorSelPan.lbl.Digest.es.text.md5=xsGZDwLgzlxmYikt9I/z2g\=\= +TCMotorSelPan.lbl.Digest.fr.text.changed=20110317061957 +TCMotorSelPan.lbl.Digest.fr.text.md5=OqNvSHZcBEi/2h1K0KHW3w\=\= +TCMotorSelPan.lbl.Ejectionchargedelay..text.changed=20110317061957 +TCMotorSelPan.lbl.Ejectionchargedelay..text.md5=W/I+R+3jo3YdvmbrMf4uLg\=\= +TCMotorSelPan.lbl.Ejectionchargedelay.es.text.changed=20110317062041 +TCMotorSelPan.lbl.Ejectionchargedelay.es.text.md5=W/I+R+3jo3YdvmbrMf4uLg\=\= +TCMotorSelPan.lbl.Ejectionchargedelay.fr.text.changed=20110317061957 +TCMotorSelPan.lbl.Ejectionchargedelay.fr.text.md5=Dex2MGvxUV3WSxggJJIpGw\=\= +TCMotorSelPan.lbl.Emptymass..text.changed=20110317061957 +TCMotorSelPan.lbl.Emptymass..text.md5=h3usYdDTqo7Kr/wWp1NBCw\=\= +TCMotorSelPan.lbl.Emptymass.es.text.changed=20110317062041 +TCMotorSelPan.lbl.Emptymass.es.text.md5=h3usYdDTqo7Kr/wWp1NBCw\=\= +TCMotorSelPan.lbl.Emptymass.fr.text.changed=20110317061957 +TCMotorSelPan.lbl.Emptymass.fr.text.md5=PSGljaJ7BtHQullYjH+h6Q\=\= +TCMotorSelPan.lbl.Launchmass..text.changed=20110317061957 +TCMotorSelPan.lbl.Launchmass..text.md5=6PZdDFAasqalSYDAQKcKsw\=\= +TCMotorSelPan.lbl.Launchmass.es.text.changed=20110317062041 +TCMotorSelPan.lbl.Launchmass.es.text.md5=6PZdDFAasqalSYDAQKcKsw\=\= +TCMotorSelPan.lbl.Launchmass.fr.text.changed=20110317061957 +TCMotorSelPan.lbl.Launchmass.fr.text.md5=NyZDxqILnY3EevnWznPZJQ\=\= +TCMotorSelPan.lbl.Maxthrust..text.changed=20110317061957 +TCMotorSelPan.lbl.Maxthrust..text.md5=et5CO5k6ZtzmowESTHXhMw\=\= +TCMotorSelPan.lbl.Maxthrust.es.text.changed=20110317062041 +TCMotorSelPan.lbl.Maxthrust.es.text.md5=et5CO5k6ZtzmowESTHXhMw\=\= +TCMotorSelPan.lbl.Maxthrust.fr.text.changed=20110317061957 +TCMotorSelPan.lbl.Maxthrust.fr.text.md5=0XU0fODCtm7wjKTbN2UXZw\=\= +TCMotorSelPan.lbl.Motormountdia..text.changed=20110317061957 +TCMotorSelPan.lbl.Motormountdia..text.md5=/Lg+SkxURvNZCqZhEFHmxg\=\= +TCMotorSelPan.lbl.Motormountdia.es.text.changed=20110317062041 +TCMotorSelPan.lbl.Motormountdia.es.text.md5=/Lg+SkxURvNZCqZhEFHmxg\=\= +TCMotorSelPan.lbl.Motormountdia.fr.text.changed=20110317061957 +TCMotorSelPan.lbl.Motormountdia.fr.text.md5=U8hNlKzuzr6R0tj4lPAEyw\=\= +TCMotorSelPan.lbl.NumberofsecondsorNone..text.changed=20110317061957 +TCMotorSelPan.lbl.NumberofsecondsorNone..text.md5=WKS3cs1u3ZTM4px/jCYM3Q\=\= +TCMotorSelPan.lbl.NumberofsecondsorNone.es.text.changed=20110317062041 +TCMotorSelPan.lbl.NumberofsecondsorNone.es.text.md5=WKS3cs1u3ZTM4px/jCYM3Q\=\= +TCMotorSelPan.lbl.NumberofsecondsorNone.fr.text.changed=20110317061957 +TCMotorSelPan.lbl.NumberofsecondsorNone.fr.text.md5=wf/Od/8x6jGib/E8QhdjiA\=\= +TCMotorSelPan.lbl.Search..text.changed=20110317061957 +TCMotorSelPan.lbl.Search..text.md5=JMKXAtycY97bmOkvMCjgaA\=\= +TCMotorSelPan.lbl.Search.es.text.changed=20110317062041 +TCMotorSelPan.lbl.Search.es.text.md5=JMKXAtycY97bmOkvMCjgaA\=\= +TCMotorSelPan.lbl.Search.fr.text.changed=20110317061957 +TCMotorSelPan.lbl.Search.fr.text.md5=XXZaPhcfFlVe8krDbmLH/Q\=\= +TCMotorSelPan.lbl.Selectthrustcurve..text.changed=20110317061957 +TCMotorSelPan.lbl.Selectthrustcurve..text.md5=tCo6A6UlD07aR1ClfK4M2Q\=\= +TCMotorSelPan.lbl.Selectthrustcurve.es.text.changed=20110317062041 +TCMotorSelPan.lbl.Selectthrustcurve.es.text.md5=tCo6A6UlD07aR1ClfK4M2Q\=\= +TCMotorSelPan.lbl.Selectthrustcurve.fr.text.changed=20110317061957 +TCMotorSelPan.lbl.Selectthrustcurve.fr.text.md5=EH0ZSVArpyTyUrxd7rN57w\=\= +TCMotorSelPan.lbl.Selrocketmotor..text.changed=20110317061957 +TCMotorSelPan.lbl.Selrocketmotor..text.md5=6Ujd0/5zZMLn6QtVeLNuUg\=\= +TCMotorSelPan.lbl.Selrocketmotor.es.text.changed=20110317062041 +TCMotorSelPan.lbl.Selrocketmotor.es.text.md5=ZCedyKStfuVhRC6dnH3Vvg\=\= +TCMotorSelPan.lbl.Selrocketmotor.fr.text.changed=20110317061957 +TCMotorSelPan.lbl.Selrocketmotor.fr.text.md5=ttRoQfrvsLsNAYBb9SfRRA\=\= +TCMotorSelPan.lbl.Totalimpulse..text.changed=20110317061957 +TCMotorSelPan.lbl.Totalimpulse..text.md5=ZDshEiFE3a4LgL7awkgWrQ\=\= +TCMotorSelPan.lbl.Totalimpulse.es.text.changed=20110317062041 +TCMotorSelPan.lbl.Totalimpulse.es.text.md5=ZDshEiFE3a4LgL7awkgWrQ\=\= +TCMotorSelPan.lbl.Totalimpulse.fr.text.changed=20110317061957 +TCMotorSelPan.lbl.Totalimpulse.fr.text.md5=NpXvobhBhx9ZATcB6zR4hg\=\= +TCMotorSelPan.title.Thrust..text.changed=20110317061957 +TCMotorSelPan.title.Thrust..text.md5=hcR/m33zJNHbJ5Tg4rioEA\=\= +TCMotorSelPan.title.Thrust.es.text.changed=20110317062041 +TCMotorSelPan.title.Thrust.es.text.md5=hcR/m33zJNHbJ5Tg4rioEA\=\= +TCMotorSelPan.title.Thrust.fr.text.changed=20110317061957 +TCMotorSelPan.title.Thrust.fr.text.md5=pfYvmVTjP0jRSat0JzP6Cg\=\= +TCMotorSelPan.title.Thrustcurve..text.changed=20110317061957 +TCMotorSelPan.title.Thrustcurve..text.md5=5CIM1TcNYXh/9frNIENeVA\=\= +TCMotorSelPan.title.Thrustcurve.es.text.changed=20110317062041 +TCMotorSelPan.title.Thrustcurve.es.text.md5=5CIM1TcNYXh/9frNIENeVA\=\= +TCMotorSelPan.title.Thrustcurve.fr.text.changed=20110317061957 +TCMotorSelPan.title.Thrustcurve.fr.text.md5=t6S/JYsevASObtfuAHAnEg\=\= +TCurveMotorCol.DESIGNATION..text.changed=20110317061957 +TCurveMotorCol.DESIGNATION..text.md5=8Qf1qe5OzqWNDymueVm6qA\=\= +TCurveMotorCol.DESIGNATION.es.text.changed=20110317062041 +TCurveMotorCol.DESIGNATION.es.text.md5=8Qf1qe5OzqWNDymueVm6qA\=\= +TCurveMotorCol.DESIGNATION.fr.text.changed=20110317061957 +TCurveMotorCol.DESIGNATION.fr.text.md5=DI6smpts0ai8oD+DNiz+6A\=\= +TCurveMotorCol.DIAMETER..text.changed=20110317061957 +TCurveMotorCol.DIAMETER..text.md5=tfaUSIMmB2/yAMerlVwEVQ\=\= +TCurveMotorCol.DIAMETER.es.text.changed=20110317062041 +TCurveMotorCol.DIAMETER.es.text.md5=tfaUSIMmB2/yAMerlVwEVQ\=\= +TCurveMotorCol.DIAMETER.fr.text.changed=20110317061957 +TCurveMotorCol.DIAMETER.fr.text.md5=WCZj8bfE/hVJfiLJCQp5UQ\=\= +TCurveMotorCol.LENGTH..text.changed=20110317061957 +TCurveMotorCol.LENGTH..text.md5=uiqcbIx34D+D74v1Q2EidQ\=\= +TCurveMotorCol.LENGTH.es.text.changed=20110317062041 +TCurveMotorCol.LENGTH.es.text.md5=uiqcbIx34D+D74v1Q2EidQ\=\= +TCurveMotorCol.LENGTH.fr.text.changed=20110317061957 +TCurveMotorCol.LENGTH.fr.text.md5=9IOe9DS00o4xVraDw/tFiQ\=\= +TCurveMotorCol.MANUFACTURER..text.changed=20110317061957 +TCurveMotorCol.MANUFACTURER..text.md5=wL12VNWyeOZfIc9OkVP9tA\=\= +TCurveMotorCol.MANUFACTURER.es.text.changed=20110317062041 +TCurveMotorCol.MANUFACTURER.es.text.md5=wL12VNWyeOZfIc9OkVP9tA\=\= +TCurveMotorCol.MANUFACTURER.fr.text.changed=20110317061957 +TCurveMotorCol.MANUFACTURER.fr.text.md5=oq/UPysl6cFOUNIxGq9G+w\=\= +TCurveMotorCol.TYPE..text.changed=20110317061957 +TCurveMotorCol.TYPE..text.md5=ofond5JCtJAveuO91cbVCA\=\= +TCurveMotorCol.TYPE.es.text.changed=20110317062041 +TCurveMotorCol.TYPE.es.text.md5=ofond5JCtJAveuO91cbVCA\=\= +TCurveMotorCol.TYPE.fr.text.changed=20110317061957 +TCurveMotorCol.TYPE.fr.text.md5=ofond5JCtJAveuO91cbVCA\=\= +ThicknessRingCompCfg.tab.General..text.changed=20110317061957 +ThicknessRingCompCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +ThicknessRingCompCfg.tab.General.es.text.changed=20110317062041 +ThicknessRingCompCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +ThicknessRingCompCfg.tab.General.fr.text.changed=20110317061957 +ThicknessRingCompCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\= +ThicknessRingCompCfg.tab.Generalprop..text.changed=20110317061957 +ThicknessRingCompCfg.tab.Generalprop..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\= +ThicknessRingCompCfg.tab.Generalprop.es.text.changed=20110317062041 +ThicknessRingCompCfg.tab.Generalprop.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\= +ThicknessRingCompCfg.tab.Generalprop.fr.text.changed=20110317061957 +ThicknessRingCompCfg.tab.Generalprop.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\= +ThicknessRingCompCfg.tab.Innerdiam..text.changed=20110317061957 +ThicknessRingCompCfg.tab.Innerdiam..text.md5=tl1ONj0/SCF9YCFirUoyVw\=\= +ThicknessRingCompCfg.tab.Innerdiam.es.text.changed=20110317062041 +ThicknessRingCompCfg.tab.Innerdiam.es.text.md5=SM6oEkEC5ujDTN/d/S1m9A\=\= +ThicknessRingCompCfg.tab.Innerdiam.fr.text.changed=20110317061957 +ThicknessRingCompCfg.tab.Innerdiam.fr.text.md5=dCK7G8SxW0uKiJDjm3NQkA\=\= +ThicknessRingCompCfg.tab.Length..text.changed=20110317061957 +ThicknessRingCompCfg.tab.Length..text.md5=ZLM0xpJRtyw1DiXkYrVEKQ\=\= +ThicknessRingCompCfg.tab.Length.es.text.changed=20110317062041 +ThicknessRingCompCfg.tab.Length.es.text.md5=ycRTbjDcF+h0kJEC9Al45A\=\= +ThicknessRingCompCfg.tab.Length.fr.text.changed=20110317061957 +ThicknessRingCompCfg.tab.Length.fr.text.md5=+LpNY6MXcK9YQIbuQnHwPA\=\= +ThicknessRingCompCfg.tab.Outerdiam..text.changed=20110317061957 +ThicknessRingCompCfg.tab.Outerdiam..text.md5=AGmg3a+zlhzs+h+4J0JE8g\=\= +ThicknessRingCompCfg.tab.Outerdiam.es.text.changed=20110317062041 +ThicknessRingCompCfg.tab.Outerdiam.es.text.md5=Wm4jWwBkyecxm7/F8cQ0NQ\=\= +ThicknessRingCompCfg.tab.Outerdiam.fr.text.changed=20110317061957 +ThicknessRingCompCfg.tab.Outerdiam.fr.text.md5=XToXLedSc/XzNboRMC0Ujw\=\= +ThicknessRingCompCfg.tab.Wallthickness..text.changed=20110317061957 +ThicknessRingCompCfg.tab.Wallthickness..text.md5=+fnX03pPwQt6SXS2we8xRg\=\= +ThicknessRingCompCfg.tab.Wallthickness.es.text.changed=20110317062041 +ThicknessRingCompCfg.tab.Wallthickness.es.text.md5=tT1+InFckvVCzc2RCNVVSQ\=\= +ThicknessRingCompCfg.tab.Wallthickness.fr.text.changed=20110317061957 +ThicknessRingCompCfg.tab.Wallthickness.fr.text.md5=iFOwo5u9UFPeev2I4ToeLA\=\= +Transition.Transition..text.changed=20110317061957 +Transition.Transition..text.md5=r+35r+42f1H5jXzwMMl2pg\=\= +Transition.Transition.es.text.changed=20110317062041 +Transition.Transition.es.text.md5=r+35r+42f1H5jXzwMMl2pg\=\= +Transition.Transition.fr.text.changed=20110317061957 +Transition.Transition.fr.text.md5=r+35r+42f1H5jXzwMMl2pg\=\= +TransitionCfg.checkbox.Automatic..text.changed=20110317061957 +TransitionCfg.checkbox.Automatic..text.md5=CGJHqbV/3m7v7ioMR1IkLQ\=\= +TransitionCfg.checkbox.Automatic.es.text.changed=20110317062041 +TransitionCfg.checkbox.Automatic.es.text.md5=D3uT6/H6hH/AStlgA624Tw\=\= +TransitionCfg.checkbox.Automatic.fr.text.changed=20110317061957 +TransitionCfg.checkbox.Automatic.fr.text.md5=rO2dama6vw/FNskM7H2i5w\=\= +TransitionCfg.checkbox.Clipped..text.changed=20110317061957 +TransitionCfg.checkbox.Clipped..text.md5=fFbsIbS9PU6STXnwPqIh6A\=\= +TransitionCfg.checkbox.Clipped.es.text.changed=20110317062041 +TransitionCfg.checkbox.Clipped.es.text.md5=nXWJoaeE0rx5dIvxKi2COA\=\= +TransitionCfg.checkbox.Clipped.fr.text.changed=20110317061957 +TransitionCfg.checkbox.Clipped.fr.text.md5=J4nSgiKJEzKgptkfXNJGMA\=\= +TransitionCfg.checkbox.Filled..text.changed=20110317061957 +TransitionCfg.checkbox.Filled..text.md5=2dWG+MeS+PZhBSr0JTYyPA\=\= +TransitionCfg.checkbox.Filled.es.text.changed=20110317062041 +TransitionCfg.checkbox.Filled.es.text.md5=HQ2GNI1le2Dl+Mw8w7w38w\=\= +TransitionCfg.checkbox.Filled.fr.text.changed=20110317061957 +TransitionCfg.checkbox.Filled.fr.text.md5=S975CUbtxnqWOai6+gtVIw\=\= +TransitionCfg.lbl.Aftdiam..text.changed=20110317061957 +TransitionCfg.lbl.Aftdiam..text.md5=vJ+ckrVdeDotY0tpyQjPxg\=\= +TransitionCfg.lbl.Aftdiam.es.text.changed=20110317062041 +TransitionCfg.lbl.Aftdiam.es.text.md5=rsLNJIqtl9R6GTkZZw8jdQ\=\= +TransitionCfg.lbl.Aftdiam.fr.text.changed=20110317061957 +TransitionCfg.lbl.Aftdiam.fr.text.md5=rrdssQHBQMCJiyMO93rcpg\=\= +TransitionCfg.lbl.Forediam..text.changed=20110317061957 +TransitionCfg.lbl.Forediam..text.md5=p43VAN06S2HqIXjTbWgK5w\=\= +TransitionCfg.lbl.Forediam.es.text.changed=20110317062041 +TransitionCfg.lbl.Forediam.es.text.md5=E8rhHWcasFtIUPWplzFXuA\=\= +TransitionCfg.lbl.Forediam.fr.text.changed=20110317061957 +TransitionCfg.lbl.Forediam.fr.text.md5=JaP4sdKd8SubPGM0tIfgSg\=\= +TransitionCfg.lbl.Shapeparam..text.changed=20110317061957 +TransitionCfg.lbl.Shapeparam..text.md5=KVaIAlkq0XzFBnTFAB255w\=\= +TransitionCfg.lbl.Shapeparam.es.text.changed=20110317062041 +TransitionCfg.lbl.Shapeparam.es.text.md5=Po8sDvfduHEfhS9Mo/ylOA\=\= +TransitionCfg.lbl.Shapeparam.fr.text.changed=20110317061957 +TransitionCfg.lbl.Shapeparam.fr.text.md5=3y8h1BkZndT/FOnJYA5FVQ\=\= +TransitionCfg.lbl.Transitionlength..text.changed=20110317061957 +TransitionCfg.lbl.Transitionlength..text.md5=48EHNMuGjoWZdIMpli/zTw\=\= +TransitionCfg.lbl.Transitionlength.es.text.changed=20110317062041 +TransitionCfg.lbl.Transitionlength.es.text.md5=nBDEtVGxx71WW9Cxuz7VFg\=\= +TransitionCfg.lbl.Transitionlength.fr.text.changed=20110317061957 +TransitionCfg.lbl.Transitionlength.fr.text.md5=oNY7R9UwjemRdxGXIvP7Ew\=\= +TransitionCfg.lbl.Transitionshape..text.changed=20110317061957 +TransitionCfg.lbl.Transitionshape..text.md5=letQaasoPscBWdvVE25zFg\=\= +TransitionCfg.lbl.Transitionshape.es.text.changed=20110317062041 +TransitionCfg.lbl.Transitionshape.es.text.md5=TAePzOEfD2cTQ8dELZ3Y+A\=\= +TransitionCfg.lbl.Transitionshape.fr.text.changed=20110317061957 +TransitionCfg.lbl.Transitionshape.fr.text.md5=wfzN1zhlZ4b7q0TGEIsxwQ\=\= +TransitionCfg.lbl.Wallthickness..text.changed=20110317061957 +TransitionCfg.lbl.Wallthickness..text.md5=+fnX03pPwQt6SXS2we8xRg\=\= +TransitionCfg.lbl.Wallthickness.es.text.changed=20110317062041 +TransitionCfg.lbl.Wallthickness.es.text.md5=tT1+InFckvVCzc2RCNVVSQ\=\= +TransitionCfg.lbl.Wallthickness.fr.text.changed=20110317061957 +TransitionCfg.lbl.Wallthickness.fr.text.md5=iFOwo5u9UFPeev2I4ToeLA\=\= +TransitionCfg.tab.General..text.changed=20110317061957 +TransitionCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +TransitionCfg.tab.General.es.text.changed=20110317062041 +TransitionCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +TransitionCfg.tab.General.fr.text.changed=20110317061957 +TransitionCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\= +TransitionCfg.tab.Generalproperties..text.changed=20110317061957 +TransitionCfg.tab.Generalproperties..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\= +TransitionCfg.tab.Generalproperties.es.text.changed=20110317062041 +TransitionCfg.tab.Generalproperties.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\= +TransitionCfg.tab.Generalproperties.fr.text.changed=20110317061957 +TransitionCfg.tab.Generalproperties.fr.text.md5=c8YR8Y64ukbawbUNBj44AQ\=\= +TransitionCfg.tab.Shoulder..text.changed=20110317061957 +TransitionCfg.tab.Shoulder..text.md5=g8tMFEs9buGoR77lGkS5Mw\=\= +TransitionCfg.tab.Shoulder.es.text.changed=20110317062041 +TransitionCfg.tab.Shoulder.es.text.md5=78fPmNoWzrpkK+C7wA1R1g\=\= +TransitionCfg.tab.Shoulder.fr.text.changed=20110317061957 +TransitionCfg.tab.Shoulder.fr.text.md5=ij0NnDUcQgwNuNOYKx3eiw\=\= +TransitionCfg.tab.Shoulderproperties..text.changed=20110317061957 +TransitionCfg.tab.Shoulderproperties..text.md5=veo49O9fQ4SLjde6bY/VVQ\=\= +TransitionCfg.tab.Shoulderproperties.es.text.changed=20110317062041 +TransitionCfg.tab.Shoulderproperties.es.text.md5=4Y4Kzhcq0JFqewGDiCwbPw\=\= +TransitionCfg.tab.Shoulderproperties.fr.text.changed=20110317061957 +TransitionCfg.tab.Shoulderproperties.fr.text.md5=U3050m8CsBc9s7/oMbNJzw\=\= +TrapezoidFinSet.TrapezoidFinSet..text.changed=20110317061957 +TrapezoidFinSet.TrapezoidFinSet..text.md5=QQFIiPvNQYWkf+dE26GjrA\=\= +TrapezoidFinSet.TrapezoidFinSet.es.text.changed=20110317062041 +TrapezoidFinSet.TrapezoidFinSet.es.text.md5=QQFIiPvNQYWkf+dE26GjrA\=\= +TrapezoidFinSet.TrapezoidFinSet.fr.text.changed=20110317061957 +TrapezoidFinSet.TrapezoidFinSet.fr.text.md5=LAJj1TAqxZCArS7aDkkGvw\=\= +TrapezoidFinSetCfg.lbl.Fincant..text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Fincant..text.md5=gJTol4zWIT3NlA2Qj+mRBw\=\= +TrapezoidFinSetCfg.lbl.Fincant.es.text.changed=20110317062041 +TrapezoidFinSetCfg.lbl.Fincant.es.text.md5=cxWpv/IhFV3FTjiylJ0H7Q\=\= +TrapezoidFinSetCfg.lbl.Fincant.fr.text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Fincant.fr.text.md5=gbEuh/Hyt0eAkJbVyIpt1A\=\= +TrapezoidFinSetCfg.lbl.FincrossSection..text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.FincrossSection..text.md5=d139yIi0Bcw4ePuCYxjEMQ\=\= +TrapezoidFinSetCfg.lbl.FincrossSection.es.text.changed=20110317062041 +TrapezoidFinSetCfg.lbl.FincrossSection.es.text.md5=/nIRxIgyTgr49tkwIwEwKw\=\= +TrapezoidFinSetCfg.lbl.FincrossSection.fr.text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.FincrossSection.fr.text.md5=BzmEcGR9qVjmHb5eL2X9hA\=\= +TrapezoidFinSetCfg.lbl.Finrotation..text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Finrotation..text.md5=asDZsCDOZlcfbnpr9h4Zeg\=\= +TrapezoidFinSetCfg.lbl.Finrotation.es.text.changed=20110317062041 +TrapezoidFinSetCfg.lbl.Finrotation.es.text.md5=ht/RiCuNDKl6Rf1cOHSwXg\=\= +TrapezoidFinSetCfg.lbl.Finrotation.fr.text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Finrotation.fr.text.md5=GFfYfKCgsmY785dF89M8Ow\=\= +TrapezoidFinSetCfg.lbl.Height..text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Height..text.md5=6TPcJPskXYY6Q7T+/ptF9Q\=\= +TrapezoidFinSetCfg.lbl.Height.es.text.changed=20110317062041 +TrapezoidFinSetCfg.lbl.Height.es.text.md5=mcao1NLk/9bh/Sxh5rp7Mg\=\= +TrapezoidFinSetCfg.lbl.Height.fr.text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Height.fr.text.md5=Z2KaAfTVGQ4cBjFlfETelA\=\= +TrapezoidFinSetCfg.lbl.Nbroffins..text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Nbroffins..text.md5=+3QcyIkz9lnt+0f8dlP/ew\=\= +TrapezoidFinSetCfg.lbl.Nbroffins.es.text.changed=20110317062041 +TrapezoidFinSetCfg.lbl.Nbroffins.es.text.md5=HGKq4/3A+oOKV7b9MdHIKQ\=\= +TrapezoidFinSetCfg.lbl.Nbroffins.fr.text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Nbroffins.fr.text.md5=6KbxfYrq87kta+KweGSOAg\=\= +TrapezoidFinSetCfg.lbl.Posrelativeto..text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Posrelativeto..text.md5=uld2YfO/C3gWkbRzlw+EMA\=\= +TrapezoidFinSetCfg.lbl.Posrelativeto.es.text.changed=20110317062041 +TrapezoidFinSetCfg.lbl.Posrelativeto.es.text.md5=6hQM5zYAcKv2lio49/hQqQ\=\= +TrapezoidFinSetCfg.lbl.Posrelativeto.fr.text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Posrelativeto.fr.text.md5=b5qJfneiAEVaRoxk125f2Q\=\= +TrapezoidFinSetCfg.lbl.Rootchord..text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Rootchord..text.md5=bOfX+KY7hvtQr5hLPPqmgg\=\= +TrapezoidFinSetCfg.lbl.Rootchord.es.text.changed=20110317062041 +TrapezoidFinSetCfg.lbl.Rootchord.es.text.md5=5+/3cyMZzYKIX83mUKWAaQ\=\= +TrapezoidFinSetCfg.lbl.Rootchord.fr.text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Rootchord.fr.text.md5=1FDPJWu4SmzhVPOFgQvMHg\=\= +TrapezoidFinSetCfg.lbl.Sweepangle..text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Sweepangle..text.md5=ZeRhVHfaiooLOXIRuiaM3A\=\= +TrapezoidFinSetCfg.lbl.Sweepangle.es.text.changed=20110317062041 +TrapezoidFinSetCfg.lbl.Sweepangle.es.text.md5=0YJA0R+dTWaUJvenpQ2keA\=\= +TrapezoidFinSetCfg.lbl.Sweepangle.fr.text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Sweepangle.fr.text.md5=POmDko64vhdwTZgepRsegA\=\= +TrapezoidFinSetCfg.lbl.Sweeplength..text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Sweeplength..text.md5=+7i8uemXY7oFX4TiCm9N9A\=\= +TrapezoidFinSetCfg.lbl.Sweeplength.es.text.changed=20110317062041 +TrapezoidFinSetCfg.lbl.Sweeplength.es.text.md5=Vk+OrScgDQpnOeW/TH8lvA\=\= +TrapezoidFinSetCfg.lbl.Sweeplength.fr.text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Sweeplength.fr.text.md5=eDaCD2VzrF8LK5agm3RqSA\=\= +TrapezoidFinSetCfg.lbl.Thickness..text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Thickness..text.md5=De6os9fTRKpjp0AF4eicGg\=\= +TrapezoidFinSetCfg.lbl.Thickness.es.text.changed=20110317062041 +TrapezoidFinSetCfg.lbl.Thickness.es.text.md5=xJjWfhrb7lNPRDbDLxB+9A\=\= +TrapezoidFinSetCfg.lbl.Thickness.fr.text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Thickness.fr.text.md5=wQJDV7ZNGPpFMM+AiyCNxg\=\= +TrapezoidFinSetCfg.lbl.Tipchord..text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Tipchord..text.md5=GUBHaGqGKM9ppb3sTLPsKQ\=\= +TrapezoidFinSetCfg.lbl.Tipchord.es.text.changed=20110317062041 +TrapezoidFinSetCfg.lbl.Tipchord.es.text.md5=MRxk4O4W4oiWUfLorzCTHQ\=\= +TrapezoidFinSetCfg.lbl.Tipchord.fr.text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.Tipchord.fr.text.md5=FoASTvgMJYHxlaB7R4HMgA\=\= +TrapezoidFinSetCfg.lbl.plus..text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +TrapezoidFinSetCfg.lbl.plus.es.text.changed=20110317062041 +TrapezoidFinSetCfg.lbl.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +TrapezoidFinSetCfg.lbl.plus.fr.text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +TrapezoidFinSetCfg.lbl.ttip.Fincant..text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.ttip.Fincant..text.md5=kjjf+CiniAfww5LqDIYfBg\=\= +TrapezoidFinSetCfg.lbl.ttip.Fincant.es.text.changed=20110317062041 +TrapezoidFinSetCfg.lbl.ttip.Fincant.es.text.md5=d4LJI6fNlilx21NBLElyuw\=\= +TrapezoidFinSetCfg.lbl.ttip.Fincant.fr.text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.ttip.Fincant.fr.text.md5=5J6LoK3Om+iSjmC0UH89VQ\=\= +TrapezoidFinSetCfg.lbl.ttip.Finrotation..text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.ttip.Finrotation..text.md5=4SuxjeOuTWYNxCD8de8HDA\=\= +TrapezoidFinSetCfg.lbl.ttip.Finrotation.es.text.changed=20110317062041 +TrapezoidFinSetCfg.lbl.ttip.Finrotation.es.text.md5=45bfdMeN3lP1CmNArmlLPA\=\= +TrapezoidFinSetCfg.lbl.ttip.Finrotation.fr.text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.ttip.Finrotation.fr.text.md5=MZPO2DPebhao79WS/frpFw\=\= +TrapezoidFinSetCfg.lbl.ttip.Nbroffins..text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.ttip.Nbroffins..text.md5=vxZq4AgK4rsW7WPFgvn62Q\=\= +TrapezoidFinSetCfg.lbl.ttip.Nbroffins.es.text.changed=20110317062041 +TrapezoidFinSetCfg.lbl.ttip.Nbroffins.es.text.md5=qNSf7UrUwAxKgoS6vA33Cg\=\= +TrapezoidFinSetCfg.lbl.ttip.Nbroffins.fr.text.changed=20110317061957 +TrapezoidFinSetCfg.lbl.ttip.Nbroffins.fr.text.md5=lmaV6ItoDcflEv/liKd4dA\=\= +TrapezoidFinSetCfg.tab.General..text.changed=20110317061957 +TrapezoidFinSetCfg.tab.General..text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +TrapezoidFinSetCfg.tab.General.es.text.changed=20110317062041 +TrapezoidFinSetCfg.tab.General.es.text.md5=DbN3kh9M52LGJSYTEJeWjw\=\= +TrapezoidFinSetCfg.tab.General.fr.text.changed=20110317061957 +TrapezoidFinSetCfg.tab.General.fr.text.md5=y/XSMRNUEvsUQp4IbAmnIg\=\= +TrapezoidFinSetCfg.tab.Generalproperties..text.changed=20110317061957 +TrapezoidFinSetCfg.tab.Generalproperties..text.md5=xzOA+c+O6KKNpUrmdcAXpw\=\= +TrapezoidFinSetCfg.tab.Generalproperties.es.text.changed=20110317062041 +TrapezoidFinSetCfg.tab.Generalproperties.es.text.md5=E5wftIw8alrYJhV8c1Q2nA\=\= +TrapezoidFinSetCfg.tab.Generalproperties.fr.text.changed=20110317061957 +TrapezoidFinSetCfg.tab.Generalproperties.fr.text.md5=SbI2yqQa7fkZGXX+vqD1aA\=\= +TubeCoupler.TubeCoupler..text.changed=20110317061957 +TubeCoupler.TubeCoupler..text.md5=LlE3Zis+TY0jZQIJ2wyvTw\=\= +TubeCoupler.TubeCoupler.es.text.changed=20110317062041 +TubeCoupler.TubeCoupler.es.text.md5=LlE3Zis+TY0jZQIJ2wyvTw\=\= +TubeCoupler.TubeCoupler.fr.text.changed=20110317061957 +TubeCoupler.TubeCoupler.fr.text.md5=frXexxzhWAX7rrfGqQSHJw\=\= +Warning.DISCONTINUITY..text.changed=20110317061957 +Warning.DISCONTINUITY..text.md5=eNCKwoJQxDywrj8xbfgJ3g\=\= +Warning.DISCONTINUITY.es.text.changed=20110317062041 +Warning.DISCONTINUITY.es.text.md5=eNCKwoJQxDywrj8xbfgJ3g\=\= +Warning.DISCONTINUITY.fr.text.changed=20110317061957 +Warning.DISCONTINUITY.fr.text.md5=+gio1/3Ee6ppotu3vX6B8w\=\= +Warning.FILE_INVALID_PARAMETER..text.changed=20110317061957 +Warning.FILE_INVALID_PARAMETER..text.md5=aPHWvRrd9IqL7wuo3RqJJQ\=\= +Warning.FILE_INVALID_PARAMETER.es.text.changed=20110317062041 +Warning.FILE_INVALID_PARAMETER.es.text.md5=aPHWvRrd9IqL7wuo3RqJJQ\=\= +Warning.FILE_INVALID_PARAMETER.fr.text.changed=20110317061957 +Warning.FILE_INVALID_PARAMETER.fr.text.md5=YgL+Ccbz33I8dESXVXduIw\=\= +Warning.JAGGED_EDGED_FIN..text.changed=20110317061957 +Warning.JAGGED_EDGED_FIN..text.md5=KUU5Uh2dUr+Dpl139v1b9Q\=\= +Warning.JAGGED_EDGED_FIN.es.text.changed=20110317062041 +Warning.JAGGED_EDGED_FIN.es.text.md5=KUU5Uh2dUr+Dpl139v1b9Q\=\= +Warning.JAGGED_EDGED_FIN.fr.text.changed=20110317061957 +Warning.JAGGED_EDGED_FIN.fr.text.md5=KUU5Uh2dUr+Dpl139v1b9Q\=\= +Warning.LISTENERS_AFFECTED..text.changed=20110317061957 +Warning.LISTENERS_AFFECTED..text.md5=8dm5QPkBAddRhQoh/i7vdw\=\= +Warning.LISTENERS_AFFECTED.es.text.changed=20110317062041 +Warning.LISTENERS_AFFECTED.es.text.md5=8dm5QPkBAddRhQoh/i7vdw\=\= +Warning.LISTENERS_AFFECTED.fr.text.changed=20110317061957 +Warning.LISTENERS_AFFECTED.fr.text.md5=8dm5QPkBAddRhQoh/i7vdw\=\= +Warning.LargeAOA.str1..text.changed=20110317061957 +Warning.LargeAOA.str1..text.md5=qffzKw06Qu0M2EFBGX53KQ\=\= +Warning.LargeAOA.str1.es.text.changed=20110317062041 +Warning.LargeAOA.str1.es.text.md5=qffzKw06Qu0M2EFBGX53KQ\=\= +Warning.LargeAOA.str1.fr.text.changed=20110317061957 +Warning.LargeAOA.str1.fr.text.md5=MLqbognfpcENrw3QivzMxQ\=\= +Warning.LargeAOA.str2..text.changed=20110317061957 +Warning.LargeAOA.str2..text.md5=EphhqogWSnQlN25Iqf9EAA\=\= +Warning.LargeAOA.str2.es.text.changed=20110317062041 +Warning.LargeAOA.str2.es.text.md5=EphhqogWSnQlN25Iqf9EAA\=\= +Warning.LargeAOA.str2.fr.text.changed=20110317061957 +Warning.LargeAOA.str2.fr.text.md5=r7v1sbu3GenWV/VqjTQ0DQ\=\= +Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING..text.changed=20110317061957 +Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING..text.md5=p5/dVPZqCn2hMHRI0sgh3w\=\= +Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING.es.text.changed=20110317062041 +Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING.es.text.md5=p5/dVPZqCn2hMHRI0sgh3w\=\= +Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING.fr.text.changed=20110317061957 +Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING.fr.text.md5=j20/tavlZlR3uN3OTMW+yw\=\= +Warning.THICK_FIN..text.changed=20110317061957 +Warning.THICK_FIN..text.md5=25xA504x1EfWDsFsamLwsg\=\= +Warning.THICK_FIN.es.text.changed=20110317062041 +Warning.THICK_FIN.es.text.md5=25xA504x1EfWDsFsamLwsg\=\= +Warning.THICK_FIN.fr.text.changed=20110317061957 +Warning.THICK_FIN.fr.text.md5=HzT+QA6XAWAY/wdT/sYdFQ\=\= +about.dlg.but.close..text.changed=20110317061957 +about.dlg.but.close..text.md5=09LmFzNfCN+DWZZl7vikGA\=\= +about.dlg.but.close.es.text.changed=20110317062041 +about.dlg.but.close.es.text.md5=kus5oUB9AsOfwEA1SCQUcg\=\= +about.dlg.but.close.fr.text.changed=20110317061957 +about.dlg.but.close.fr.text.md5=fSBiN/mRLqAQAF2ywgtgzg\=\= +about.dlg.lbl.translation..text.changed=20110317061957 +about.dlg.lbl.translation..text.md5=1B2M2Y8AsgTpgAmY7PhCfg\=\= +about.dlg.lbl.translation.es.text.changed=20110317062041 +about.dlg.lbl.translation.es.text.md5=fA4YCK4DMikRK+Sv2Yw0xQ\=\= +about.dlg.lbl.translation.fr.text.changed=20110317061957 +about.dlg.lbl.translation.fr.text.md5=Z0M8jBqPocF3tDMPqTzw4w\=\= +about.dlg.lbl.transwebsite..text.changed=20110317061957 +about.dlg.lbl.transwebsite..text.md5=1B2M2Y8AsgTpgAmY7PhCfg\=\= +about.dlg.lbl.transwebsite.es.text.changed=20110317062041 +about.dlg.lbl.transwebsite.es.text.md5=lGqQCXPUnqishiHFaykmNw\=\= +about.dlg.lbl.transwebsite.fr.text.changed=20110317061957 +about.dlg.lbl.transwebsite.fr.text.md5=k8o32iVyKcFtEYkdRu2eNA\=\= +bugreport.dlg.but.Sendbugreport..text.changed=20110317061957 +bugreport.dlg.but.Sendbugreport..text.md5=PV+wcfl64I1oi0ihDNgNPQ\=\= +bugreport.dlg.but.Sendbugreport.Ttip..text.changed=20110317061957 +bugreport.dlg.but.Sendbugreport.Ttip..text.md5=mjUZDQaG14xEtNs0FFbTMg\=\= +bugreport.dlg.but.Sendbugreport.Ttip.es.text.changed=20110317062041 +bugreport.dlg.but.Sendbugreport.Ttip.es.text.md5=RwlRsiy07LO/FIKr0srFfQ\=\= +bugreport.dlg.but.Sendbugreport.Ttip.fr.text.changed=20110317061957 +bugreport.dlg.but.Sendbugreport.Ttip.fr.text.md5=qguGhar4dYzA4x40BNnpVw\=\= +bugreport.dlg.but.Sendbugreport.es.text.changed=20110317062041 +bugreport.dlg.but.Sendbugreport.es.text.md5=deP3GgB1zAiZkYIqJpn0fg\=\= +bugreport.dlg.but.Sendbugreport.fr.text.changed=20110317061957 +bugreport.dlg.but.Sendbugreport.fr.text.md5=Kfd9FlSYtID0r6OAfPjsPA\=\= +bugreport.dlg.connectedInternet..text.changed=20110317061957 +bugreport.dlg.connectedInternet..text.md5=eRNqOdo8dmBW+76ebGN8HQ\=\= +bugreport.dlg.connectedInternet.es.text.changed=20110317062041 +bugreport.dlg.connectedInternet.es.text.md5=eRNqOdo8dmBW+76ebGN8HQ\=\= +bugreport.dlg.connectedInternet.fr.text.changed=20110317061957 +bugreport.dlg.connectedInternet.fr.text.md5=VJwP3s0gg+HNjtzt8Cd/5g\=\= +bugreport.dlg.failedmsg1..text.changed=20110317061957 +bugreport.dlg.failedmsg1..text.md5=cF008mzPY9AC+/fJc6pFng\=\= +bugreport.dlg.failedmsg1.es.text.changed=20110317062041 +bugreport.dlg.failedmsg1.es.text.md5=cF008mzPY9AC+/fJc6pFng\=\= +bugreport.dlg.failedmsg1.fr.text.changed=20110317061957 +bugreport.dlg.failedmsg1.fr.text.md5=YJknwYybh1ObzmtiqhBbmw\=\= +bugreport.dlg.failedmsg2..text.changed=20110317061957 +bugreport.dlg.failedmsg2..text.md5=Z6nnOrRZLJ0bRVXm/3z3hA\=\= +bugreport.dlg.failedmsg2.es.text.changed=20110317062041 +bugreport.dlg.failedmsg2.es.text.md5=Z6nnOrRZLJ0bRVXm/3z3hA\=\= +bugreport.dlg.failedmsg2.fr.text.changed=20110317061957 +bugreport.dlg.failedmsg2.fr.text.md5=rT9rxrdCVWJOqObQmfwIrw\=\= +bugreport.dlg.failedmsg3..text.changed=20110317061957 +bugreport.dlg.failedmsg3..text.md5=6WopJC7Dk2vCEH6r7t3mGA\=\= +bugreport.dlg.failedmsg3.es.text.changed=20110317062041 +bugreport.dlg.failedmsg3.es.text.md5=6WopJC7Dk2vCEH6r7t3mGA\=\= +bugreport.dlg.failedmsg3.fr.text.changed=20110317061957 +bugreport.dlg.failedmsg3.fr.text.md5=fvQlfkqxy6rhoMAKKoSNXA\=\= +bugreport.dlg.otherwise..text.changed=20110317061957 +bugreport.dlg.otherwise..text.md5=LYetPqJmAePLdo2wR3K1rg\=\= +bugreport.dlg.otherwise.es.text.changed=20110317062041 +bugreport.dlg.otherwise.es.text.md5=LYetPqJmAePLdo2wR3K1rg\=\= +bugreport.dlg.otherwise.fr.text.changed=20110317061957 +bugreport.dlg.otherwise.fr.text.md5=yqDk/+ypkJfl71izUhT6MA\=\= +bugreport.dlg.successmsg1..text.changed=20110317061957 +bugreport.dlg.successmsg1..text.md5=1MIKXe1BByXHkCkhHO1ryg\=\= +bugreport.dlg.successmsg1.es.text.changed=20110317062041 +bugreport.dlg.successmsg1.es.text.md5=gnclRYA8ozcHRHPWr/ceng\=\= +bugreport.dlg.successmsg1.fr.text.changed=20110317061957 +bugreport.dlg.successmsg1.fr.text.md5=6cP3H+5XstdvcJQ0GcH7pA\=\= +bugreport.dlg.successmsg2..text.changed=20110317061957 +bugreport.dlg.successmsg2..text.md5=kdF1mm9+6A4RpbCY3fePBw\=\= +bugreport.dlg.successmsg2.es.text.changed=20110317062041 +bugreport.dlg.successmsg2.es.text.md5=R9Tb2jpsh+SDwiXz1TZVwg\=\= +bugreport.dlg.successmsg2.fr.text.changed=20110317061957 +bugreport.dlg.successmsg2.fr.text.md5=FPm5hX1WjOXz1tDUO3xg6g\=\= +bugreport.dlg.successmsg3..text.changed=20110317061957 +bugreport.dlg.successmsg3..text.md5=75GrlotWvtLbyqfXZhSyRA\=\= +bugreport.dlg.successmsg3.es.text.changed=20110317062041 +bugreport.dlg.successmsg3.es.text.md5=qFk1pfvDDj0lA9RICra6kw\=\= +bugreport.dlg.successmsg3.fr.text.changed=20110317061957 +bugreport.dlg.successmsg3.fr.text.md5=33iwmRUE0XdxOUVXX7ihvw\=\= +bugreport.dlg.title..text.changed=20110317061957 +bugreport.dlg.title..text.md5=pmZEXVggqk9Vewxw6hO/NQ\=\= +bugreport.dlg.title.es.text.changed=20110317062041 +bugreport.dlg.title.es.text.md5=cKf7D5K4tsOIxtnExhAzmQ\=\= +bugreport.dlg.title.fr.text.changed=20110317061957 +bugreport.dlg.title.fr.text.md5=BY0T+RFoTg3aJNXeYhGuqw\=\= +bugreport.lbl.Theinformation..text.changed=20110317061957 +bugreport.lbl.Theinformation..text.md5=BUZdhRQVonaRvuAKLoxWcg\=\= +bugreport.lbl.Theinformation.es.text.changed=20110317062041 +bugreport.lbl.Theinformation.es.text.md5=BUZdhRQVonaRvuAKLoxWcg\=\= +bugreport.lbl.Theinformation.fr.text.changed=20110317061957 +bugreport.lbl.Theinformation.fr.text.md5=6BNaanVrhB73MvtrYQaXLw\=\= +bugreport.reportDialog.txt..text.changed=20110317061957 +bugreport.reportDialog.txt..text.md5=qYvimRuSg0MtPJ/kTd6Sdw\=\= +bugreport.reportDialog.txt.es.text.changed=20110317062041 +bugreport.reportDialog.txt.es.text.md5=qYvimRuSg0MtPJ/kTd6Sdw\=\= +bugreport.reportDialog.txt.fr.text.changed=20110317061957 +bugreport.reportDialog.txt.fr.text.md5=6t9xBkWX00ZO+svrZKvQrw\=\= +bugreport.reportDialog.txt2..text.changed=20110317061957 +bugreport.reportDialog.txt2..text.md5=jOn4lLgo8dp//W0Hy5sSwA\=\= +bugreport.reportDialog.txt2.es.text.changed=20110317062041 +bugreport.reportDialog.txt2.es.text.md5=jOn4lLgo8dp//W0Hy5sSwA\=\= +bugreport.reportDialog.txt2.fr.text.changed=20110317061957 +bugreport.reportDialog.txt2.fr.text.md5=dNIDQNy9wrsEa4pOy5LlQQ\=\= +button.cancel..text.changed=20110317061957 +button.cancel..text.md5=6keIcF5oc7Qkxl6RwoRrGQ\=\= +button.cancel.es.text.changed=20110317062041 +button.cancel.es.text.md5=qW8w8KI9Nx6TExpCCjKBgA\=\= +button.cancel.fr.text.changed=20110317061957 +button.cancel.fr.text.md5=0Sw7Dc91YU2vsqxr2qd6Jg\=\= +button.close..text.changed=20110317061957 +button.close..text.md5=09LmFzNfCN+DWZZl7vikGA\=\= +button.close.es.text.changed=20110317062041 +button.close.es.text.md5=kus5oUB9AsOfwEA1SCQUcg\=\= +button.close.fr.text.changed=20110317061957 +button.close.fr.text.md5=fSBiN/mRLqAQAF2ywgtgzg\=\= +button.ok..text.changed=20110317061957 +button.ok..text.md5=4KoCHiHd29bYzs7HHpz1ZA\=\= +button.ok.es.text.changed=20110317062041 +button.ok.es.text.md5=4KoCHiHd29bYzs7HHpz1ZA\=\= +button.ok.fr.text.changed=20110317061957 +button.ok.fr.text.md5=4KoCHiHd29bYzs7HHpz1ZA\=\= +compaddbuttons.Bodycompandfinsets..text.changed=20110317061957 +compaddbuttons.Bodycompandfinsets..text.md5=N7AY2q4VZ6/2LCZLyw3XlA\=\= +compaddbuttons.Bodycompandfinsets.es.text.changed=20110317062041 +compaddbuttons.Bodycompandfinsets.es.text.md5=rryFBbFuUQlCJFtQ6piQTA\=\= +compaddbuttons.Bodycompandfinsets.fr.text.changed=20110317061957 +compaddbuttons.Bodycompandfinsets.fr.text.md5=yUPaXljgzn/zglKqaE5DuA\=\= +compaddbuttons.Bodytube..text.changed=20110317061957 +compaddbuttons.Bodytube..text.md5=3T0MaANX4mUAKbI403vAUA\=\= +compaddbuttons.Bodytube.es.text.changed=20110317062041 +compaddbuttons.Bodytube.es.text.md5=W2UBWpdSguNSQ7XeOsw8kA\=\= +compaddbuttons.Bodytube.fr.text.changed=20110317061957 +compaddbuttons.Bodytube.fr.text.md5=fA71ssLRmS1SacfrveHv1w\=\= +compaddbuttons.Bulkhead..text.changed=20110317061957 +compaddbuttons.Bulkhead..text.md5=RUE9DoWgodoMLY1BHiEsiQ\=\= +compaddbuttons.Bulkhead.es.text.changed=20110317062041 +compaddbuttons.Bulkhead.es.text.md5=WK4F4o1Q945Rpwf9VI23PA\=\= +compaddbuttons.Bulkhead.fr.text.changed=20110317061957 +compaddbuttons.Bulkhead.fr.text.md5=GjYF1XuUam6E2N+JDKsnLQ\=\= +compaddbuttons.Centeringring..text.changed=20110317061957 +compaddbuttons.Centeringring..text.md5=W6zCIsKYZTrWxiKinBxMzQ\=\= +compaddbuttons.Centeringring.es.text.changed=20110317062041 +compaddbuttons.Centeringring.es.text.md5=vBGlbB3iLTZQFU7JS9flTA\=\= +compaddbuttons.Centeringring.fr.text.changed=20110317061957 +compaddbuttons.Centeringring.fr.text.md5=muxKfJnuz6guXOavDUP62A\=\= +compaddbuttons.Coupler..text.changed=20110317061957 +compaddbuttons.Coupler..text.md5=AFmSvrzD0t+si2qKC0y6sQ\=\= +compaddbuttons.Coupler.es.text.changed=20110317062041 +compaddbuttons.Coupler.es.text.md5=me1bY1UzGIPmWfbaGKJQlA\=\= +compaddbuttons.Coupler.fr.text.changed=20110317061957 +compaddbuttons.Coupler.fr.text.md5=tGMcIhRmDkU/1vMB2LPDMg\=\= +compaddbuttons.Donotaskmeagain..text.changed=20110317061957 +compaddbuttons.Donotaskmeagain..text.md5=xMeqCOFI2ELVUxa8B2WjDA\=\= +compaddbuttons.Donotaskmeagain.es.text.changed=20110317062041 +compaddbuttons.Donotaskmeagain.es.text.md5=oid3MB3hViU7UBOmEbZBLg\=\= +compaddbuttons.Donotaskmeagain.fr.text.changed=20110317061957 +compaddbuttons.Donotaskmeagain.fr.text.md5=vp5qu368QgbAMROQEW0nTA\=\= +compaddbuttons.Elliptical..text.changed=20110317061957 +compaddbuttons.Elliptical..text.md5=z77FnrYkInE9PyP0EvoeCQ\=\= +compaddbuttons.Elliptical.es.text.changed=20110317062041 +compaddbuttons.Elliptical.es.text.md5=TAyLlu2P3GZcNR/8DsXkUA\=\= +compaddbuttons.Elliptical.fr.text.changed=20110317061957 +compaddbuttons.Elliptical.fr.text.md5=lf7R8/pfh80lCkHLe9aESQ\=\= +compaddbuttons.Engineblock..text.changed=20110317061957 +compaddbuttons.Engineblock..text.md5=KMOLvDRs086S3HPQnRqMlw\=\= +compaddbuttons.Engineblock.es.text.changed=20110317062041 +compaddbuttons.Engineblock.es.text.md5=rihNSh3XscOM9TeKhQefOQ\=\= +compaddbuttons.Engineblock.fr.text.changed=20110317061957 +compaddbuttons.Engineblock.fr.text.md5=1joY0C31QAJNreQXv6Fa3A\=\= +compaddbuttons.Freeform..text.changed=20110317061957 +compaddbuttons.Freeform..text.md5=fd+WG/qSdcIFTyitzMirVg\=\= +compaddbuttons.Freeform.es.text.changed=20110317062041 +compaddbuttons.Freeform.es.text.md5=f4ZmLCPkmI3JCLnimqLrzQ\=\= +compaddbuttons.Freeform.fr.text.changed=20110317061957 +compaddbuttons.Freeform.fr.text.md5=30hU/eyaYTVddetn0M38rA\=\= +compaddbuttons.Innercomponent..text.changed=20110317061957 +compaddbuttons.Innercomponent..text.md5=8SkfpQ2moHfvkUSkUiaoXw\=\= +compaddbuttons.Innercomponent.es.text.changed=20110317062041 +compaddbuttons.Innercomponent.es.text.md5=ZDhwa+Ij2kiNFgDXFXWHkA\=\= +compaddbuttons.Innercomponent.fr.text.changed=20110317061957 +compaddbuttons.Innercomponent.fr.text.md5=tWXmNg5qTJI8mR7oKdO99g\=\= +compaddbuttons.Innertube..text.changed=20110317061957 +compaddbuttons.Innertube..text.md5=cLH+jIw9kSgufhebGqahkA\=\= +compaddbuttons.Innertube.es.text.changed=20110317062041 +compaddbuttons.Innertube.es.text.md5=ZigVsLpAbCH6szY0rg2brw\=\= +compaddbuttons.Innertube.fr.text.changed=20110317061957 +compaddbuttons.Innertube.fr.text.md5=Qi8ZJArDrWFHkJPWtc56Nw\=\= +compaddbuttons.Launchlug..text.changed=20110317061957 +compaddbuttons.Launchlug..text.md5=9UAhgdqi/vCpLI5lbdBGwQ\=\= +compaddbuttons.Launchlug.es.text.changed=20110317062041 +compaddbuttons.Launchlug.es.text.md5=87bZXZVyy+RPniKsjRvwhQ\=\= +compaddbuttons.Launchlug.fr.text.changed=20110317061957 +compaddbuttons.Launchlug.fr.text.md5=DgeT4LMq8b7kJjfvIjiklw\=\= +compaddbuttons.Masscomponent..text.changed=20110317061957 +compaddbuttons.Masscomponent..text.md5=9o1nH2XLtIScEh4EWfABDg\=\= +compaddbuttons.Masscomponent.es.text.changed=20110317062041 +compaddbuttons.Masscomponent.es.text.md5=2oisc09VJrJ6GQiUdl6pdg\=\= +compaddbuttons.Masscomponent.fr.text.changed=20110317061957 +compaddbuttons.Masscomponent.fr.text.md5=rpDyHcEdivKA4mJs1RiqZw\=\= +compaddbuttons.Massobjects..text.changed=20110317061957 +compaddbuttons.Massobjects..text.md5=GIHwgeHpviAWJNgUAaMFeA\=\= +compaddbuttons.Massobjects.es.text.changed=20110317062041 +compaddbuttons.Massobjects.es.text.md5=MxpYaIs8YfdjBzub02ZPdg\=\= +compaddbuttons.Massobjects.fr.text.changed=20110317061957 +compaddbuttons.Massobjects.fr.text.md5=WjKEhWq5mGxO9w3aIRrd0w\=\= +compaddbuttons.Nosecone..text.changed=20110317061957 +compaddbuttons.Nosecone..text.md5=2Eu3u5wFNw/urTRrBp/d/Q\=\= +compaddbuttons.Nosecone.es.text.changed=20110317062041 +compaddbuttons.Nosecone.es.text.md5=56naAb1T99JKx+ibUfNZdg\=\= +compaddbuttons.Nosecone.fr.text.changed=20110317061957 +compaddbuttons.Nosecone.fr.text.md5=HvPtCV8mNg+DY2Dm/IR/bQ\=\= +compaddbuttons.Parachute..text.changed=20110317061957 +compaddbuttons.Parachute..text.md5=iJ1sZoJJtUSAO6/GwY2/NA\=\= +compaddbuttons.Parachute.es.text.changed=20110317062041 +compaddbuttons.Parachute.es.text.md5=nCivjCIc0OtSb3Qvp/+/qQ\=\= +compaddbuttons.Parachute.fr.text.changed=20110317061957 +compaddbuttons.Parachute.fr.text.md5=iJ1sZoJJtUSAO6/GwY2/NA\=\= +compaddbuttons.Selectcomppos..text.changed=20110317061957 +compaddbuttons.Selectcomppos..text.md5=uTafmeB1z2KsM48C9OhQ3w\=\= +compaddbuttons.Selectcomppos.es.text.changed=20110317062041 +compaddbuttons.Selectcomppos.es.text.md5=9SpMTonEN8F0fi660PTDQg\=\= +compaddbuttons.Selectcomppos.fr.text.changed=20110317061957 +compaddbuttons.Selectcomppos.fr.text.md5=9g/tx8LNo1gxDwI/wuJUuA\=\= +compaddbuttons.Shockcord..text.changed=20110317061957 +compaddbuttons.Shockcord..text.md5=f1YpHYc/4tbiAJ1i7/v80A\=\= +compaddbuttons.Shockcord.es.text.changed=20110317062041 +compaddbuttons.Shockcord.es.text.md5=a19XGntzTva7YqUb5EDICg\=\= +compaddbuttons.Shockcord.fr.text.changed=20110317061957 +compaddbuttons.Shockcord.fr.text.md5=RnR22FP/b23+JTzmuMDTbw\=\= +compaddbuttons.Streamer..text.changed=20110317061957 +compaddbuttons.Streamer..text.md5=nLxM4h+Bh1qHHzkakoNUTg\=\= +compaddbuttons.Streamer.es.text.changed=20110317062041 +compaddbuttons.Streamer.es.text.md5=p+yhPReJ6siV56zu/Cc6kA\=\= +compaddbuttons.Streamer.fr.text.changed=20110317061957 +compaddbuttons.Streamer.fr.text.md5=LkFAj784NiwJ0RG/xu+3Eg\=\= +compaddbuttons.Transition..text.changed=20110317061957 +compaddbuttons.Transition..text.md5=r+35r+42f1H5jXzwMMl2pg\=\= +compaddbuttons.Transition.es.text.changed=20110317062041 +compaddbuttons.Transition.es.text.md5=xGQdkvQFh+aVMT3VBbupUQ\=\= +compaddbuttons.Transition.fr.text.changed=20110317061957 +compaddbuttons.Transition.fr.text.md5=r+35r+42f1H5jXzwMMl2pg\=\= +compaddbuttons.Trapezoidal..text.changed=20110317061957 +compaddbuttons.Trapezoidal..text.md5=yAM1BBJdAwgaQ7TvxbiGjA\=\= +compaddbuttons.Trapezoidal.es.text.changed=20110317062041 +compaddbuttons.Trapezoidal.es.text.md5=yAM1BBJdAwgaQ7TvxbiGjA\=\= +compaddbuttons.Trapezoidal.fr.text.changed=20110317061957 +compaddbuttons.Trapezoidal.fr.text.md5=PkQ+fI/G/p6txA7dXfB9Wg\=\= +compaddbuttons.askPosition.Addtotheend..text.changed=20110317061957 +compaddbuttons.askPosition.Addtotheend..text.md5=juorRPI/2Q8gvdvd555m8Q\=\= +compaddbuttons.askPosition.Addtotheend.es.text.changed=20110317062041 +compaddbuttons.askPosition.Addtotheend.es.text.md5=gX7IpzHYCaIjcWAzEuELdA\=\= +compaddbuttons.askPosition.Addtotheend.fr.text.changed=20110317061957 +compaddbuttons.askPosition.Addtotheend.fr.text.md5=jwbQgugB01TZqmUymYcoVQ\=\= +compaddbuttons.askPosition.Cancel..text.changed=20110317061957 +compaddbuttons.askPosition.Cancel..text.md5=6keIcF5oc7Qkxl6RwoRrGQ\=\= +compaddbuttons.askPosition.Cancel.es.text.changed=20110317062041 +compaddbuttons.askPosition.Cancel.es.text.md5=qW8w8KI9Nx6TExpCCjKBgA\=\= +compaddbuttons.askPosition.Cancel.fr.text.changed=20110317061957 +compaddbuttons.askPosition.Cancel.fr.text.md5=0Sw7Dc91YU2vsqxr2qd6Jg\=\= +compaddbuttons.askPosition.Inserthere..text.changed=20110317061957 +compaddbuttons.askPosition.Inserthere..text.md5=FI3+41ScbjGqj/31hjH9zw\=\= +compaddbuttons.askPosition.Inserthere.es.text.changed=20110317062041 +compaddbuttons.askPosition.Inserthere.es.text.md5=uNhxYMKLYGXGUpyXD4vf7Q\=\= +compaddbuttons.askPosition.Inserthere.fr.text.changed=20110317061957 +compaddbuttons.askPosition.Inserthere.fr.text.md5=psxFqKwcrmcvfvHUCgngRQ\=\= +compaddbuttons.lbl.Youcanchange..text.changed=20110317061957 +compaddbuttons.lbl.Youcanchange..text.md5=cYQgfnoeRCK2h69YzRSoxw\=\= +compaddbuttons.lbl.Youcanchange.es.text.changed=20110317062041 +compaddbuttons.lbl.Youcanchange.es.text.md5=wnJcV00U1IC4VsZ1ppHN2Q\=\= +compaddbuttons.lbl.Youcanchange.fr.text.changed=20110317061957 +compaddbuttons.lbl.Youcanchange.fr.text.md5=TY0sYCxJsAs6o/fP5WpVVg\=\= +compaddbuttons.lbl.insertcomp..text.changed=20110317061957 +compaddbuttons.lbl.insertcomp..text.md5=m4mEfQtiC/+hIx7mtMvcpw\=\= +compaddbuttons.lbl.insertcomp.es.text.changed=20110317062041 +compaddbuttons.lbl.insertcomp.es.text.md5=2VGg4s90+Ud9LIkn0vRELQ\=\= +compaddbuttons.lbl.insertcomp.fr.text.changed=20110317061957 +compaddbuttons.lbl.insertcomp.fr.text.md5=ZxybjbTQ8TXgOZdT9TrPsw\=\= +componentanalysisdlg.Componentanalysis.fr.text.changed=20110317061957 +componentanalysisdlg.Componentanalysis.fr.text.md5=SigCJBSkS7Z+plowJJuLgA\=\= +componentanalysisdlg.TabStability..text.changed=20110317061957 +componentanalysisdlg.TabStability..text.md5=eylw1Ic9OeR0RxAgea+VOw\=\= +componentanalysisdlg.TabStability.Col..text.changed=20110317061957 +componentanalysisdlg.TabStability.Col..text.md5=LLBeS7eDC+mC8JIv7Ya0zQ\=\= +componentanalysisdlg.TabStability.Col.Component.fr.text.changed=20110317061957 +componentanalysisdlg.TabStability.Col.Component.fr.text.md5=FT2RNxbZu/duQpuDjD2B6A\=\= +componentanalysisdlg.TabStability.Col.es.text.changed=20110317062041 +componentanalysisdlg.TabStability.Col.es.text.md5=B5XpNsJaSxIl+h4Zz1cJAA\=\= +componentanalysisdlg.TabStability.es.text.changed=20110317062041 +componentanalysisdlg.TabStability.es.text.md5=tsUx4ohpP/jOyk0Sl6/RfQ\=\= +componentanalysisdlg.TabStability.fr.text.changed=20110317061957 +componentanalysisdlg.TabStability.fr.text.md5=8gLplf3a7xViJxa28Xz5Lg\=\= +componentanalysisdlg.TabStability.ttip..text.changed=20110317061957 +componentanalysisdlg.TabStability.ttip..text.md5=qieokL2UqYwKmBfugvMcVA\=\= +componentanalysisdlg.TabStability.ttip.es.text.changed=20110317062041 +componentanalysisdlg.TabStability.ttip.es.text.md5=0bBcUjVP3Tm9WBoc2T2ZbA\=\= +componentanalysisdlg.TabStability.ttip.fr.text.changed=20110317061957 +componentanalysisdlg.TabStability.ttip.fr.text.md5=ISZ3q3o0k2iJ4MxE7diL/Q\=\= +componentanalysisdlg.TitledBorder.warnings..text.changed=20110317061957 +componentanalysisdlg.TitledBorder.warnings..text.md5=ycg0elpdCeaGHWSXGg50BA\=\= +componentanalysisdlg.TitledBorder.warnings.es.text.changed=20110317062041 +componentanalysisdlg.TitledBorder.warnings.es.text.md5=Ep299r+2xtewdnHrcJsaIQ\=\= +componentanalysisdlg.TitledBorder.warnings.fr.text.changed=20110317061957 +componentanalysisdlg.TitledBorder.warnings.fr.text.md5=XlSyZK9WUoDwVBciA74tbg\=\= +componentanalysisdlg.ToggleBut.worst..text.changed=20110317061957 +componentanalysisdlg.ToggleBut.worst..text.md5=T05xk4oQX+cr0YeI/lPUCQ\=\= +componentanalysisdlg.ToggleBut.worst.es.text.changed=20110317062041 +componentanalysisdlg.ToggleBut.worst.es.text.md5=6pkd5JOIAyifDaptW5NZUg\=\= +componentanalysisdlg.ToggleBut.worst.fr.text.changed=20110317061957 +componentanalysisdlg.ToggleBut.worst.fr.text.md5=URE/SEtjpNYYBBsltZp/EA\=\= +componentanalysisdlg.componentanalysis..text.changed=20110317061957 +componentanalysisdlg.componentanalysis..text.md5=sM5Mz8gIlX8rHWfsY6cqFA\=\= +componentanalysisdlg.componentanalysis.es.text.changed=20110317062041 +componentanalysisdlg.componentanalysis.es.text.md5=Lusfz3i1F0bI5OxVqZklVA\=\= +componentanalysisdlg.dragTabchar..text.changed=20110317061957 +componentanalysisdlg.dragTabchar..text.md5=iWJgErDbTLRn4qJEcy/REw\=\= +componentanalysisdlg.dragTabchar.es.text.changed=20110317062041 +componentanalysisdlg.dragTabchar.es.text.md5=jAPIoV5mAsNOWsEcgbGVKg\=\= +componentanalysisdlg.dragTabchar.fr.text.changed=20110317061957 +componentanalysisdlg.dragTabchar.fr.text.md5=KqSEEsUClD21CPRgT0kc6w\=\= +componentanalysisdlg.dragTabchar.ttip..text.changed=20110317061957 +componentanalysisdlg.dragTabchar.ttip..text.md5=iWJgErDbTLRn4qJEcy/REw\=\= +componentanalysisdlg.dragTabchar.ttip.es.text.changed=20110317062041 +componentanalysisdlg.dragTabchar.ttip.es.text.md5=jAPIoV5mAsNOWsEcgbGVKg\=\= +componentanalysisdlg.dragTabchar.ttip.fr.text.changed=20110317061957 +componentanalysisdlg.dragTabchar.ttip.fr.text.md5=KqSEEsUClD21CPRgT0kc6w\=\= +componentanalysisdlg.dragTableModel.Col.Base..text.changed=20110317061957 +componentanalysisdlg.dragTableModel.Col.Base..text.md5=MnxdbReIC44Z1ZjH8yMoTg\=\= +componentanalysisdlg.dragTableModel.Col.Base.es.text.changed=20110317062041 +componentanalysisdlg.dragTableModel.Col.Base.es.text.md5=MnxdbReIC44Z1ZjH8yMoTg\=\= +componentanalysisdlg.dragTableModel.Col.Base.fr.text.changed=20110317061957 +componentanalysisdlg.dragTableModel.Col.Base.fr.text.md5=MnxdbReIC44Z1ZjH8yMoTg\=\= +componentanalysisdlg.dragTableModel.Col.Component..text.changed=20110317061957 +componentanalysisdlg.dragTableModel.Col.Component..text.md5=LLBeS7eDC+mC8JIv7Ya0zQ\=\= +componentanalysisdlg.dragTableModel.Col.Component.es.text.changed=20110317062041 +componentanalysisdlg.dragTableModel.Col.Component.es.text.md5=B5XpNsJaSxIl+h4Zz1cJAA\=\= +componentanalysisdlg.dragTableModel.Col.Component.fr.text.changed=20110317061957 +componentanalysisdlg.dragTableModel.Col.Component.fr.text.md5=FT2RNxbZu/duQpuDjD2B6A\=\= +componentanalysisdlg.dragTableModel.Col.Pressure..text.changed=20110317061957 +componentanalysisdlg.dragTableModel.Col.Pressure..text.md5=xp1p+t6DIfep5FxdXDxn2w\=\= +componentanalysisdlg.dragTableModel.Col.Pressure.es.text.changed=20110317062041 +componentanalysisdlg.dragTableModel.Col.Pressure.es.text.md5=Vo18bMQOG4wsxHjZSTtDOQ\=\= +componentanalysisdlg.dragTableModel.Col.Pressure.fr.text.changed=20110317061957 +componentanalysisdlg.dragTableModel.Col.Pressure.fr.text.md5=Ru/Idznb57s5uRUyioFvHA\=\= +componentanalysisdlg.dragTableModel.Col.friction..text.changed=20110317061957 +componentanalysisdlg.dragTableModel.Col.friction..text.md5=aUqULOh8IfBVAUvr65J08A\=\= +componentanalysisdlg.dragTableModel.Col.friction.es.text.changed=20110317062041 +componentanalysisdlg.dragTableModel.Col.friction.es.text.md5=/SeFjUxuzKenovVN1AbWiQ\=\= +componentanalysisdlg.dragTableModel.Col.friction.fr.text.changed=20110317061957 +componentanalysisdlg.dragTableModel.Col.friction.fr.text.md5=aUqULOh8IfBVAUvr65J08A\=\= +componentanalysisdlg.dragTableModel.Col.total..text.changed=20110317061957 +componentanalysisdlg.dragTableModel.Col.total..text.md5=cVGI4HPToucC7nLsnjO3Rg\=\= +componentanalysisdlg.dragTableModel.Col.total.es.text.changed=20110317062041 +componentanalysisdlg.dragTableModel.Col.total.es.text.md5=cVGI4HPToucC7nLsnjO3Rg\=\= +componentanalysisdlg.dragTableModel.Col.total.fr.text.changed=20110317061957 +componentanalysisdlg.dragTableModel.Col.total.fr.text.md5=cVGI4HPToucC7nLsnjO3Rg\=\= +componentanalysisdlg.lbl.activestages..text.changed=20110317061957 +componentanalysisdlg.lbl.activestages..text.md5=7HZnXY6WmgM3bfpelG0cwQ\=\= +componentanalysisdlg.lbl.activestages.es.text.changed=20110317062041 +componentanalysisdlg.lbl.activestages.es.text.md5=wGwE8XwiLOq9FEkSdPWnBA\=\= +componentanalysisdlg.lbl.activestages.fr.text.changed=20110317061957 +componentanalysisdlg.lbl.activestages.fr.text.md5=tFM+NaoK1ppgQEtDeRgdag\=\= +componentanalysisdlg.lbl.angleofattack..text.changed=20110317061957 +componentanalysisdlg.lbl.angleofattack..text.md5=HInCe0Acwh8sHooTGebBFA\=\= +componentanalysisdlg.lbl.angleofattack.es.text.changed=20110317062041 +componentanalysisdlg.lbl.angleofattack.es.text.md5=+ePneBXSpS0V3MP1dzzHBw\=\= +componentanalysisdlg.lbl.angleofattack.fr.text.changed=20110317061957 +componentanalysisdlg.lbl.angleofattack.fr.text.md5=tLxiDZSvYFsHvDktIjM6Tg\=\= +componentanalysisdlg.lbl.machnumber..text.changed=20110317061957 +componentanalysisdlg.lbl.machnumber..text.md5=Or57nhd+QZxDhx1vrukgYg\=\= +componentanalysisdlg.lbl.machnumber.es.text.changed=20110317062041 +componentanalysisdlg.lbl.machnumber.es.text.md5=5gkqoSSUmWXNZyVL7F/+RQ\=\= +componentanalysisdlg.lbl.machnumber.fr.text.changed=20110317061957 +componentanalysisdlg.lbl.machnumber.fr.text.md5=Or57nhd+QZxDhx1vrukgYg\=\= +componentanalysisdlg.lbl.motorconf..text.changed=20110317061957 +componentanalysisdlg.lbl.motorconf..text.md5=hUqBQQLOQuV2isn4DoTERA\=\= +componentanalysisdlg.lbl.motorconf.es.text.changed=20110317062041 +componentanalysisdlg.lbl.motorconf.es.text.md5=BWdMssbDaIqJGf4qkEjBlw\=\= +componentanalysisdlg.lbl.motorconf.fr.text.changed=20110317061957 +componentanalysisdlg.lbl.motorconf.fr.text.md5=hU2++Dh8qBxAt7AQTW8GDQ\=\= +componentanalysisdlg.lbl.refarea..text.changed=20110317061957 +componentanalysisdlg.lbl.refarea..text.md5=sV0ZjBBIjvL17Z678ZaqvQ\=\= +componentanalysisdlg.lbl.refarea.es.text.changed=20110317062041 +componentanalysisdlg.lbl.refarea.es.text.md5=j+m1SZlabS9tJ7kJ9hllBg\=\= +componentanalysisdlg.lbl.refarea.fr.text.changed=20110317061957 +componentanalysisdlg.lbl.refarea.fr.text.md5=xEg5o+JFsa/yIugA78XyMQ\=\= +componentanalysisdlg.lbl.reflenght..text.changed=20110317061957 +componentanalysisdlg.lbl.reflenght..text.md5=LkFk1OFxwceAD252889ejQ\=\= +componentanalysisdlg.lbl.reflenght.es.text.changed=20110317062041 +componentanalysisdlg.lbl.reflenght.es.text.md5=pHHyMwk4eq2xWElM4R9kmg\=\= +componentanalysisdlg.lbl.reflenght.fr.text.changed=20110317061957 +componentanalysisdlg.lbl.reflenght.fr.text.md5=hASeCemz/A7/wxgv7VOFwA\=\= +componentanalysisdlg.lbl.rollrate..text.changed=20110317061957 +componentanalysisdlg.lbl.rollrate..text.md5=jqY3far1Q8N81yltDukE7A\=\= +componentanalysisdlg.lbl.rollrate.es.text.changed=20110317062041 +componentanalysisdlg.lbl.rollrate.es.text.md5=1rAIRwGCSpwLw/RjfNcTwQ\=\= +componentanalysisdlg.lbl.rollrate.fr.text.changed=20110317061957 +componentanalysisdlg.lbl.rollrate.fr.text.md5=4yBvCJRuEcR3wYN8vJPczA\=\= +componentanalysisdlg.lbl.winddir..text.changed=20110317061957 +componentanalysisdlg.lbl.winddir..text.md5=aW45gtLA8AR8R1Kkjdkvng\=\= +componentanalysisdlg.lbl.winddir.es.text.changed=20110317062041 +componentanalysisdlg.lbl.winddir.es.text.md5=f571kaVKE4jQeXg6JgKJKQ\=\= +componentanalysisdlg.lbl.winddir.fr.text.changed=20110317061957 +componentanalysisdlg.lbl.winddir.fr.text.md5=u58j3jAJMi+95aTLGIKh/Q\=\= +componentanalysisdlg.println.closingmethod..text.changed=20110317061957 +componentanalysisdlg.println.closingmethod..text.md5=0hLEG/EJL60ievNrJUL4+w\=\= +componentanalysisdlg.println.closingmethod.es.text.changed=20110317062041 +componentanalysisdlg.println.closingmethod.es.text.md5=VvAE31tlznTxpF+hjQzmfQ\=\= +componentanalysisdlg.println.closingmethod.fr.text.changed=20110317061957 +componentanalysisdlg.println.closingmethod.fr.text.md5=Ydw/REnnFBlklQiksjmMGg\=\= +componentanalysisdlg.println.settingnam..text.changed=20110317061957 +componentanalysisdlg.println.settingnam..text.md5=ILNVE3cL8YQBpCxp8quf3A\=\= +componentanalysisdlg.println.settingnam.es.text.changed=20110317062041 +componentanalysisdlg.println.settingnam.es.text.md5=ILNVE3cL8YQBpCxp8quf3A\=\= +componentanalysisdlg.println.settingnam.fr.text.changed=20110317061957 +componentanalysisdlg.println.settingnam.fr.text.md5=ILNVE3cL8YQBpCxp8quf3A\=\= +componentanalysisdlg.rollTableModel..text.changed=20110317061957 +componentanalysisdlg.rollTableModel..text.md5=OWscsjjUl3ezbtdfrjoICA\=\= +componentanalysisdlg.rollTableModel.Col.component..text.changed=20110317061957 +componentanalysisdlg.rollTableModel.Col.component..text.md5=LLBeS7eDC+mC8JIv7Ya0zQ\=\= +componentanalysisdlg.rollTableModel.Col.component.es.text.changed=20110317062041 +componentanalysisdlg.rollTableModel.Col.component.es.text.md5=B5XpNsJaSxIl+h4Zz1cJAA\=\= +componentanalysisdlg.rollTableModel.Col.component.fr.text.changed=20110317061957 +componentanalysisdlg.rollTableModel.Col.component.fr.text.md5=FT2RNxbZu/duQpuDjD2B6A\=\= +componentanalysisdlg.rollTableModel.Col.rolldamp..text.changed=20110317061957 +componentanalysisdlg.rollTableModel.Col.rolldamp..text.md5=GLnb/60ST1T0xakX2GOp5w\=\= +componentanalysisdlg.rollTableModel.Col.rolldamp.es.text.changed=20110317062041 +componentanalysisdlg.rollTableModel.Col.rolldamp.es.text.md5=qvEniJA5lceZRpMJ3JMsfw\=\= +componentanalysisdlg.rollTableModel.Col.rolldamp.fr.text.changed=20110317061957 +componentanalysisdlg.rollTableModel.Col.rolldamp.fr.text.md5=2HpP9Twclh/XoPwLjUBR3w\=\= +componentanalysisdlg.rollTableModel.Col.rollforc..text.changed=20110317061957 +componentanalysisdlg.rollTableModel.Col.rollforc..text.md5=zqvMSZ3Z3W9FqF7YhHrCcg\=\= +componentanalysisdlg.rollTableModel.Col.rollforc.es.text.changed=20110317062041 +componentanalysisdlg.rollTableModel.Col.rollforc.es.text.md5=xtgVFrqOWRaQl4m/PyWfug\=\= +componentanalysisdlg.rollTableModel.Col.rollforc.fr.text.changed=20110317061957 +componentanalysisdlg.rollTableModel.Col.rollforc.fr.text.md5=SYES+ygLT80Qw+RM6uUn/w\=\= +componentanalysisdlg.rollTableModel.Col.total..text.changed=20110317061957 +componentanalysisdlg.rollTableModel.Col.total..text.md5=m8/vnoLnyBhXSkzN27Iqfg\=\= +componentanalysisdlg.rollTableModel.Col.total.es.text.changed=20110317062041 +componentanalysisdlg.rollTableModel.Col.total.es.text.md5=m8/vnoLnyBhXSkzN27Iqfg\=\= +componentanalysisdlg.rollTableModel.Col.total.fr.text.changed=20110317061957 +componentanalysisdlg.rollTableModel.Col.total.fr.text.md5=m8/vnoLnyBhXSkzN27Iqfg\=\= +componentanalysisdlg.rollTableModel.es.text.changed=20110317062041 +componentanalysisdlg.rollTableModel.es.text.md5=XnevoSWH2GgTJvor+F9RhA\=\= +componentanalysisdlg.rollTableModel.fr.text.changed=20110317061957 +componentanalysisdlg.rollTableModel.fr.text.md5=U7fnpFxB4I4dZB4koHz3ag\=\= +componentanalysisdlg.rollTableModel.ttip..text.changed=20110317061957 +componentanalysisdlg.rollTableModel.ttip..text.md5=OWscsjjUl3ezbtdfrjoICA\=\= +componentanalysisdlg.rollTableModel.ttip.es.text.changed=20110317062041 +componentanalysisdlg.rollTableModel.ttip.es.text.md5=XnevoSWH2GgTJvor+F9RhA\=\= +componentanalysisdlg.rollTableModel.ttip.fr.text.changed=20110317061957 +componentanalysisdlg.rollTableModel.ttip.fr.text.md5=U7fnpFxB4I4dZB4koHz3ag\=\= +custmatdlg.checkbox.Addmaterial..text.changed=20110317061957 +custmatdlg.checkbox.Addmaterial..text.md5=jm9v8DvQD3wqj/HbMjixgQ\=\= +custmatdlg.checkbox.Addmaterial.es.text.changed=20110317062041 +custmatdlg.checkbox.Addmaterial.es.text.md5=bZByVgCr41szI/Has0L1YQ\=\= +custmatdlg.checkbox.Addmaterial.fr.text.changed=20110317061957 +custmatdlg.checkbox.Addmaterial.fr.text.md5=7o8ohaJMa5/wHVUKTCEgBw\=\= +custmatdlg.lbl.Materialdensity..text.changed=20110317061957 +custmatdlg.lbl.Materialdensity..text.md5=bB4KMPfL6JN1dsgN1kdYEA\=\= +custmatdlg.lbl.Materialdensity.es.text.changed=20110317062041 +custmatdlg.lbl.Materialdensity.es.text.md5=JkqbumlayJz2hwy6kPD2lA\=\= +custmatdlg.lbl.Materialdensity.fr.text.changed=20110317061957 +custmatdlg.lbl.Materialdensity.fr.text.md5=m4Sj47s5OF70q9X/Yy8hdQ\=\= +custmatdlg.lbl.Materialname..text.changed=20110317061957 +custmatdlg.lbl.Materialname..text.md5=jCWajBftxvNhCK5i4sEuAw\=\= +custmatdlg.lbl.Materialname.es.text.changed=20110317062041 +custmatdlg.lbl.Materialname.es.text.md5=Fpw33oU1TwPKLzvFSAozcQ\=\= +custmatdlg.lbl.Materialname.fr.text.changed=20110317061957 +custmatdlg.lbl.Materialname.fr.text.md5=yH1elrFycCr2P/xhDFHHog\=\= +custmatdlg.lbl.Materialtype..text.changed=20110317061957 +custmatdlg.lbl.Materialtype..text.md5=I5s+R9xf2CglymUZYMI0vw\=\= +custmatdlg.lbl.Materialtype.es.text.changed=20110317062041 +custmatdlg.lbl.Materialtype.es.text.md5=UHdKpq5guPBzxTZE1tVjuA\=\= +custmatdlg.lbl.Materialtype.fr.text.changed=20110317061957 +custmatdlg.lbl.Materialtype.fr.text.md5=teWTYrU560DNKIf6zH+l7g\=\= +custmatdlg.title.Custommaterial..text.changed=20110317061957 +custmatdlg.title.Custommaterial..text.md5=9nYzoGilvoPwv4HvXE0r1w\=\= +custmatdlg.title.Custommaterial.es.text.changed=20110317062041 +custmatdlg.title.Custommaterial.es.text.md5=U/3vJZsRVlaizQIsN1rL9g\=\= +custmatdlg.title.Custommaterial.fr.text.changed=20110317061957 +custmatdlg.title.Custommaterial.fr.text.md5=ei/ahalbxbjIQt9CaiucXg\=\= +debug.currentFile..text.changed=20110317061957 +debug.currentFile..text.md5=s3zGQ/ph8MRFfzeFsRTXpg\=\= +debug.currentFile.es.text.changed=20110317062041 +debug.currentFile.es.text.md5=rwmRaYyyfq9650tCYosXoQ\=\= +debug.currentFile.fr.text.changed=20110317061957 +debug.currentFile.fr.text.md5=BKGvMYfb8lPwoDJ8Os/DIQ\=\= +debuglogdlg.Displayloglines..text.changed=20110317061957 +debuglogdlg.Displayloglines..text.md5=nwjXdCUc7lJTuPNgKAciLg\=\= +debuglogdlg.Displayloglines.es.text.changed=20110317062041 +debuglogdlg.Displayloglines.es.text.md5=QRjLg8P0NLqFt6qTKPnN9w\=\= +debuglogdlg.Displayloglines.fr.text.changed=20110317061957 +debuglogdlg.Displayloglines.fr.text.md5=XG1JTBaF8XUwl1zaXlZJDQ\=\= +debuglogdlg.Follow..text.changed=20110317061957 +debuglogdlg.Follow..text.md5=OQOqsyOGO9LptoIYp6ZevQ\=\= +debuglogdlg.Follow.es.text.changed=20110317062041 +debuglogdlg.Follow.es.text.md5=vSPrYLzCKHv9yxB4d8QxSQ\=\= +debuglogdlg.Follow.fr.text.changed=20110317061957 +debuglogdlg.Follow.fr.text.md5=SqjjA3is+zQIXsEtbU0slw\=\= +debuglogdlg.OpenRocketdebuglog..text.changed=20110317061957 +debuglogdlg.OpenRocketdebuglog..text.md5=fdx8WQMedep9mhWdZKxi9g\=\= +debuglogdlg.OpenRocketdebuglog.es.text.changed=20110317062041 +debuglogdlg.OpenRocketdebuglog.es.text.md5=7gn/q/F9lK7h9riCJ9qKkQ\=\= +debuglogdlg.OpenRocketdebuglog.fr.text.changed=20110317061957 +debuglogdlg.OpenRocketdebuglog.fr.text.md5=QUM4UANf2GDxaM7Q2FgMew\=\= +debuglogdlg.but.clear..text.changed=20110317061957 +debuglogdlg.but.clear..text.md5=3DC8DHkU21kY2kJj/Ok60g\=\= +debuglogdlg.but.clear.es.text.changed=20110317062041 +debuglogdlg.but.clear.es.text.md5=R259GbW+kRvZmj3mwxdx0Q\=\= +debuglogdlg.but.clear.fr.text.changed=20110317061957 +debuglogdlg.but.clear.fr.text.md5=HppJ6h38NCxh/nWp6557Iw\=\= +debuglogdlg.col.Level..text.changed=20110317061957 +debuglogdlg.col.Level..text.md5=oNtJukcMHJriEow0cDORUw\=\= +debuglogdlg.col.Level.es.text.changed=20110317062041 +debuglogdlg.col.Level.es.text.md5=SCgfiSEpFTuajrGqbHtN7w\=\= +debuglogdlg.col.Level.fr.text.changed=20110317061957 +debuglogdlg.col.Level.fr.text.md5=sHZ1ljWRg1lPlatFWHN4gw\=\= +debuglogdlg.col.Location..text.changed=20110317061957 +debuglogdlg.col.Location..text.md5=zlv1UTeUWcHGHSogQGHEVQ\=\= +debuglogdlg.col.Location.es.text.changed=20110317062041 +debuglogdlg.col.Location.es.text.md5=GsYBWRpllBrW6RstjkVB8g\=\= +debuglogdlg.col.Location.fr.text.changed=20110317061957 +debuglogdlg.col.Location.fr.text.md5=tqbm6jgTUb19fS9Wky7IBA\=\= +debuglogdlg.col.Message..text.changed=20110317061957 +debuglogdlg.col.Message..text.md5=TCqP5+ryRyHMep8BdRFb1A\=\= +debuglogdlg.col.Message.es.text.changed=20110317062041 +debuglogdlg.col.Message.es.text.md5=brw25+IKd+W0zNOjX2PB0g\=\= +debuglogdlg.col.Message.fr.text.changed=20110317061957 +debuglogdlg.col.Message.fr.text.md5=TCqP5+ryRyHMep8BdRFb1A\=\= +debuglogdlg.col.Time..text.changed=20110317061957 +debuglogdlg.col.Time..text.md5=p21O9fP2pnK7+rKGVWPlMA\=\= +debuglogdlg.col.Time.es.text.changed=20110317062041 +debuglogdlg.col.Time.es.text.md5=F/LuOIyJVIjSe5wcFULXlg\=\= +debuglogdlg.col.Time.fr.text.changed=20110317061957 +debuglogdlg.col.Time.fr.text.md5=S1kXwZceksDKFh4uBqHJVQ\=\= +debuglogdlg.lbl.Level..text.changed=20110317061957 +debuglogdlg.lbl.Level..text.md5=B62BUYe1PcLOr1rW4KErsQ\=\= +debuglogdlg.lbl.Level.es.text.changed=20110317062041 +debuglogdlg.lbl.Level.es.text.md5=4rgPLqRJFjmzGqEQ70NQ/A\=\= +debuglogdlg.lbl.Level.fr.text.changed=20110317061957 +debuglogdlg.lbl.Level.fr.text.md5=/Jcwyq2/R9rL/BIdjP19UQ\=\= +debuglogdlg.lbl.Loglinenbr..text.changed=20110317061957 +debuglogdlg.lbl.Loglinenbr..text.md5=ChKg3SUE5c7XsNVJtZ93hw\=\= +debuglogdlg.lbl.Loglinenbr.es.text.changed=20110317062041 +debuglogdlg.lbl.Loglinenbr.es.text.md5=M3zrBP7NeUML443APhQtLA\=\= +debuglogdlg.lbl.Loglinenbr.fr.text.changed=20110317061957 +debuglogdlg.lbl.Loglinenbr.fr.text.md5=AFitNV4px6u+/clTkkiUiQ\=\= +debuglogdlg.lbl.Time..text.changed=20110317061957 +debuglogdlg.lbl.Time..text.md5=QhsSNl+G/1nIj/LCHPU6Kw\=\= +debuglogdlg.lbl.Time.es.text.changed=20110317062041 +debuglogdlg.lbl.Time.es.text.md5=NZjhj7mYt3U/emKWnRudtg\=\= +debuglogdlg.lbl.Time.fr.text.changed=20110317061957 +debuglogdlg.lbl.Time.fr.text.md5=vdCbiSLtbcUMvVS/mk6FGw\=\= +dlg.but.cancel..text.changed=20110317061957 +dlg.but.cancel..text.md5=6keIcF5oc7Qkxl6RwoRrGQ\=\= +dlg.but.cancel.es.text.changed=20110317062041 +dlg.but.cancel.es.text.md5=qW8w8KI9Nx6TExpCCjKBgA\=\= +dlg.but.cancel.fr.text.changed=20110317061957 +dlg.but.cancel.fr.text.md5=0Sw7Dc91YU2vsqxr2qd6Jg\=\= +dlg.but.close..text.changed=20110317061957 +dlg.but.close..text.md5=09LmFzNfCN+DWZZl7vikGA\=\= +dlg.but.close.es.text.changed=20110317062041 +dlg.but.close.es.text.md5=kus5oUB9AsOfwEA1SCQUcg\=\= +dlg.but.close.fr.text.changed=20110317061957 +dlg.but.close.fr.text.md5=fSBiN/mRLqAQAF2ywgtgzg\=\= +dlg.but.ok..text.changed=20110317061957 +dlg.but.ok..text.md5=4KoCHiHd29bYzs7HHpz1ZA\=\= +dlg.but.ok.es.text.changed=20110317062041 +dlg.but.ok.es.text.md5=4KoCHiHd29bYzs7HHpz1ZA\=\= +dlg.but.ok.fr.text.changed=20110317061957 +dlg.but.ok.fr.text.md5=Jl0FBib/oNgNKG4QLdh/cQ\=\= +edtmotorconfdlg.but.Newconfiguration..text.changed=20110317061957 +edtmotorconfdlg.but.Newconfiguration..text.md5=NT0vOXavFgbT0cQ7Wr9zQA\=\= +edtmotorconfdlg.but.Newconfiguration.es.text.changed=20110317062041 +edtmotorconfdlg.but.Newconfiguration.es.text.md5=s722wAnQsoeOJNFxy3NNRQ\=\= +edtmotorconfdlg.but.Newconfiguration.fr.text.changed=20110317061957 +edtmotorconfdlg.but.Newconfiguration.fr.text.md5=4JCduPGDwlRFplYmQaXSMQ\=\= +edtmotorconfdlg.but.Removeconfiguration..text.changed=20110317061957 +edtmotorconfdlg.but.Removeconfiguration..text.md5=UOddOjbulF7x+026Hv4imQ\=\= +edtmotorconfdlg.but.Removeconfiguration.es.text.changed=20110317062041 +edtmotorconfdlg.but.Removeconfiguration.es.text.md5=YpX6IyFNBNqK5zyVBeJIzA\=\= +edtmotorconfdlg.but.Removeconfiguration.fr.text.changed=20110317061957 +edtmotorconfdlg.but.Removeconfiguration.fr.text.md5=7ivqM27pmg3F2ozVNmzKuQ\=\= +edtmotorconfdlg.but.Selectmotor..text.changed=20110317061957 +edtmotorconfdlg.but.Selectmotor..text.md5=Po8U1JYUSxjeO5nuLOFoyA\=\= +edtmotorconfdlg.but.Selectmotor.es.text.changed=20110317062041 +edtmotorconfdlg.but.Selectmotor.es.text.md5=dHaSFZUHzaZQqRR4BrKmVQ\=\= +edtmotorconfdlg.but.Selectmotor.fr.text.changed=20110317061957 +edtmotorconfdlg.but.Selectmotor.fr.text.md5=eg8M2LVUXgmWWlkHvR9t/A\=\= +edtmotorconfdlg.but.removemotor..text.changed=20110317061957 +edtmotorconfdlg.but.removemotor..text.md5=4fhAF2YvYgl3IKDn1Qvejw\=\= +edtmotorconfdlg.but.removemotor.es.text.changed=20110317062041 +edtmotorconfdlg.but.removemotor.es.text.md5=zQGZezis32VJLq+UmvSHqg\=\= +edtmotorconfdlg.but.removemotor.fr.text.changed=20110317061957 +edtmotorconfdlg.but.removemotor.fr.text.md5=FXMdRrCctyMK6Wsu2Nl2Yw\=\= +edtmotorconfdlg.lbl.Configname..text.changed=20110317061957 +edtmotorconfdlg.lbl.Configname..text.md5=nnXcIMtWxCCQvtv3ND6YgA\=\= +edtmotorconfdlg.lbl.Configname.es.text.changed=20110317062041 +edtmotorconfdlg.lbl.Configname.es.text.md5=fs314jQ9MEKY47Cq6bMQfA\=\= +edtmotorconfdlg.lbl.Configname.fr.text.changed=20110317061957 +edtmotorconfdlg.lbl.Configname.fr.text.md5=w+AbzUpfcL2AdVH7wPAymw\=\= +edtmotorconfdlg.lbl.Leavenamedefault..text.changed=20110317061957 +edtmotorconfdlg.lbl.Leavenamedefault..text.md5=/cmprWzNVXVBuGPWft0+uw\=\= +edtmotorconfdlg.lbl.Leavenamedefault.es.text.changed=20110317062041 +edtmotorconfdlg.lbl.Leavenamedefault.es.text.md5=5haGBI06HiA06NuOxvx4Tw\=\= +edtmotorconfdlg.lbl.Leavenamedefault.fr.text.changed=20110317061957 +edtmotorconfdlg.lbl.Leavenamedefault.fr.text.md5=wB7D2z+GmBIzcSE5JhWFTQ\=\= +edtmotorconfdlg.lbl.Motorconfig..text.changed=20110317061957 +edtmotorconfdlg.lbl.Motorconfig..text.md5=+lul1QCIM2sP55CQbp+n5A\=\= +edtmotorconfdlg.lbl.Motorconfig.es.text.changed=20110317062041 +edtmotorconfdlg.lbl.Motorconfig.es.text.md5=uXHGWG1r/O6AwupdLuZoYA\=\= +edtmotorconfdlg.lbl.Motorconfig.fr.text.changed=20110317061957 +edtmotorconfdlg.lbl.Motorconfig.fr.text.md5=U4DQR3RThawGyFb1JkZriw\=\= +edtmotorconfdlg.lbl.Motormounts..text.changed=20110317061957 +edtmotorconfdlg.lbl.Motormounts..text.md5=x7eeyB0ie8edcW0w+GHMiA\=\= +edtmotorconfdlg.lbl.Motormounts.es.text.changed=20110317062041 +edtmotorconfdlg.lbl.Motormounts.es.text.md5=Mw2hHhFNFIzwCg3j/fUOMg\=\= +edtmotorconfdlg.lbl.Motormounts.fr.text.changed=20110317061957 +edtmotorconfdlg.lbl.Motormounts.fr.text.md5=tzz76XQa8s+2tQxpnfk3EA\=\= +edtmotorconfdlg.selectcomp..text.changed=20110317061957 +edtmotorconfdlg.selectcomp..text.md5=ORycIzs/OG+hor13qL7TZQ\=\= +edtmotorconfdlg.selectcomp.es.text.changed=20110317062041 +edtmotorconfdlg.selectcomp.es.text.md5=7Ls79aDABHZK5YVYK5yaGw\=\= +edtmotorconfdlg.selectcomp.fr.text.changed=20110317061957 +edtmotorconfdlg.selectcomp.fr.text.md5=dSrfekH8XR25ZbuocL6I1A\=\= +edtmotorconfdlg.title.Editmotorconf..text.changed=20110317061957 +edtmotorconfdlg.title.Editmotorconf..text.md5=mhB1lDgg16mVrmvLA71dPA\=\= +edtmotorconfdlg.title.Editmotorconf.es.text.changed=20110317062041 +edtmotorconfdlg.title.Editmotorconf.es.text.md5=Avm/hi7X82zx7iqf1bsaOw\=\= +edtmotorconfdlg.title.Editmotorconf.fr.text.changed=20110317061957 +edtmotorconfdlg.title.Editmotorconf.fr.text.md5=GC5HziZfG5xu9YMS63W56w\=\= +exdesigndlg.but.open..text.changed=20110317061957 +exdesigndlg.but.open..text.md5=w79EfqvmMnIKOqGnzkASdA\=\= +exdesigndlg.but.open.es.text.changed=20110317062041 +exdesigndlg.but.open.es.text.md5=pfnugysr6Cb9FUzDX7R/Pg\=\= +exdesigndlg.but.open.fr.text.changed=20110317061957 +exdesigndlg.but.open.fr.text.md5=CNLScxY7oSWTdPtiSo5uvA\=\= +exdesigndlg.lbl.Exampledesignsnotfound..text.changed=20110317061957 +exdesigndlg.lbl.Exampledesignsnotfound..text.md5=4S8w2uaG2SJHFz0+kyWoaw\=\= +exdesigndlg.lbl.Exampledesignsnotfound.es.text.changed=20110317062041 +exdesigndlg.lbl.Exampledesignsnotfound.es.text.md5=4S8w2uaG2SJHFz0+kyWoaw\=\= +exdesigndlg.lbl.Exampledesignsnotfound.fr.text.changed=20110317061957 +exdesigndlg.lbl.Exampledesignsnotfound.fr.text.md5=DF0RjuSWbMsEDzCaTKxBiQ\=\= +exdesigndlg.lbl.Examplesnotfound..text.changed=20110317061957 +exdesigndlg.lbl.Examplesnotfound..text.md5=xkSdJxOKIUXRvj2hf9jCTQ\=\= +exdesigndlg.lbl.Examplesnotfound.es.text.changed=20110317062041 +exdesigndlg.lbl.Examplesnotfound.es.text.md5=xkSdJxOKIUXRvj2hf9jCTQ\=\= +exdesigndlg.lbl.Examplesnotfound.fr.text.changed=20110317061957 +exdesigndlg.lbl.Examplesnotfound.fr.text.md5=xU5b6JBZvC4HRUGkHhwGGw\=\= +exdesigndlg.lbl.Openexampledesign..text.changed=20110317061957 +exdesigndlg.lbl.Openexampledesign..text.md5=Hp76ayWk/zLpmjMVl/GUCw\=\= +exdesigndlg.lbl.Openexampledesign.es.text.changed=20110317062041 +exdesigndlg.lbl.Openexampledesign.es.text.md5=Hp76ayWk/zLpmjMVl/GUCw\=\= +exdesigndlg.lbl.Openexampledesign.fr.text.changed=20110317061957 +exdesigndlg.lbl.Openexampledesign.fr.text.md5=qVJnpzdNqeQSHuNETuO72A\=\= +exdesigndlg.lbl.Selectexample..text.changed=20110317061957 +exdesigndlg.lbl.Selectexample..text.md5=eAq28yyo9P7Hts8LjqH3sg\=\= +exdesigndlg.lbl.Selectexample.es.text.changed=20110317062041 +exdesigndlg.lbl.Selectexample.es.text.md5=eAq28yyo9P7Hts8LjqH3sg\=\= +exdesigndlg.lbl.Selectexample.fr.text.changed=20110317061957 +exdesigndlg.lbl.Selectexample.fr.text.md5=Vram06dqIymVTic62/b6+Q\=\= +main.menu.analyze..text.changed=20110317061957 +main.menu.analyze..text.md5=IlLhWjDdGnjgpEuo5JzTgQ\=\= +main.menu.analyze.componentAnalysis..text.changed=20110317061957 +main.menu.analyze.componentAnalysis..text.md5=sM5Mz8gIlX8rHWfsY6cqFA\=\= +main.menu.analyze.componentAnalysis.es.text.changed=20110317062041 +main.menu.analyze.componentAnalysis.es.text.md5=U8QENoQKwOWp8ifYnSiVLg\=\= +main.menu.analyze.componentAnalysis.fr.text.changed=20110317061957 +main.menu.analyze.componentAnalysis.fr.text.md5=52ZFvKgMYurYYovUS85nQA\=\= +main.menu.analyze.es.text.changed=20110317062041 +main.menu.analyze.es.text.md5=Er9mGt1IUSLs6K+//rkCcA\=\= +main.menu.analyze.fr.text.changed=20110317061957 +main.menu.analyze.fr.text.md5=MQRaJ1t2mOXEjPSEunYrJQ\=\= +main.menu.debug..text.changed=20110317061957 +main.menu.debug..text.md5=pgOQVHDipbjBPpa1ee8Nug\=\= +main.menu.debug.createtestrocket..text.changed=20110317061957 +main.menu.debug.createtestrocket..text.md5=V/HRWut3qImwK1nJTAwxjw\=\= +main.menu.debug.createtestrocket.es.text.changed=20110317062041 +main.menu.debug.createtestrocket.es.text.md5=A7EvpwFdjqnWYs/Q2HZdGA\=\= +main.menu.debug.createtestrocket.fr.text.changed=20110317061957 +main.menu.debug.createtestrocket.fr.text.md5=yMPDXf37eF8IlSLMe+Butw\=\= +main.menu.debug.es.text.changed=20110317062041 +main.menu.debug.es.text.md5=MGzIPIhiHGzUt0wkGSGCHw\=\= +main.menu.debug.fr.text.changed=20110317061957 +main.menu.debug.fr.text.md5=pgOQVHDipbjBPpa1ee8Nug\=\= +main.menu.debug.whatisthismenu..text.changed=20110317061957 +main.menu.debug.whatisthismenu..text.md5=j3NxZ35t5hFVXnl2o+jf0Q\=\= +main.menu.debug.whatisthismenu.es.text.changed=20110317062041 +main.menu.debug.whatisthismenu.es.text.md5=7OL8ternJmXq0bPl6otsfw\=\= +main.menu.debug.whatisthismenu.fr.text.changed=20110317061957 +main.menu.debug.whatisthismenu.fr.text.md5=k0eaQR4dWlgTK6himlr9tQ\=\= +main.menu.edit..text.changed=20110317061957 +main.menu.edit..text.md5=fc4SIASWnVauLgJFy3VNNQ\=\= +main.menu.edit.copy..text.changed=20110317061957 +main.menu.edit.copy..text.md5=X7Y1efyYFpj5fVW/7LIT6g\=\= +main.menu.edit.copy.es.text.changed=20110317062041 +main.menu.edit.copy.es.text.md5=CBa9ot/1XfUMF6SLuD3Ddw\=\= +main.menu.edit.copy.fr.text.changed=20110317061957 +main.menu.edit.copy.fr.text.md5=uE4+hfTPBEmO3DKM+KMhDw\=\= +main.menu.edit.cut..text.changed=20110317061957 +main.menu.edit.cut..text.md5=6zNNygDjkODT6/UtIFgH1w\=\= +main.menu.edit.cut.es.text.changed=20110317062041 +main.menu.edit.cut.es.text.md5=aWgiHXr6Fsd+VJNxrWi7Gw\=\= +main.menu.edit.cut.fr.text.changed=20110317061957 +main.menu.edit.cut.fr.text.md5=XK3u18MJpYLFmlet2BJhOw\=\= +main.menu.edit.delete..text.changed=20110317061957 +main.menu.edit.delete..text.md5=8qbEmPuQ7jRdmX+Ij847GA\=\= +main.menu.edit.delete.es.text.changed=20110317062041 +main.menu.edit.delete.es.text.md5=qW8w8KI9Nx6TExpCCjKBgA\=\= +main.menu.edit.delete.fr.text.changed=20110317061957 +main.menu.edit.delete.fr.text.md5=HppJ6h38NCxh/nWp6557Iw\=\= +main.menu.edit.es.text.changed=20110317062041 +main.menu.edit.es.text.md5=PCmk1tmghygnIKxlECRLOQ\=\= +main.menu.edit.fr.text.changed=20110317061957 +main.menu.edit.fr.text.md5=Dw9zpWnizxvPniyWMhd79w\=\= +main.menu.edit.paste..text.changed=20110317061957 +main.menu.edit.paste..text.md5=NrtlWWltyRJJhq4SBRWYTw\=\= +main.menu.edit.paste.es.text.changed=20110317062041 +main.menu.edit.paste.es.text.md5=EWZL2wlyml7l3JQTGpeT2g\=\= +main.menu.edit.paste.fr.text.changed=20110317061957 +main.menu.edit.paste.fr.text.md5=IQgJsyd+wJkZOJWAdYLDZw\=\= +main.menu.edit.preferences..text.changed=20110317061957 +main.menu.edit.preferences..text.md5=0INPzsYzd4XudJyPVGT29g\=\= +main.menu.edit.preferences.es.text.changed=20110317062041 +main.menu.edit.preferences.es.text.md5=VFatWUQcoTIp2YW85iQsyg\=\= +main.menu.edit.preferences.fr.text.changed=20110317061957 +main.menu.edit.preferences.fr.text.md5=ZXZwf+xOjVhMZVlF1Piwrw\=\= +main.menu.edit.redo..text.changed=20110317061957 +main.menu.edit.redo..text.md5=Wv6roHTvVw3HIMqqhV1J9g\=\= +main.menu.edit.redo.es.text.changed=20110317062041 +main.menu.edit.redo.es.text.md5=o7Br8O8RCo+sKPVGiG/mcg\=\= +main.menu.edit.redo.fr.text.changed=20110317061957 +main.menu.edit.redo.fr.text.md5=PzAQmHc2db5L+7aOF8y46Q\=\= +main.menu.edit.undo..text.changed=20110317061957 +main.menu.edit.undo..text.md5=HNwHayj3CvrF/O2t+Z+hGQ\=\= +main.menu.edit.undo.es.text.changed=20110317062041 +main.menu.edit.undo.es.text.md5=NX6Cjg5hpJ2z7eO8CjC0bQ\=\= +main.menu.edit.undo.fr.text.changed=20110317061957 +main.menu.edit.undo.fr.text.md5=zsjsMYayV3RIYVR4xNeG6w\=\= +main.menu.file..text.changed=20110317061957 +main.menu.file..text.md5=CyeRgpD/UyO+oeO3ipzwTg\=\= +main.menu.file.close..text.changed=20110317061957 +main.menu.file.close..text.md5=09LmFzNfCN+DWZZl7vikGA\=\= +main.menu.file.close.es.text.changed=20110317062041 +main.menu.file.close.es.text.md5=kus5oUB9AsOfwEA1SCQUcg\=\= +main.menu.file.close.fr.text.changed=20110317061957 +main.menu.file.close.fr.text.md5=fSBiN/mRLqAQAF2ywgtgzg\=\= +main.menu.file.es.text.changed=20110317062041 +main.menu.file.es.text.md5=W4TeYsITrG6Gz//qpylayg\=\= +main.menu.file.fr.text.changed=20110317061957 +main.menu.file.fr.text.md5=p1FmNN2hNqA45243vxXn7A\=\= +main.menu.file.new..text.changed=20110317061957 +main.menu.file.new..text.md5=A8Ln5B/8GBpOhAgLRxDoHg\=\= +main.menu.file.new.es.text.changed=20110317062041 +main.menu.file.new.es.text.md5=c/oEvjSu8FWhwXBu3W2rqQ\=\= +main.menu.file.new.fr.text.changed=20110317061957 +main.menu.file.new.fr.text.md5=nqF7EPUGuIH+2QaqsKUPjQ\=\= +main.menu.file.open..text.changed=20110317061957 +main.menu.file.open..text.md5=umb2gJk69DhyKOywsYOBPQ\=\= +main.menu.file.open.es.text.changed=20110317062041 +main.menu.file.open.es.text.md5=oMIGLSA38RL3Tvnajd4jGg\=\= +main.menu.file.open.fr.text.changed=20110317061957 +main.menu.file.open.fr.text.md5=J+LwTKMPJvnbRtStPaVnRg\=\= +main.menu.file.openExample..text.changed=20110317061957 +main.menu.file.openExample..text.md5=fjEA4azTPJoA4SgWemJQMg\=\= +main.menu.file.openExample.es.text.changed=20110317062041 +main.menu.file.openExample.es.text.md5=m2YVxxWGmftwWAz5xKZO2g\=\= +main.menu.file.openExample.fr.text.changed=20110317061957 +main.menu.file.openExample.fr.text.md5=T9MtvjiDdTJztlKFibDCQA\=\= +main.menu.file.print..text.changed=20110317061957 +main.menu.file.print..text.md5=OqmX3fXPsY4Y9u0FgCcVqA\=\= +main.menu.file.print.es.text.changed=20110317062041 +main.menu.file.print.es.text.md5=JzLqW9n9tq+sqEnVEayKzg\=\= +main.menu.file.print.fr.text.changed=20110317061957 +main.menu.file.print.fr.text.md5=i52ElRqbWX6VeCDGWB2bqQ\=\= +main.menu.file.quit..text.changed=20110317061957 +main.menu.file.quit..text.md5=DYJ5CwYSk1mSvVZKF8431g\=\= +main.menu.file.quit.es.text.changed=20110317062041 +main.menu.file.quit.es.text.md5=bEir2zY1ylBmraU/GZCW+g\=\= +main.menu.file.quit.fr.text.changed=20110317061957 +main.menu.file.quit.fr.text.md5=rOxF+Fd0dFm4Q/nEbFEa/Q\=\= +main.menu.file.save..text.changed=20110317061957 +main.menu.file.save..text.md5=ycyMziR+SbrnnxUXPOlzVA\=\= +main.menu.file.save.es.text.changed=20110317062041 +main.menu.file.save.es.text.md5=0ycL240sHKrKQXjb4ZvgOg\=\= +main.menu.file.save.fr.text.changed=20110317061957 +main.menu.file.save.fr.text.md5=drVmOK8iwXxLB7dK2iMv2w\=\= +main.menu.file.saveAs..text.changed=20110317061957 +main.menu.file.saveAs..text.md5=nYwgnknjKFKMOcJzeY6YyQ\=\= +main.menu.file.saveAs.es.text.changed=20110317062041 +main.menu.file.saveAs.es.text.md5=x/HGCPImb8nc4V8Q8Xd05w\=\= +main.menu.file.saveAs.fr.text.changed=20110317061957 +main.menu.file.saveAs.fr.text.md5=lPLFKylgoHCVCRGI8N+DlQ\=\= +main.menu.help..text.changed=20110317061957 +main.menu.help..text.md5=aib1SIMeaowmv7vZ9uxh4A\=\= +main.menu.help.about..text.changed=20110317061957 +main.menu.help.about..text.md5=j39MHOek+TNmPRBUNWKwlg\=\= +main.menu.help.about.es.text.changed=20110317062041 +main.menu.help.about.es.text.md5=Wm8i2B8ovZ1iHF8nxxbpsw\=\= +main.menu.help.about.fr.text.changed=20110317061957 +main.menu.help.about.fr.text.md5=pirnmPKnU9VsH+pIj6kb0w\=\= +main.menu.help.bugReport..text.changed=20110317061957 +main.menu.help.bugReport..text.md5=pmZEXVggqk9Vewxw6hO/NQ\=\= +main.menu.help.bugReport.es.text.changed=20110317062041 +main.menu.help.bugReport.es.text.md5=78P7pSzj4+HUyrfGTSD+6Q\=\= +main.menu.help.bugReport.fr.text.changed=20110317061957 +main.menu.help.bugReport.fr.text.md5=BY0T+RFoTg3aJNXeYhGuqw\=\= +main.menu.help.debugLog..text.changed=20110317061957 +main.menu.help.debugLog..text.md5=zZLiEhhhKBfVKo1xwy+vOA\=\= +main.menu.help.debugLog.es.text.changed=20110317062041 +main.menu.help.debugLog.es.text.md5=xry9ctG+1ecgd7+hFwvecg\=\= +main.menu.help.debugLog.fr.text.changed=20110317061957 +main.menu.help.debugLog.fr.text.md5=zZLiEhhhKBfVKo1xwy+vOA\=\= +main.menu.help.es.text.changed=20110317062041 +main.menu.help.es.text.md5=5JFqMJ2nWDBcVIheP1ZyqA\=\= +main.menu.help.fr.text.changed=20110317061957 +main.menu.help.fr.text.md5=Y/UsRANMgt/8zIQ0ShJNtg\=\= +main.menu.help.license..text.changed=20110317061957 +main.menu.help.license..text.md5=eU3zeRqMgAhBUWAHQnoqow\=\= +main.menu.help.license.es.text.changed=20110317062041 +main.menu.help.license.es.text.md5=CbVfIn00NjBmfwDn3bTcPA\=\= +main.menu.help.license.fr.text.changed=20110317061957 +main.menu.help.license.fr.text.md5=jSgqi9L+kDZ5ujAR1AjCag\=\= +matedtpan.but.delete..text.changed=20110317061957 +matedtpan.but.delete..text.md5=8qbEmPuQ7jRdmX+Ij847GA\=\= +matedtpan.but.delete.es.text.changed=20110317062041 +matedtpan.but.delete.es.text.md5=qW8w8KI9Nx6TExpCCjKBgA\=\= +matedtpan.but.delete.fr.text.changed=20110317061957 +matedtpan.but.delete.fr.text.md5=HppJ6h38NCxh/nWp6557Iw\=\= +matedtpan.but.edit..text.changed=20110317061957 +matedtpan.but.edit..text.md5=fc4SIASWnVauLgJFy3VNNQ\=\= +matedtpan.but.edit.es.text.changed=20110317062041 +matedtpan.but.edit.es.text.md5=70hetnrIkjik/t50WgrpTA\=\= +matedtpan.but.edit.fr.text.changed=20110317061957 +matedtpan.but.edit.fr.text.md5=Dw9zpWnizxvPniyWMhd79w\=\= +matedtpan.but.new..text.changed=20110317061957 +matedtpan.but.new..text.md5=A8Ln5B/8GBpOhAgLRxDoHg\=\= +matedtpan.but.new.es.text.changed=20110317062041 +matedtpan.but.new.es.text.md5=c/oEvjSu8FWhwXBu3W2rqQ\=\= +matedtpan.but.new.fr.text.changed=20110317061957 +matedtpan.but.new.fr.text.md5=nqF7EPUGuIH+2QaqsKUPjQ\=\= +matedtpan.but.revertall..text.changed=20110317061957 +matedtpan.but.revertall..text.md5=HU8NssWd/oFQ8fxiUiYF0g\=\= +matedtpan.but.revertall.es.text.changed=20110317062041 +matedtpan.but.revertall.es.text.md5=FEdRJafMwDXiMOf/ylr60g\=\= +matedtpan.but.revertall.fr.text.changed=20110317061957 +matedtpan.but.revertall.fr.text.md5=ugBFzcSGwx43gTovZpDZYg\=\= +matedtpan.but.ttip.delete..text.changed=20110317061957 +matedtpan.but.ttip.delete..text.md5=tkhxPsT4HzGS5gueQv+osw\=\= +matedtpan.but.ttip.delete.es.text.changed=20110317062041 +matedtpan.but.ttip.delete.es.text.md5=6T+Uz6Lja8xQ1yyt+En4ew\=\= +matedtpan.but.ttip.delete.fr.text.changed=20110317061957 +matedtpan.but.ttip.delete.fr.text.md5=DnNGnOs9B0MqA9ydTMCISw\=\= +matedtpan.but.ttip.edit..text.changed=20110317061957 +matedtpan.but.ttip.edit..text.md5=nALvGm2X/wE1cKUEviYgYg\=\= +matedtpan.but.ttip.edit.es.text.changed=20110317062041 +matedtpan.but.ttip.edit.es.text.md5=ubG1aRILaLDummx427VcTQ\=\= +matedtpan.but.ttip.edit.fr.text.changed=20110317061957 +matedtpan.but.ttip.edit.fr.text.md5=W6DsTWFA1EmzV3OPKX3s/Q\=\= +matedtpan.but.ttip.revertall..text.changed=20110317061957 +matedtpan.but.ttip.revertall..text.md5=nks2fwOjAQqv9yiJ8MDSJg\=\= +matedtpan.but.ttip.revertall.es.text.changed=20110317062041 +matedtpan.but.ttip.revertall.es.text.md5=umBrL+4p4WO/D0Xc3d/Wow\=\= +matedtpan.but.ttip.revertall.fr.text.changed=20110317061957 +matedtpan.but.ttip.revertall.fr.text.md5=h5aEOKoetF/XeV2bHB2F2A\=\= +matedtpan.col.Density..text.changed=20110317061957 +matedtpan.col.Density..text.md5=fm0R3Z2+71PByzy4lrzkdg\=\= +matedtpan.col.Density.es.text.changed=20110317062041 +matedtpan.col.Density.es.text.md5=ojucZozYfxYiQJA6QlAj7A\=\= +matedtpan.col.Density.fr.text.changed=20110317061957 +matedtpan.col.Density.fr.text.md5=nyryu9Uy+DLBfx4b9AkkkQ\=\= +matedtpan.col.Material..text.changed=20110317061957 +matedtpan.col.Material..text.md5=2SqDM908y4lcxl90VbcSBg\=\= +matedtpan.col.Material.es.text.changed=20110317062041 +matedtpan.col.Material.es.text.md5=2SqDM908y4lcxl90VbcSBg\=\= +matedtpan.col.Material.fr.text.changed=20110317061957 +matedtpan.col.Material.fr.text.md5=VIeuRMJRAAlmhGYNzxsxBw\=\= +matedtpan.col.Type..text.changed=20110317061957 +matedtpan.col.Type..text.md5=ofond5JCtJAveuO91cbVCA\=\= +matedtpan.col.Type.es.text.changed=20110317062041 +matedtpan.col.Type.es.text.md5=T0J8FFfgK86A6DJSER/SfQ\=\= +matedtpan.col.Type.fr.text.changed=20110317061957 +matedtpan.col.Type.fr.text.md5=ofond5JCtJAveuO91cbVCA\=\= +matedtpan.col.but.ttip.New..text.changed=20110317061957 +matedtpan.col.but.ttip.New..text.md5=+gRd6Um9Sdqg6pVAt9rVjQ\=\= +matedtpan.col.but.ttip.New.es.text.changed=20110317062041 +matedtpan.col.but.ttip.New.es.text.md5=D8C1fVasXjz9MTQKLVSmlA\=\= +matedtpan.col.but.ttip.New.fr.text.changed=20110317061957 +matedtpan.col.but.ttip.New.fr.text.md5=aV1zaxW0tG2EsmROrmro5Q\=\= +matedtpan.lbl.edtmaterials..text.changed=20110317061957 +matedtpan.lbl.edtmaterials..text.md5=I+XtwYcSIKYhmkXzIYy9Yw\=\= +matedtpan.lbl.edtmaterials.es.text.changed=20110317062041 +matedtpan.lbl.edtmaterials.es.text.md5=e/2eeGgh6u55O9MYxxU16A\=\= +matedtpan.lbl.edtmaterials.fr.text.changed=20110317061957 +matedtpan.lbl.edtmaterials.fr.text.md5=nvfMq0ZURsWRCT5fTs8TcQ\=\= +matedtpan.title.Addcustmaterial..text.changed=20110317061957 +matedtpan.title.Addcustmaterial..text.md5=0Rn89QVYLjfSLtSPdQz+SA\=\= +matedtpan.title.Addcustmaterial.es.text.changed=20110317062041 +matedtpan.title.Addcustmaterial.es.text.md5=unBCRtJhlQtl+rDe65O6xA\=\= +matedtpan.title.Addcustmaterial.fr.text.changed=20110317061957 +matedtpan.title.Addcustmaterial.fr.text.md5=RiGtRnRG71R29IdsvPWWbg\=\= +matedtpan.title.Deletealluser-defined..text.changed=20110317061957 +matedtpan.title.Deletealluser-defined..text.md5=oV8rGGcj/ot82uG/dEY1kA\=\= +matedtpan.title.Deletealluser-defined.es.text.changed=20110317062041 +matedtpan.title.Deletealluser-defined.es.text.md5=A/PvhtsypPVs88vpQUWqAQ\=\= +matedtpan.title.Deletealluser-defined.fr.text.changed=20110317061957 +matedtpan.title.Deletealluser-defined.fr.text.md5=3UBZ452Tsb47HwV+K94HFg\=\= +matedtpan.title.Editmaterial..text.changed=20110317061957 +matedtpan.title.Editmaterial..text.md5=dbXNyTbQ5ZhCdMMOJjx9IQ\=\= +matedtpan.title.Editmaterial.es.text.changed=20110317062041 +matedtpan.title.Editmaterial.es.text.md5=GCDGBuSjS+IeV9A6d2H1GQ\=\= +matedtpan.title.Editmaterial.fr.text.changed=20110317061957 +matedtpan.title.Editmaterial.fr.text.md5=w0uD/iEc/14EEq0+wDZWEA\=\= +matedtpan.title.Revertall..text.changed=20110317061957 +matedtpan.title.Revertall..text.md5=eYW4hA4dE2tdIUk428XMdQ\=\= +matedtpan.title.Revertall.es.text.changed=20110317062041 +matedtpan.title.Revertall.es.text.md5=VkI66UKGjZQm2heWaZ9HOw\=\= +matedtpan.title.Revertall.fr.text.changed=20110317061957 +matedtpan.title.Revertall.fr.text.md5=Q5D5uz4+vvCBeQRzZ5O6Tg\=\= +matedtpan.title2.Editmaterial..text.changed=20110317061957 +matedtpan.title2.Editmaterial..text.md5=3q4PY+AnUewvfX7whtgIsg\=\= +matedtpan.title2.Editmaterial.es.text.changed=20110317062041 +matedtpan.title2.Editmaterial.es.text.md5=xafx1L4T9wEtrE5iiVX3lA\=\= +matedtpan.title2.Editmaterial.fr.text.changed=20110317061957 +matedtpan.title2.Editmaterial.fr.text.md5=mRDncJaGnDKpeWrgabFnAA\=\= +pref.dlg.Add..text.changed=20110317061957 +pref.dlg.Add..text.md5=7CEffCCvQ+dCvyVww8uE+Q\=\= +pref.dlg.Add.es.text.changed=20110317062041 +pref.dlg.Add.es.text.md5=7CEffCCvQ+dCvyVww8uE+Q\=\= +pref.dlg.Add.fr.text.changed=20110317061957 +pref.dlg.Add.fr.text.md5=GNkl5NWxtWkojRGUILvLQg\=\= +pref.dlg.Allthrustcurvefiles..text.changed=20110317061957 +pref.dlg.Allthrustcurvefiles..text.md5=kDA+4Lq1heam753M+uvpgA\=\= +pref.dlg.Allthrustcurvefiles.es.text.changed=20110317062041 +pref.dlg.Allthrustcurvefiles.es.text.md5=uRQRQkK22l0TmByHCZOwcg\=\= +pref.dlg.Allthrustcurvefiles.fr.text.changed=20110317061957 +pref.dlg.Allthrustcurvefiles.fr.text.md5=DOzqnTzKQwx9CCeOxszzkg\=\= +pref.dlg.DescriptionArea.Adddirectories..text.changed=20110317061957 +pref.dlg.DescriptionArea.Adddirectories..text.md5=k19hlTTUxMpy7mwd0BCSWQ\=\= +pref.dlg.DescriptionArea.Adddirectories.es.text.changed=20110317062041 +pref.dlg.DescriptionArea.Adddirectories.es.text.md5=k19hlTTUxMpy7mwd0BCSWQ\=\= +pref.dlg.DescriptionArea.Adddirectories.fr.text.changed=20110317061957 +pref.dlg.DescriptionArea.Adddirectories.fr.text.md5=EHqhqc7XUHb1r0Mz1qg5VA\=\= +pref.dlg.PrefBooleanSelector1..text.changed=20110317061957 +pref.dlg.PrefBooleanSelector1..text.md5=8qbEmPuQ7jRdmX+Ij847GA\=\= +pref.dlg.PrefBooleanSelector1.es.text.changed=20110317062041 +pref.dlg.PrefBooleanSelector1.es.text.md5=8qbEmPuQ7jRdmX+Ij847GA\=\= +pref.dlg.PrefBooleanSelector1.fr.text.changed=20110317061957 +pref.dlg.PrefBooleanSelector1.fr.text.md5=zP2YUbUKqmcVE7UNFY7VeQ\=\= +pref.dlg.PrefBooleanSelector2..text.changed=20110317061957 +pref.dlg.PrefBooleanSelector2..text.md5=cNm+mxOYk6psabXnfmFDEQ\=\= +pref.dlg.PrefBooleanSelector2.es.text.changed=20110317062041 +pref.dlg.PrefBooleanSelector2.es.text.md5=cNm+mxOYk6psabXnfmFDEQ\=\= +pref.dlg.PrefBooleanSelector2.fr.text.changed=20110317061957 +pref.dlg.PrefBooleanSelector2.fr.text.md5=MDp0CY41aQn/z2i5vUyhsA\=\= +pref.dlg.PrefChoiseSelector1..text.changed=20110317061957 +pref.dlg.PrefChoiseSelector1..text.md5=Lda1TOpgqPdaaFtSL4knRw\=\= +pref.dlg.PrefChoiseSelector1.es.text.changed=20110317062041 +pref.dlg.PrefChoiseSelector1.es.text.md5=Lda1TOpgqPdaaFtSL4knRw\=\= +pref.dlg.PrefChoiseSelector1.fr.text.changed=20110317061957 +pref.dlg.PrefChoiseSelector1.fr.text.md5=fEhKYzLh4tfLBsKNZFyoxA\=\= +pref.dlg.PrefChoiseSelector2..text.changed=20110317061957 +pref.dlg.PrefChoiseSelector2..text.md5=ZEb3BLzSY1T5B6AUsUsWZg\=\= +pref.dlg.PrefChoiseSelector2.es.text.changed=20110317062041 +pref.dlg.PrefChoiseSelector2.es.text.md5=ZEb3BLzSY1T5B6AUsUsWZg\=\= +pref.dlg.PrefChoiseSelector2.fr.text.changed=20110317061957 +pref.dlg.PrefChoiseSelector2.fr.text.md5=YTuZiPwhFLjhFC+El5aF9A\=\= +pref.dlg.PrefChoiseSelector3..text.changed=20110317061957 +pref.dlg.PrefChoiseSelector3..text.md5=6s6zxBFNFXU0xiqZtz5gpQ\=\= +pref.dlg.PrefChoiseSelector3.es.text.changed=20110317062041 +pref.dlg.PrefChoiseSelector3.es.text.md5=6s6zxBFNFXU0xiqZtz5gpQ\=\= +pref.dlg.PrefChoiseSelector3.fr.text.changed=20110317061957 +pref.dlg.PrefChoiseSelector3.fr.text.md5=jwbQgugB01TZqmUymYcoVQ\=\= +pref.dlg.RASPfiles..text.changed=20110317061957 +pref.dlg.RASPfiles..text.md5=ZEfHl0koTPOBVic6BTNN+g\=\= +pref.dlg.RASPfiles.es.text.changed=20110317062041 +pref.dlg.RASPfiles.es.text.md5=mirpe15hQIBZKfLPLpBE7Q\=\= +pref.dlg.RASPfiles.fr.text.changed=20110317061957 +pref.dlg.RASPfiles.fr.text.md5=/8kQtFxETBNUEa4U+WwgeQ\=\= +pref.dlg.RockSimfiles..text.changed=20110317061957 +pref.dlg.RockSimfiles..text.md5=wTxmfMyMx6jQY31Z9JXg7Q\=\= +pref.dlg.RockSimfiles.es.text.changed=20110317062041 +pref.dlg.RockSimfiles.es.text.md5=gm3nr+/BGOK0xI+9vwNArw\=\= +pref.dlg.RockSimfiles.fr.text.changed=20110317061957 +pref.dlg.RockSimfiles.fr.text.md5=0bA0t5m+QsWZ+/vvv0gGgw\=\= +pref.dlg.ZIParchives..text.changed=20110317061957 +pref.dlg.ZIParchives..text.md5=v1ZbAJNpUkfHd9rTteTz3Q\=\= +pref.dlg.ZIParchives.es.text.changed=20110317062041 +pref.dlg.ZIParchives.es.text.md5=9i3Vsix+XU7gatV6LTeDrg\=\= +pref.dlg.ZIParchives.fr.text.changed=20110317061957 +pref.dlg.ZIParchives.fr.text.md5=cRHCl+o5LMqOEZEQiHM5fw\=\= +pref.dlg.but.add..text.changed=20110317061957 +pref.dlg.but.add..text.md5=7CEffCCvQ+dCvyVww8uE+Q\=\= +pref.dlg.but.add.es.text.changed=20110317062041 +pref.dlg.but.add.es.text.md5=TnoEp2bP5dkyM11JLQBocg\=\= +pref.dlg.but.add.fr.text.changed=20110317061957 +pref.dlg.but.add.fr.text.md5=GNkl5NWxtWkojRGUILvLQg\=\= +pref.dlg.but.checknow..text.changed=20110317061957 +pref.dlg.but.checknow..text.md5=LIcuZ3+LWDHyCmbGXn+JZg\=\= +pref.dlg.but.checknow.es.text.changed=20110317062041 +pref.dlg.but.checknow.es.text.md5=N54V/2bhXDUWGfjIvJ4heg\=\= +pref.dlg.but.checknow.fr.text.changed=20110317061957 +pref.dlg.but.checknow.fr.text.md5=5jbEOI2azoM4IgAYGWZqOQ\=\= +pref.dlg.but.defaultimperial..text.changed=20110317061957 +pref.dlg.but.defaultimperial..text.md5=qnA5YZLijZWVj5Us9YMGVQ\=\= +pref.dlg.but.defaultimperial.es.text.changed=20110317062041 +pref.dlg.but.defaultimperial.es.text.md5=wwl1fXFhx9LVPDAuiX+/vA\=\= +pref.dlg.but.defaultimperial.fr.text.changed=20110317061957 +pref.dlg.but.defaultimperial.fr.text.md5=Rg4D/oL/1AyJniE8ZchJuQ\=\= +pref.dlg.but.defaultmetric..text.changed=20110317061957 +pref.dlg.but.defaultmetric..text.md5=Gss/qDfo50nnA9gmW/mrqA\=\= +pref.dlg.but.defaultmetric.es.text.changed=20110317062041 +pref.dlg.but.defaultmetric.es.text.md5=gvip7VNe090lJHT4OyfGlQ\=\= +pref.dlg.but.defaultmetric.fr.text.changed=20110317061957 +pref.dlg.but.defaultmetric.fr.text.md5=uM8B2hTJVzI4SCYdzUTVnw\=\= +pref.dlg.but.reset..text.changed=20110317061957 +pref.dlg.but.reset..text.md5=Um1ojzeobTw/J9DFAW63HQ\=\= +pref.dlg.but.reset.es.text.changed=20110317062041 +pref.dlg.but.reset.es.text.md5=1AyYmA0X0AKMM9UVNCdanQ\=\= +pref.dlg.but.reset.fr.text.changed=20110317061957 +pref.dlg.but.reset.fr.text.md5=fgGw8uzsqquPbh/0yFLRMg\=\= +pref.dlg.checkbox.Checkupdates..text.changed=20110317061957 +pref.dlg.checkbox.Checkupdates..text.md5=FlhzmeyWj96CIXxAl5uhog\=\= +pref.dlg.checkbox.Checkupdates.es.text.changed=20110317062041 +pref.dlg.checkbox.Checkupdates.es.text.md5=a/nyJ4nbGo7VJvCTjBfRgw\=\= +pref.dlg.checkbox.Checkupdates.fr.text.changed=20110317061957 +pref.dlg.checkbox.Checkupdates.fr.text.md5=m5W4K7f2oIqB6qN2zZO9ag\=\= +pref.dlg.lbl.Acceleration..text.changed=20110317061957 +pref.dlg.lbl.Acceleration..text.md5=maob8cH+pIwxporVlXNR8Q\=\= +pref.dlg.lbl.Acceleration.es.text.changed=20110317062041 +pref.dlg.lbl.Acceleration.es.text.md5=j9twcTTY5KRhW+ZliphriA\=\= +pref.dlg.lbl.Acceleration.fr.text.changed=20110317061957 +pref.dlg.lbl.Acceleration.fr.text.md5=RhASQZJxdnwUX9BIb1VHqg\=\= +pref.dlg.lbl.Angle..text.changed=20110317061957 +pref.dlg.lbl.Angle..text.md5=eqZ4ya0M4VyCp1qovDQUsA\=\= +pref.dlg.lbl.Angle.es.text.changed=20110317062041 +pref.dlg.lbl.Angle.es.text.md5=T9bgmaOVQwRc6vOgnoDw9Q\=\= +pref.dlg.lbl.Angle.fr.text.changed=20110317061957 +pref.dlg.lbl.Angle.fr.text.md5=eqZ4ya0M4VyCp1qovDQUsA\=\= +pref.dlg.lbl.Area..text.changed=20110317061957 +pref.dlg.lbl.Area..text.md5=iITrRvThI7LbENNowNhTtg\=\= +pref.dlg.lbl.Area.es.text.changed=20110317062041 +pref.dlg.lbl.Area.es.text.md5=5mgZZEe68wpf80lZ9g7sCQ\=\= +pref.dlg.lbl.Area.fr.text.changed=20110317061957 +pref.dlg.lbl.Area.fr.text.md5=FJ2BadP5JPeTnMV3aGDM4g\=\= +pref.dlg.lbl.Bulkdensity..text.changed=20110317061957 +pref.dlg.lbl.Bulkdensity..text.md5=q75sd9osryPE4cclCnGMcQ\=\= +pref.dlg.lbl.Bulkdensity.es.text.changed=20110317062041 +pref.dlg.lbl.Bulkdensity.es.text.md5=iNcAaIuHsPowC6Hp6vugMw\=\= +pref.dlg.lbl.Bulkdensity.fr.text.changed=20110317061957 +pref.dlg.lbl.Bulkdensity.fr.text.md5=i65bH7DRq37VhRoKSypC1Q\=\= +pref.dlg.lbl.Checkingupdates..text.changed=20110317061957 +pref.dlg.lbl.Checkingupdates..text.md5=oHgTzAVXHyPOjdcDlYPX2g\=\= +pref.dlg.lbl.Checkingupdates.es.text.changed=20110317062041 +pref.dlg.lbl.Checkingupdates.es.text.md5=7qXxeYyJXzmS4OLnFwu2AA\=\= +pref.dlg.lbl.Checkingupdates.fr.text.changed=20110317061957 +pref.dlg.lbl.Checkingupdates.fr.text.md5=Oho7XFliOzE3mY/bOLNNQg\=\= +pref.dlg.lbl.Confirmdeletion..text.changed=20110317061957 +pref.dlg.lbl.Confirmdeletion..text.md5=kpPNJK6xpM/wNHP8cgU8tQ\=\= +pref.dlg.lbl.Confirmdeletion.es.text.changed=20110317062041 +pref.dlg.lbl.Confirmdeletion.es.text.md5=2n3VJFVXpz4kSOhHssMNHA\=\= +pref.dlg.lbl.Confirmdeletion.fr.text.changed=20110317061957 +pref.dlg.lbl.Confirmdeletion.fr.text.md5=CiM5F46dtSBQ8tE6bdy7gg\=\= +pref.dlg.lbl.Distance..text.changed=20110317061957 +pref.dlg.lbl.Distance..text.md5=1+zCC+AmNcj9m6cX3wKmaw\=\= +pref.dlg.lbl.Distance.es.text.changed=20110317062041 +pref.dlg.lbl.Distance.es.text.md5=izTEhgnEn7+H/1n9c1OZ5A\=\= +pref.dlg.lbl.Distance.fr.text.changed=20110317061957 +pref.dlg.lbl.Distance.fr.text.md5=1+zCC+AmNcj9m6cX3wKmaw\=\= +pref.dlg.lbl.Force..text.changed=20110317061957 +pref.dlg.lbl.Force..text.md5=pJZtwWmhGoIcwMYdMl91Qw\=\= +pref.dlg.lbl.Force.es.text.changed=20110317062041 +pref.dlg.lbl.Force.es.text.md5=L5cqYgrTZ8QK7buf4R6nPw\=\= +pref.dlg.lbl.Force.fr.text.changed=20110317061957 +pref.dlg.lbl.Force.fr.text.md5=pJZtwWmhGoIcwMYdMl91Qw\=\= +pref.dlg.lbl.Linedensity..text.changed=20110317061957 +pref.dlg.lbl.Linedensity..text.md5=5Ky8OQgDW7FLAUHLbRfoQw\=\= +pref.dlg.lbl.Linedensity.es.text.changed=20110317062041 +pref.dlg.lbl.Linedensity.es.text.md5=29SgSwSG0nh0bw9NrU87iA\=\= +pref.dlg.lbl.Linedensity.fr.text.changed=20110317061957 +pref.dlg.lbl.Linedensity.fr.text.md5=znJmDK1cw369IZGSR9N6jA\=\= +pref.dlg.lbl.Mass..text.changed=20110317061957 +pref.dlg.lbl.Mass..text.md5=uhJztJZI9YFN9J6bF8Trng\=\= +pref.dlg.lbl.Mass.es.text.changed=20110317062041 +pref.dlg.lbl.Mass.es.text.md5=GV/FcctiBOU+rrzQkQf+bQ\=\= +pref.dlg.lbl.Mass.fr.text.changed=20110317061957 +pref.dlg.lbl.Mass.fr.text.md5=pM5yVmT3KWHb26EEkoINoQ\=\= +pref.dlg.lbl.Momentofinertia..text.changed=20110317061957 +pref.dlg.lbl.Momentofinertia..text.md5=TRDRmWwPIjSN4yT1/MhnjQ\=\= +pref.dlg.lbl.Momentofinertia.es.text.changed=20110317062041 +pref.dlg.lbl.Momentofinertia.es.text.md5=Pr8weexE+wOz6eUB3g1uMg\=\= +pref.dlg.lbl.Momentofinertia.fr.text.changed=20110317061957 +pref.dlg.lbl.Momentofinertia.fr.text.md5=RQbiwlsaQCpNfJNhhu+w0Q\=\= +pref.dlg.lbl.Motordimensions..text.changed=20110317061957 +pref.dlg.lbl.Motordimensions..text.md5=6HfzRC5myTbCMrvAhXqzmg\=\= +pref.dlg.lbl.Motordimensions.es.text.changed=20110317062041 +pref.dlg.lbl.Motordimensions.es.text.md5=ySJFlI0dNOnqYwsxHTO3zg\=\= +pref.dlg.lbl.Motordimensions.fr.text.changed=20110317061957 +pref.dlg.lbl.Motordimensions.fr.text.md5=T4VamJ3wookrYRyM4KKm1Q\=\= +pref.dlg.lbl.Positiontoinsert..text.changed=20110317061957 +pref.dlg.lbl.Positiontoinsert..text.md5=ompMetl+mLJdY0hjuOCQPQ\=\= +pref.dlg.lbl.Positiontoinsert.es.text.changed=20110317062041 +pref.dlg.lbl.Positiontoinsert.es.text.md5=aEt2AQQLZJ9/DwZHw5URfw\=\= +pref.dlg.lbl.Positiontoinsert.fr.text.changed=20110317061957 +pref.dlg.lbl.Positiontoinsert.fr.text.md5=3xP+JbLaymIll/nSEjNzfg\=\= +pref.dlg.lbl.Pressure..text.changed=20110317061957 +pref.dlg.lbl.Pressure..text.md5=orG4EM2I0NrXoN8Pcd6JXw\=\= +pref.dlg.lbl.Pressure.es.text.changed=20110317062041 +pref.dlg.lbl.Pressure.es.text.md5=UGv+4uJMw0wmdX6NgJVgXw\=\= +pref.dlg.lbl.Pressure.fr.text.changed=20110317061957 +pref.dlg.lbl.Pressure.fr.text.md5=n/tutxCm6Qrt4Lo6x1rZDw\=\= +pref.dlg.lbl.Rocketdimensions..text.changed=20110317061957 +pref.dlg.lbl.Rocketdimensions..text.md5=ZIPDo1xLi3h2vLB8YuuKSw\=\= +pref.dlg.lbl.Rocketdimensions.es.text.changed=20110317062041 +pref.dlg.lbl.Rocketdimensions.es.text.md5=X/2Bzxik6aPa2hX/MVwMkA\=\= +pref.dlg.lbl.Rocketdimensions.fr.text.changed=20110317061957 +pref.dlg.lbl.Rocketdimensions.fr.text.md5=9Mwg13gAEpu/gSRwOlaeIQ\=\= +pref.dlg.lbl.Rollrate..text.changed=20110317061957 +pref.dlg.lbl.Rollrate..text.md5=jqY3far1Q8N81yltDukE7A\=\= +pref.dlg.lbl.Rollrate.es.text.changed=20110317062041 +pref.dlg.lbl.Rollrate.es.text.md5=1rAIRwGCSpwLw/RjfNcTwQ\=\= +pref.dlg.lbl.Rollrate.fr.text.changed=20110317061957 +pref.dlg.lbl.Rollrate.fr.text.md5=4yBvCJRuEcR3wYN8vJPczA\=\= +pref.dlg.lbl.Selectprefunits..text.changed=20110317061957 +pref.dlg.lbl.Selectprefunits..text.md5=WSnIkkSHNerPwnx8mXJoEg\=\= +pref.dlg.lbl.Selectprefunits.es.text.changed=20110317062041 +pref.dlg.lbl.Selectprefunits.es.text.md5=I5IeJnjeUDRpM78AcO/iaA\=\= +pref.dlg.lbl.Selectprefunits.fr.text.changed=20110317061957 +pref.dlg.lbl.Selectprefunits.fr.text.md5=JsqAIwjSPx/SB+77ty8Uwg\=\= +pref.dlg.lbl.Stability..text.changed=20110317061957 +pref.dlg.lbl.Stability..text.md5=LBO6FRY6BiV2OFFMimk7Cw\=\= +pref.dlg.lbl.Stability.es.text.changed=20110317062041 +pref.dlg.lbl.Stability.es.text.md5=Wwb6naPjAQjvC0vsklBnEQ\=\= +pref.dlg.lbl.Stability.fr.text.changed=20110317061957 +pref.dlg.lbl.Stability.fr.text.md5=mKdlKkmTwloZqh6SDoqzDA\=\= +pref.dlg.lbl.Surfacedensity..text.changed=20110317061957 +pref.dlg.lbl.Surfacedensity..text.md5=YtmvdYBoVLXnS0Ptsxm3dA\=\= +pref.dlg.lbl.Surfacedensity.es.text.changed=20110317062041 +pref.dlg.lbl.Surfacedensity.es.text.md5=oRKR4J1TMv2RPoq7YhRNEA\=\= +pref.dlg.lbl.Surfacedensity.fr.text.changed=20110317061957 +pref.dlg.lbl.Surfacedensity.fr.text.md5=HWuYDLFor+5z2ZuVfUuseQ\=\= +pref.dlg.lbl.Surfaceroughness..text.changed=20110317061957 +pref.dlg.lbl.Surfaceroughness..text.md5=F6AGSck/HFBR82U69wiQUw\=\= +pref.dlg.lbl.Surfaceroughness.es.text.changed=20110317062041 +pref.dlg.lbl.Surfaceroughness.es.text.md5=b2LW9SwcLCn1hTZxnGAZPQ\=\= +pref.dlg.lbl.Surfaceroughness.fr.text.changed=20110317061957 +pref.dlg.lbl.Surfaceroughness.fr.text.md5=rUJs21FNtERdOhh9A4prtg\=\= +pref.dlg.lbl.Temperature..text.changed=20110317061957 +pref.dlg.lbl.Temperature..text.md5=DPgM4apm5pttJwjQr4JyRw\=\= +pref.dlg.lbl.Temperature.es.text.changed=20110317062041 +pref.dlg.lbl.Temperature.es.text.md5=uXp9rtZp/mQyOVPxjR1KAA\=\= +pref.dlg.lbl.Temperature.fr.text.changed=20110317061957 +pref.dlg.lbl.Temperature.fr.text.md5=L5murG6QLq/coqbNQSD92A\=\= +pref.dlg.lbl.Totalimpulse..text.changed=20110317061957 +pref.dlg.lbl.Totalimpulse..text.md5=ZDshEiFE3a4LgL7awkgWrQ\=\= +pref.dlg.lbl.Totalimpulse.es.text.changed=20110317062041 +pref.dlg.lbl.Totalimpulse.es.text.md5=vRQ45Bz20zi7AYE3D+CXGQ\=\= +pref.dlg.lbl.Totalimpulse.fr.text.changed=20110317061957 +pref.dlg.lbl.Totalimpulse.fr.text.md5=NpXvobhBhx9ZATcB6zR4hg\=\= +pref.dlg.lbl.User-definedthrust..text.changed=20110317061957 +pref.dlg.lbl.User-definedthrust..text.md5=ksB8LsR5JjGsYCIzJYtBtQ\=\= +pref.dlg.lbl.User-definedthrust.es.text.changed=20110317062041 +pref.dlg.lbl.User-definedthrust.es.text.md5=9J+5NNryJ0R7y7AlfO3hcw\=\= +pref.dlg.lbl.User-definedthrust.fr.text.changed=20110317061957 +pref.dlg.lbl.User-definedthrust.fr.text.md5=gFQ0ApS6ge7KmQdFVoH2vw\=\= +pref.dlg.lbl.Velocity..text.changed=20110317061957 +pref.dlg.lbl.Velocity..text.md5=amkZLQ7Ohc5lBM+RMkfv/A\=\= +pref.dlg.lbl.Velocity.es.text.changed=20110317062041 +pref.dlg.lbl.Velocity.es.text.md5=JemM4HUdhG9EOAzTlOrJzA\=\= +pref.dlg.lbl.Velocity.fr.text.changed=20110317061957 +pref.dlg.lbl.Velocity.fr.text.md5=AiHRC56WHpIgpMwbV/CiQw\=\= +pref.dlg.lbl.effect1..text.changed=20110317061957 +pref.dlg.lbl.effect1..text.md5=nERjoYjBeZ+VN3Vfq7O6jQ\=\= +pref.dlg.lbl.effect1.es.text.changed=20110317062041 +pref.dlg.lbl.effect1.es.text.md5=DB/CrocNqh5rUU/QVzTqGw\=\= +pref.dlg.lbl.effect1.fr.text.changed=20110317061957 +pref.dlg.lbl.effect1.fr.text.md5=ot+/UH8lO/HyMcly0/WMiA\=\= +pref.dlg.lbl.msg1..text.changed=20110317061957 +pref.dlg.lbl.msg1..text.md5=MqY1WwgWTHSBqg6CpV1+Sg\=\= +pref.dlg.lbl.msg1.es.text.changed=20110317062041 +pref.dlg.lbl.msg1.es.text.md5=ZFMNLBox6+rEi0px6ttZfg\=\= +pref.dlg.lbl.msg1.fr.text.changed=20110317061957 +pref.dlg.lbl.msg1.fr.text.md5=2ZJXJJtGLjivaaUTPEzt7g\=\= +pref.dlg.lbl.msg2..text.changed=20110317061957 +pref.dlg.lbl.msg2..text.md5=nfP0w9SxgjEM01v+Bcygnw\=\= +pref.dlg.lbl.msg2.es.text.changed=20110317062041 +pref.dlg.lbl.msg2.es.text.md5=/TOZ3z07R8NN2VOpN9R6VQ\=\= +pref.dlg.lbl.msg2.fr.text.changed=20110317061957 +pref.dlg.lbl.msg2.fr.text.md5=Tig1u1X4DJrXXTse31svrQ\=\= +pref.dlg.lbl.msg3..text.changed=20110317061957 +pref.dlg.lbl.msg3..text.md5=mgAlfTlMW6GcHS5T8o/eWQ\=\= +pref.dlg.lbl.msg3.es.text.changed=20110317062041 +pref.dlg.lbl.msg3.es.text.md5=bK/gmWyNTykGZ3ey3AntEQ\=\= +pref.dlg.lbl.msg3.fr.text.changed=20110317061957 +pref.dlg.lbl.msg3.fr.text.md5=V6AWMTcV9+3KJy/dAPlKfg\=\= +pref.dlg.lbl.msg4..text.changed=20110317061957 +pref.dlg.lbl.msg4..text.md5=m3xSKTJWaUBssByn95+TAw\=\= +pref.dlg.lbl.msg4.es.text.changed=20110317062041 +pref.dlg.lbl.msg4.es.text.md5=H2KCOMdJcX42KtJ4Smed2Q\=\= +pref.dlg.lbl.msg4.fr.text.changed=20110317061957 +pref.dlg.lbl.msg4.fr.text.md5=UAk2a6xa8UDC0IBn+sfyWw\=\= +pref.dlg.tab.Custommaterials..text.changed=20110317061957 +pref.dlg.tab.Custommaterials..text.md5=RvFIQ+H3sN/xreOzW7lJNw\=\= +pref.dlg.tab.Custommaterials.es.text.changed=20110317062041 +pref.dlg.tab.Custommaterials.es.text.md5=SCSFER9JgMoBSknll6RpHQ\=\= +pref.dlg.tab.Custommaterials.fr.text.changed=20110317061957 +pref.dlg.tab.Custommaterials.fr.text.md5=DQ41UloUaiYRqNsHLuA4bg\=\= +pref.dlg.tab.Defaultunits..text.changed=20110317061957 +pref.dlg.tab.Defaultunits..text.md5=gBdDM5g90nxmKDrpwbV3Ew\=\= +pref.dlg.tab.Defaultunits.es.text.changed=20110317062041 +pref.dlg.tab.Defaultunits.es.text.md5=fN5lVoteCBVjqrNdzcg2Gg\=\= +pref.dlg.tab.Defaultunits.fr.text.changed=20110317061957 +pref.dlg.tab.Defaultunits.fr.text.md5=bm77EyrSTPyFte7dyw72/w\=\= +pref.dlg.tab.Materials..text.changed=20110317061957 +pref.dlg.tab.Materials..text.md5=I84Ot9GA89yDkdSvSFctIQ\=\= +pref.dlg.tab.Materials.es.text.changed=20110317062041 +pref.dlg.tab.Materials.es.text.md5=aHUcoSIAS9GV1B6xBdl8xQ\=\= +pref.dlg.tab.Materials.fr.text.changed=20110317061957 +pref.dlg.tab.Materials.fr.text.md5=VIeuRMJRAAlmhGYNzxsxBw\=\= +pref.dlg.tab.Miscellaneousoptions..text.changed=20110317061957 +pref.dlg.tab.Miscellaneousoptions..text.md5=9rIkebozEdBr8NbOKYm6tw\=\= +pref.dlg.tab.Miscellaneousoptions.es.text.changed=20110317062041 +pref.dlg.tab.Miscellaneousoptions.es.text.md5=FI3kXtG96ZxEnuBRExJDhg\=\= +pref.dlg.tab.Miscellaneousoptions.fr.text.changed=20110317061957 +pref.dlg.tab.Miscellaneousoptions.fr.text.md5=3is2iPsyt1C8eckwmjlilg\=\= +pref.dlg.tab.Options..text.changed=20110317061957 +pref.dlg.tab.Options..text.md5=2uis4YvcvMauWuziY+FP6A\=\= +pref.dlg.tab.Options.es.text.changed=20110317062041 +pref.dlg.tab.Options.es.text.md5=iHfzoqIqnsqmVJywWRI5Rw\=\= +pref.dlg.tab.Options.fr.text.changed=20110317061957 +pref.dlg.tab.Options.fr.text.md5=2uis4YvcvMauWuziY+FP6A\=\= +pref.dlg.tab.Units..text.changed=20110317061957 +pref.dlg.tab.Units..text.md5=5XcaNi2Ipxple/zSHKVLPw\=\= +pref.dlg.tab.Units.es.text.changed=20110317062041 +pref.dlg.tab.Units.es.text.md5=b5SBMvLXbydtsMw24yO8kQ\=\= +pref.dlg.tab.Units.fr.text.changed=20110317061957 +pref.dlg.tab.Units.fr.text.md5=MFnVYKme8BGNYqI/wd4DKQ\=\= +pref.dlg.title.Preferences..text.changed=20110317061957 +pref.dlg.title.Preferences..text.md5=fiSV65tC8YSFElGbmREmWg\=\= +pref.dlg.title.Preferences.es.text.changed=20110317062041 +pref.dlg.title.Preferences.es.text.md5=LM4mIJ8hVRJwsGKf6c8Uvw\=\= +pref.dlg.title.Preferences.fr.text.changed=20110317061957 +pref.dlg.title.Preferences.fr.text.md5=bjq4n9g3pdsoeyBZzYKRuQ\=\= +pref.dlg.ttip.Checkupdatesnow..text.changed=20110317061957 +pref.dlg.ttip.Checkupdatesnow..text.md5=hAWxxTyPsbpbTSWbqE/eig\=\= +pref.dlg.ttip.Checkupdatesnow.es.text.changed=20110317062041 +pref.dlg.ttip.Checkupdatesnow.es.text.md5=UY5iNfRVT+iH58ywmJ0QCA\=\= +pref.dlg.ttip.Checkupdatesnow.fr.text.changed=20110317061957 +pref.dlg.ttip.Checkupdatesnow.fr.text.md5=LfWwypSNBFCZD5taNZr8JA\=\= +printdlg.but.preview..text.changed=20110317061957 +printdlg.but.preview..text.md5=Mf3nsFrIlS2s9K+KcEB07A\=\= +printdlg.but.preview.es.text.changed=20110317062041 +printdlg.but.preview.es.text.md5=aWEXdKz1ioVSleQnrF4Pow\=\= +printdlg.but.preview.fr.text.changed=20110317061957 +printdlg.but.preview.fr.text.md5=kQDhY7t2CRwUTrsQOg7lcg\=\= +printdlg.but.saveaspdf..text.changed=20110317061957 +printdlg.but.saveaspdf..text.md5=T75+Z/w547V0glCSiHKjBA\=\= +printdlg.but.saveaspdf.es.text.changed=20110317062041 +printdlg.but.saveaspdf.es.text.md5=B+SzptWTapIr9dxbX0f0Cw\=\= +printdlg.but.saveaspdf.fr.text.changed=20110317061957 +printdlg.but.saveaspdf.fr.text.md5=MPa+CmB3gqXMO39bomp+vA\=\= +printdlg.but.settings..text.changed=20110317061957 +printdlg.but.settings..text.md5=9PcHJ9w0Vh394aPFKbYgXA\=\= +printdlg.but.settings.es.text.changed=20110317062041 +printdlg.but.settings.es.text.md5=TTxOufNQ4mjwD4CX3lJhlA\=\= +printdlg.but.settings.fr.text.changed=20110317061957 +printdlg.but.settings.fr.text.md5=JU9kJSe0W8JgBI4wcE7bOQ\=\= +ringcompcfg.Automatic..text.changed=20110317061957 +ringcompcfg.Automatic..text.md5=CGJHqbV/3m7v7ioMR1IkLQ\=\= +ringcompcfg.Automatic.es.text.changed=20110317062041 +ringcompcfg.Automatic.es.text.md5=D3uT6/H6hH/AStlgA624Tw\=\= +ringcompcfg.Automatic.fr.text.changed=20110317061957 +ringcompcfg.Automatic.fr.text.md5=rO2dama6vw/FNskM7H2i5w\=\= +ringcompcfg.Distancefrom..text.changed=20110317061957 +ringcompcfg.Distancefrom..text.md5=iXOTqKArulUeSlj7NG4hYQ\=\= +ringcompcfg.Distancefrom.es.text.changed=20110317062041 +ringcompcfg.Distancefrom.es.text.md5=mJv/+HC1gbRzdzowCg4lXg\=\= +ringcompcfg.Distancefrom.fr.text.changed=20110317061957 +ringcompcfg.Distancefrom.fr.text.md5=V3j7OD+SjSFKcUbO632zTg\=\= +ringcompcfg.EngineBlock.desc..text.changed=20110317061957 +ringcompcfg.EngineBlock.desc..text.md5=+dcC5sq6raI7n9S1FKjT/A\=\= +ringcompcfg.EngineBlock.desc.es.text.changed=20110317062041 +ringcompcfg.EngineBlock.desc.es.text.md5=+dcC5sq6raI7n9S1FKjT/A\=\= +ringcompcfg.EngineBlock.desc.fr.text.changed=20110317061957 +ringcompcfg.EngineBlock.desc.fr.text.md5=734ReY+QcqGHVF5goRHfJA\=\= +ringcompcfg.InnerRadius..text.changed=20110317061957 +ringcompcfg.InnerRadius..text.md5=bh+QzqgBwRWJskDHzzoljA\=\= +ringcompcfg.InnerRadius.es.text.changed=20110317062041 +ringcompcfg.InnerRadius.es.text.md5=bh+QzqgBwRWJskDHzzoljA\=\= +ringcompcfg.InnerRadius.fr.text.changed=20110317061957 +ringcompcfg.InnerRadius.fr.text.md5=Db+pa+Ahki6WE9ulffUbQg\=\= +ringcompcfg.Length..text.changed=20110317061957 +ringcompcfg.Length..text.md5=uiqcbIx34D+D74v1Q2EidQ\=\= +ringcompcfg.Length.es.text.changed=20110317062041 +ringcompcfg.Length.es.text.md5=yRJSkybsSvz2fjoLePStOQ\=\= +ringcompcfg.Length.fr.text.changed=20110317061957 +ringcompcfg.Length.fr.text.md5=9IOe9DS00o4xVraDw/tFiQ\=\= +ringcompcfg.OuterRadius..text.changed=20110317061957 +ringcompcfg.OuterRadius..text.md5=rHHimetA/HNypRoiSn4ayA\=\= +ringcompcfg.OuterRadius.es.text.changed=20110317062041 +ringcompcfg.OuterRadius.es.text.md5=rHHimetA/HNypRoiSn4ayA\=\= +ringcompcfg.OuterRadius.fr.text.changed=20110317061957 +ringcompcfg.OuterRadius.fr.text.md5=0KRWZ37DQboWFNaIt8P4Yw\=\= +ringcompcfg.PositionValue..text.changed=20110317061957 +ringcompcfg.PositionValue..text.md5=VfSfqSLNbXrIZXfJptTwBw\=\= +ringcompcfg.PositionValue.es.text.changed=20110317062041 +ringcompcfg.PositionValue.es.text.md5=GtegWV8kPt81SYmFoKHQ6A\=\= +ringcompcfg.Positionrelativeto..text.changed=20110317061957 +ringcompcfg.Positionrelativeto..text.md5=uld2YfO/C3gWkbRzlw+EMA\=\= +ringcompcfg.Positionrelativeto.es.text.changed=20110317062041 +ringcompcfg.Positionrelativeto.es.text.md5=6hQM5zYAcKv2lio49/hQqQ\=\= +ringcompcfg.Positionrelativeto.fr.text.changed=20110317061957 +ringcompcfg.Positionrelativeto.fr.text.md5=b5qJfneiAEVaRoxk125f2Q\=\= +ringcompcfg.Radialdirection..text.changed=20110317061957 +ringcompcfg.Radialdirection..text.md5=75MvFf+j+psyzwdFcHYMHA\=\= +ringcompcfg.Radialdirection.es.text.changed=20110317062041 +ringcompcfg.Radialdirection.es.text.md5=75MvFf+j+psyzwdFcHYMHA\=\= +ringcompcfg.Radialdirection.fr.text.changed=20110317061957 +ringcompcfg.Radialdirection.fr.text.md5=LTOc7SJHWoW30NKxJNUbtw\=\= +ringcompcfg.Radialdistance..text.changed=20110317061957 +ringcompcfg.Radialdistance..text.md5=h+4GwPEjxtLCbattbJsWCg\=\= +ringcompcfg.Radialdistance.es.text.changed=20110317062041 +ringcompcfg.Radialdistance.es.text.md5=uZzanR16zi50c71Ltb76ZA\=\= +ringcompcfg.Radialdistance.fr.text.changed=20110317061957 +ringcompcfg.Radialdistance.fr.text.md5=EyX3DbszXL+q71CaMkPwjw\=\= +ringcompcfg.Thickness..text.changed=20110317061957 +ringcompcfg.Thickness..text.md5=JDHq49H7cRw6b0SkitfaXg\=\= +ringcompcfg.Thickness.es.text.changed=20110317062041 +ringcompcfg.Thickness.es.text.md5=flaJ2vP1m6oQau2zP8SfoQ\=\= +ringcompcfg.Thickness.fr.text.changed=20110317061957 +ringcompcfg.Thickness.fr.text.md5=so+00m8fSvI+It61fuP3FA\=\= +ringcompcfg.but.Reset..text.changed=20110317061957 +ringcompcfg.but.Reset..text.md5=Um1ojzeobTw/J9DFAW63HQ\=\= +ringcompcfg.but.Reset.es.text.changed=20110317062041 +ringcompcfg.but.Reset.es.text.md5=1AyYmA0X0AKMM9UVNCdanQ\=\= +ringcompcfg.but.Reset.fr.text.changed=20110317061957 +ringcompcfg.but.Reset.fr.text.md5=rR3lRqKsD1mH7vixg3s77Q\=\= +ringcompcfg.but.Resetcomponant..text.changed=20110317061957 +ringcompcfg.but.Resetcomponant..text.md5=4qhmrOpBhrcE0wmNA/2/Tw\=\= +ringcompcfg.but.Resetcomponant.es.text.changed=20110317062041 +ringcompcfg.but.Resetcomponant.es.text.md5=Z8EvgcFX6Lyn1M32uK3NrA\=\= +ringcompcfg.but.Resetcomponant.fr.text.changed=20110317061957 +ringcompcfg.but.Resetcomponant.fr.text.md5=d4rsVrDWZ60NIE1s2x/iBg\=\= +ringcompcfg.note.desc..text.changed=20110317061957 +ringcompcfg.note.desc..text.md5=Ya4xUtP6dEK8mNde2j54wA\=\= +ringcompcfg.note.desc.es.text.changed=20110317062041 +ringcompcfg.note.desc.es.text.md5=Ya4xUtP6dEK8mNde2j54wA\=\= +ringcompcfg.note.desc.fr.text.changed=20110317061957 +ringcompcfg.note.desc.fr.text.md5=T4aQkDoV1sOSNm8kb2TTxQ\=\= +ringcompcfg.plus..text.changed=20110317061957 +ringcompcfg.plus..text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +ringcompcfg.plus.es.text.changed=20110317062041 +ringcompcfg.plus.es.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +ringcompcfg.plus.fr.text.changed=20110317061957 +ringcompcfg.plus.fr.text.md5=19GM+zoNgpPi9dlOow4E0g\=\= +ringcompcfg.radialdirectionfrom..text.changed=20110317061957 +ringcompcfg.radialdirectionfrom..text.md5=uxY6X/nbTRmiMCPzgOWecw\=\= +ringcompcfg.radialdirectionfrom.es.text.changed=20110317062041 +ringcompcfg.radialdirectionfrom.es.text.md5=LnVQS77Ikw2WqJjjVrxgjA\=\= +ringcompcfg.radialdirectionfrom.fr.text.changed=20110317061957 +ringcompcfg.radialdirectionfrom.fr.text.md5=3GyglhPrOV2D+lvl2MmApA\=\= +simedtdlg.IntensityDesc.Extreme..text.changed=20110317061957 +simedtdlg.IntensityDesc.Extreme..text.md5=uh9sWVJdca7kwCd5jSRw/Q\=\= +simedtdlg.IntensityDesc.Extreme.es.text.changed=20110317062041 +simedtdlg.IntensityDesc.Extreme.es.text.md5=uh9sWVJdca7kwCd5jSRw/Q\=\= +simedtdlg.IntensityDesc.Extreme.fr.text.changed=20110317061957 +simedtdlg.IntensityDesc.Extreme.fr.text.md5=uh9sWVJdca7kwCd5jSRw/Q\=\= +simedtdlg.IntensityDesc.High..text.changed=20110317061957 +simedtdlg.IntensityDesc.High..text.md5=ZV0gwcppUZymR2hO27LbNQ\=\= +simedtdlg.IntensityDesc.High.es.text.changed=20110317062041 +simedtdlg.IntensityDesc.High.es.text.md5=ZV0gwcppUZymR2hO27LbNQ\=\= +simedtdlg.IntensityDesc.High.fr.text.changed=20110317061957 +simedtdlg.IntensityDesc.High.fr.text.md5=gg+5aGKEaSeg94H9Agf7+A\=\= +simedtdlg.IntensityDesc.Low..text.changed=20110317061957 +simedtdlg.IntensityDesc.Low..text.md5=KNDt0EXgXPWvZONa4MTG7w\=\= +simedtdlg.IntensityDesc.Low.es.text.changed=20110317062041 +simedtdlg.IntensityDesc.Low.es.text.md5=KNDt0EXgXPWvZONa4MTG7w\=\= +simedtdlg.IntensityDesc.Low.fr.text.changed=20110317061957 +simedtdlg.IntensityDesc.Low.fr.text.md5=PQj/NSIeD3DkeJYYvCKJug\=\= +simedtdlg.IntensityDesc.Medium..text.changed=20110317061957 +simedtdlg.IntensityDesc.Medium..text.md5=h/imq4XJztNwK06mQa1LtQ\=\= +simedtdlg.IntensityDesc.Medium.es.text.changed=20110317062041 +simedtdlg.IntensityDesc.Medium.es.text.md5=h/imq4XJztNwK06mQa1LtQ\=\= +simedtdlg.IntensityDesc.Medium.fr.text.changed=20110317061957 +simedtdlg.IntensityDesc.Medium.fr.text.md5=y3VAS2dcZi8mXZqr+HA0bw\=\= +simedtdlg.IntensityDesc.None..text.changed=20110317061957 +simedtdlg.IntensityDesc.None..text.md5=at+X+DrPZFPUpqSxBw83VA\=\= +simedtdlg.IntensityDesc.None.es.text.changed=20110317062041 +simedtdlg.IntensityDesc.None.es.text.md5=at+X+DrPZFPUpqSxBw83VA\=\= +simedtdlg.IntensityDesc.None.fr.text.changed=20110317061957 +simedtdlg.IntensityDesc.None.fr.text.md5=mf+6sPVtfw0sa+cKIY0cuA\=\= +simedtdlg.IntensityDesc.Veryhigh..text.changed=20110317061957 +simedtdlg.IntensityDesc.Veryhigh..text.md5=MGmlUi3myUvQpAOHqxCyLA\=\= +simedtdlg.IntensityDesc.Veryhigh.es.text.changed=20110317062041 +simedtdlg.IntensityDesc.Veryhigh.es.text.md5=MGmlUi3myUvQpAOHqxCyLA\=\= +simedtdlg.IntensityDesc.Veryhigh.fr.text.changed=20110317061957 +simedtdlg.IntensityDesc.Veryhigh.fr.text.md5=zYr07rEPdEty+CJmiGEbTg\=\= +simedtdlg.IntensityDesc.Verylow..text.changed=20110317061957 +simedtdlg.IntensityDesc.Verylow..text.md5=IwEcVAf6F5iWG6vlgDYC8w\=\= +simedtdlg.IntensityDesc.Verylow.es.text.changed=20110317062041 +simedtdlg.IntensityDesc.Verylow.es.text.md5=IwEcVAf6F5iWG6vlgDYC8w\=\= +simedtdlg.IntensityDesc.Verylow.fr.text.changed=20110317061957 +simedtdlg.IntensityDesc.Verylow.fr.text.md5=Qg+BD6PY4BkqZPM5QnIz5A\=\= +simedtdlg.border.Atmoscond..text.changed=20110317061957 +simedtdlg.border.Atmoscond..text.md5=npuh1/LXWushqsNi5Nw4ig\=\= +simedtdlg.border.Atmoscond.es.text.changed=20110317062041 +simedtdlg.border.Atmoscond.es.text.md5=BG5fyB9wIMKjY7z/ntzNDw\=\= +simedtdlg.border.Atmoscond.fr.text.changed=20110317061957 +simedtdlg.border.Atmoscond.fr.text.md5=EkhEDaI8iQF7nf+9w0+bUg\=\= +simedtdlg.border.Launchrod..text.changed=20110317061957 +simedtdlg.border.Launchrod..text.md5=Ux4gxgDIhxI101PDsdryhw\=\= +simedtdlg.border.Launchrod.es.text.changed=20110317062041 +simedtdlg.border.Launchrod.es.text.md5=Z/bkbfclKsKG1h1TYMPuIA\=\= +simedtdlg.border.Launchrod.fr.text.changed=20110317061957 +simedtdlg.border.Launchrod.fr.text.md5=NefmikVNTPJonc/o1Rr9lw\=\= +simedtdlg.border.Simlist..text.changed=20110317061957 +simedtdlg.border.Simlist..text.md5=IxuSK2Ds64lJB5laD/Qk4A\=\= +simedtdlg.border.Simlist.es.text.changed=20110317062041 +simedtdlg.border.Simlist.es.text.md5=/YpNVN2wnPdn6uwgxSzgGw\=\= +simedtdlg.border.Simlist.fr.text.changed=20110317061957 +simedtdlg.border.Simlist.fr.text.md5=rBOcZ+pxK06FkAWlY7GU0A\=\= +simedtdlg.border.Simopt..text.changed=20110317061957 +simedtdlg.border.Simopt..text.md5=akFtflE3jD78aZSujIz1fQ\=\= +simedtdlg.border.Simopt.es.text.changed=20110317062041 +simedtdlg.border.Simopt.es.text.md5=muZrNGg64WGm2DFWmzgR0Q\=\= +simedtdlg.border.Simopt.fr.text.changed=20110317061957 +simedtdlg.border.Simopt.fr.text.md5=zdwMVKJdXqAuybSud8Vtmg\=\= +simedtdlg.but.add..text.changed=20110317061957 +simedtdlg.but.add..text.md5=7CEffCCvQ+dCvyVww8uE+Q\=\= +simedtdlg.but.add.es.text.changed=20110317062041 +simedtdlg.but.add.es.text.md5=TnoEp2bP5dkyM11JLQBocg\=\= +simedtdlg.but.add.fr.text.changed=20110317061957 +simedtdlg.but.add.fr.text.md5=GNkl5NWxtWkojRGUILvLQg\=\= +simedtdlg.but.remove..text.changed=20110317061957 +simedtdlg.but.remove..text.md5=EGPjjLU9lNOG8hIn/NhHFw\=\= +simedtdlg.but.remove.es.text.changed=20110317062041 +simedtdlg.but.remove.es.text.md5=9GsyGPtgozCnAMZ1WWrA4A\=\= +simedtdlg.but.remove.fr.text.changed=20110317061957 +simedtdlg.but.remove.fr.text.md5=0q3Ai6Nhuk17YCEtRMkuXA\=\= +simedtdlg.but.resettodefault..text.changed=20110317061957 +simedtdlg.but.resettodefault..text.md5=IF+RUmD36JEDiLcjaqe6Wg\=\= +simedtdlg.but.resettodefault.es.text.changed=20110317062041 +simedtdlg.but.resettodefault.es.text.md5=7TmQ2ucS3rir3YECwPaldw\=\= +simedtdlg.but.resettodefault.fr.text.changed=20110317061957 +simedtdlg.but.resettodefault.fr.text.md5=kw7MKY8w5LCySPW738f4hQ\=\= +simedtdlg.but.runsimulation..text.changed=20110317061957 +simedtdlg.but.runsimulation..text.md5=VLk6QXF74+nzTJrUaLC4SQ\=\= +simedtdlg.but.runsimulation.es.text.changed=20110317062041 +simedtdlg.but.runsimulation.es.text.md5=ZvK+F7LqMs0/cdoOhYhGuA\=\= +simedtdlg.but.runsimulation.fr.text.changed=20110317061957 +simedtdlg.but.runsimulation.fr.text.md5=anK16gTpeay9LSd6kI1n7w\=\= +simedtdlg.but.ttip.resettodefault..text.changed=20110317061957 +simedtdlg.but.ttip.resettodefault..text.md5=nxm15hB6mr2s+x3hdYW9Lg\=\= +simedtdlg.but.ttip.resettodefault.es.text.changed=20110317062041 +simedtdlg.but.ttip.resettodefault.es.text.md5=A3Z//brbVdrQiHvz+CuFSg\=\= +simedtdlg.but.ttip.resettodefault.fr.text.changed=20110317061957 +simedtdlg.but.ttip.resettodefault.fr.text.md5=AsZHNrU9VLuF/1D9ckQDZg\=\= +simedtdlg.chart.Simflight..text.changed=20110317061957 +simedtdlg.chart.Simflight..text.md5=9dB8ETg7rbeNkLDb7mWEwA\=\= +simedtdlg.chart.Simflight.es.text.changed=20110317062041 +simedtdlg.chart.Simflight.es.text.md5=TuSR9mNnUGttJOUezJGFxg\=\= +simedtdlg.chart.Simflight.fr.text.changed=20110317061957 +simedtdlg.chart.Simflight.fr.text.md5=ES98alBF1Zz2UHg7ocajzw\=\= +simedtdlg.checkbox.InterStdAtmosphere..text.changed=20110317061957 +simedtdlg.checkbox.InterStdAtmosphere..text.md5=LPC4GFXxCJj54lgcP3pCXA\=\= +simedtdlg.checkbox.InterStdAtmosphere.es.text.changed=20110317062041 +simedtdlg.checkbox.InterStdAtmosphere.es.text.md5=/jE6g/KO5GYwQ/MuBJyFmw\=\= +simedtdlg.checkbox.InterStdAtmosphere.fr.text.changed=20110317061957 +simedtdlg.checkbox.InterStdAtmosphere.fr.text.md5=BH9HZgwCnaT2JpMpFU4FIg\=\= +simedtdlg.checkbox.ttip.InterStdAtmosphere1..text.changed=20110317061957 +simedtdlg.checkbox.ttip.InterStdAtmosphere1..text.md5=8fsxhwqNAPshlfMeWBVOWA\=\= +simedtdlg.checkbox.ttip.InterStdAtmosphere1.es.text.changed=20110317062041 +simedtdlg.checkbox.ttip.InterStdAtmosphere1.es.text.md5=Nw/hPToInyr3UrwezNHusw\=\= +simedtdlg.checkbox.ttip.InterStdAtmosphere1.fr.text.changed=20110317061957 +simedtdlg.checkbox.ttip.InterStdAtmosphere1.fr.text.md5=u6b3YQLK22KKDdKvDEt6dw\=\= +simedtdlg.checkbox.ttip.InterStdAtmosphere2..text.changed=20110317061957 +simedtdlg.checkbox.ttip.InterStdAtmosphere2..text.md5=jxCzMJTgG+wrPFucsCKzFw\=\= +simedtdlg.checkbox.ttip.InterStdAtmosphere2.es.text.changed=20110317062041 +simedtdlg.checkbox.ttip.InterStdAtmosphere2.es.text.md5=PK4p9OdswdML9WzJeW0ARQ\=\= +simedtdlg.checkbox.ttip.InterStdAtmosphere2.fr.text.changed=20110317061957 +simedtdlg.checkbox.ttip.InterStdAtmosphere2.fr.text.md5=8MWRSa14qZQV6PKs6TKbXg\=\= +simedtdlg.checkbox.ttip.InterStdAtmosphere3..text.changed=20110317061957 +simedtdlg.checkbox.ttip.InterStdAtmosphere3..text.md5=qaJijR8iDWhjSWfSwgzaAw\=\= +simedtdlg.checkbox.ttip.InterStdAtmosphere3.es.text.changed=20110317062041 +simedtdlg.checkbox.ttip.InterStdAtmosphere3.es.text.md5=ytHCgH2tfTvhLZzx2NO3MQ\=\= +simedtdlg.checkbox.ttip.InterStdAtmosphere3.fr.text.changed=20110317061957 +simedtdlg.checkbox.ttip.InterStdAtmosphere3.fr.text.md5=6iVUarfGniXXLsw9nFLb8g\=\= +simedtdlg.combo.ttip.motorconf..text.changed=20110317061957 +simedtdlg.combo.ttip.motorconf..text.md5=HXPrHbRbP6GQbmmH4+x9Ag\=\= +simedtdlg.combo.ttip.motorconf.es.text.changed=20110317062041 +simedtdlg.combo.ttip.motorconf.es.text.md5=Ev8cbjgxLx1B7T9UfjjyxA\=\= +simedtdlg.combo.ttip.motorconf.fr.text.changed=20110317061957 +simedtdlg.combo.ttip.motorconf.fr.text.md5=dtElUKHY3BtTiRPIBzJ+sg\=\= +simedtdlg.dlg.Simres..text.changed=20110317061957 +simedtdlg.dlg.Simres..text.md5=M+2kOHN4rLbwiypmvltouQ\=\= +simedtdlg.dlg.Simres.es.text.changed=20110317062041 +simedtdlg.dlg.Simres.es.text.md5=syKwuFwPjdqgACgLj/deJQ\=\= +simedtdlg.dlg.Simres.fr.text.changed=20110317061957 +simedtdlg.dlg.Simres.fr.text.md5=SxzFH2DR1seO8P+k8qgWzQ\=\= +simedtdlg.lbl.Addsimlist..text.changed=20110317061957 +simedtdlg.lbl.Addsimlist..text.md5=TzDIDnU3eA2H+2NdX3dN7g\=\= +simedtdlg.lbl.Addsimlist.es.text.changed=20110317062041 +simedtdlg.lbl.Addsimlist.es.text.md5=TzzdxCXbcSsZpfjSswjH1A\=\= +simedtdlg.lbl.Addsimlist.fr.text.changed=20110317061957 +simedtdlg.lbl.Addsimlist.fr.text.md5=quCW+StDOijPKFQlsMMAdw\=\= +simedtdlg.lbl.Altitude..text.changed=20110317061957 +simedtdlg.lbl.Altitude..text.md5=E0gTnkAiZOiphJQJBJsnHg\=\= +simedtdlg.lbl.Altitude.es.text.changed=20110317062041 +simedtdlg.lbl.Altitude.es.text.md5=kW45w2n1Z2I4g9aZwsJQ7A\=\= +simedtdlg.lbl.Altitude.fr.text.changed=20110317061957 +simedtdlg.lbl.Altitude.fr.text.md5=E0gTnkAiZOiphJQJBJsnHg\=\= +simedtdlg.lbl.Angle..text.changed=20110317061957 +simedtdlg.lbl.Angle..text.md5=eqZ4ya0M4VyCp1qovDQUsA\=\= +simedtdlg.lbl.Angle.es.text.changed=20110317062041 +simedtdlg.lbl.Angle.es.text.md5=T9bgmaOVQwRc6vOgnoDw9Q\=\= +simedtdlg.lbl.Angle.fr.text.changed=20110317061957 +simedtdlg.lbl.Angle.fr.text.md5=eqZ4ya0M4VyCp1qovDQUsA\=\= +simedtdlg.lbl.Averwindspeed..text.changed=20110317061957 +simedtdlg.lbl.Averwindspeed..text.md5=2cfgiknR/vZ1icrfR4VxNA\=\= +simedtdlg.lbl.Averwindspeed.es.text.changed=20110317062041 +simedtdlg.lbl.Averwindspeed.es.text.md5=79Bouu/JNVkl2GF7eSr63w\=\= +simedtdlg.lbl.Averwindspeed.fr.text.changed=20110317061957 +simedtdlg.lbl.Averwindspeed.fr.text.md5=O1WyKlbhIsuIQkuAavmv6A\=\= +simedtdlg.lbl.Calcmethod..text.changed=20110317061957 +simedtdlg.lbl.Calcmethod..text.md5=XoIyjIO0zxFhmB+YMuTveQ\=\= +simedtdlg.lbl.Calcmethod.es.text.changed=20110317062041 +simedtdlg.lbl.Calcmethod.es.text.md5=yESebZEr/MyAp4mvY4VXrA\=\= +simedtdlg.lbl.Calcmethod.fr.text.changed=20110317061957 +simedtdlg.lbl.Calcmethod.fr.text.md5=pnQI+eq7JYPcQrH7OPSpfw\=\= +simedtdlg.lbl.Curlist..text.changed=20110317061957 +simedtdlg.lbl.Curlist..text.md5=0XvlG+Qhya/Vs+l7w/8hew\=\= +simedtdlg.lbl.Curlist.es.text.changed=20110317062041 +simedtdlg.lbl.Curlist.es.text.md5=PbkjFbkFJkkKQhHhw28kWg\=\= +simedtdlg.lbl.Curlist.fr.text.changed=20110317061957 +simedtdlg.lbl.Curlist.fr.text.md5=XpE1CqR92bnGZqtBpalJuw\=\= +simedtdlg.lbl.Direction..text.changed=20110317061957 +simedtdlg.lbl.Direction..text.md5=aYc3XU78wF35c9HESVNRTA\=\= +simedtdlg.lbl.Direction.es.text.changed=20110317062041 +simedtdlg.lbl.Direction.es.text.md5=6mz3oaIVyvY0DEOZGE/1Ag\=\= +simedtdlg.lbl.Direction.fr.text.changed=20110317061957 +simedtdlg.lbl.Direction.fr.text.md5=aYc3XU78wF35c9HESVNRTA\=\= +simedtdlg.lbl.ExtBarrowman..text.changed=20110317061957 +simedtdlg.lbl.ExtBarrowman..text.md5=CK1wRMOoMVQefUtvs2ju+A\=\= +simedtdlg.lbl.ExtBarrowman.es.text.changed=20110317062041 +simedtdlg.lbl.ExtBarrowman.es.text.md5=LRKmA/6EUQFLmlt5bk2XLw\=\= +simedtdlg.lbl.ExtBarrowman.fr.text.changed=20110317061957 +simedtdlg.lbl.ExtBarrowman.fr.text.md5=KhK32GyQzYv0UxzsBRAa1Q\=\= +simedtdlg.lbl.Latitude..text.changed=20110317061957 +simedtdlg.lbl.Latitude..text.md5=2zyXCUv7VKhqHQMGht5TjA\=\= +simedtdlg.lbl.Latitude.es.text.changed=20110317062041 +simedtdlg.lbl.Latitude.es.text.md5=ZFYR+rdF/i8WgrTe5pqaPA\=\= +simedtdlg.lbl.Latitude.fr.text.changed=20110317061957 +simedtdlg.lbl.Latitude.fr.text.md5=2zyXCUv7VKhqHQMGht5TjA\=\= +simedtdlg.lbl.Launchsite..text.changed=20110317061957 +simedtdlg.lbl.Launchsite..text.md5=vNjc+uGgxf8RvPMAmyrtvA\=\= +simedtdlg.lbl.Launchsite.es.text.changed=20110317062041 +simedtdlg.lbl.Launchsite.es.text.md5=Zat1D2OpyzP/bhXAsUn/8A\=\= +simedtdlg.lbl.Launchsite.fr.text.changed=20110317061957 +simedtdlg.lbl.Launchsite.fr.text.md5=Wggs51BmxQXw0sQmCPZKpg\=\= +simedtdlg.lbl.Length..text.changed=20110317061957 +simedtdlg.lbl.Length..text.md5=ZLM0xpJRtyw1DiXkYrVEKQ\=\= +simedtdlg.lbl.Length.es.text.changed=20110317062041 +simedtdlg.lbl.Length.es.text.md5=ycRTbjDcF+h0kJEC9Al45A\=\= +simedtdlg.lbl.Length.fr.text.changed=20110317061957 +simedtdlg.lbl.Length.fr.text.md5=+LpNY6MXcK9YQIbuQnHwPA\=\= +simedtdlg.lbl.Motorcfg..text.changed=20110317061957 +simedtdlg.lbl.Motorcfg..text.md5=hUqBQQLOQuV2isn4DoTERA\=\= +simedtdlg.lbl.Motorcfg.es.text.changed=20110317062041 +simedtdlg.lbl.Motorcfg.es.text.md5=LKwpTWlKtZl2ttOxTzBp9Q\=\= +simedtdlg.lbl.Motorcfg.fr.text.changed=20110317061957 +simedtdlg.lbl.Motorcfg.fr.text.md5=hU2++Dh8qBxAt7AQTW8GDQ\=\= +simedtdlg.lbl.Noflightdata..text.changed=20110317061957 +simedtdlg.lbl.Noflightdata..text.md5=9aX0GFcuszfI5XNRoSIU/w\=\= +simedtdlg.lbl.Noflightdata.es.text.changed=20110317062041 +simedtdlg.lbl.Noflightdata.es.text.md5=aRRNlIff+rHhbYg+5/eajA\=\= +simedtdlg.lbl.Noflightdata.fr.text.changed=20110317061957 +simedtdlg.lbl.Noflightdata.fr.text.md5=pFhnGKrIvcPTPYQaOdCI7A\=\= +simedtdlg.lbl.Pressure..text.changed=20110317061957 +simedtdlg.lbl.Pressure..text.md5=orG4EM2I0NrXoN8Pcd6JXw\=\= +simedtdlg.lbl.Pressure.es.text.changed=20110317062041 +simedtdlg.lbl.Pressure.es.text.md5=UGv+4uJMw0wmdX6NgJVgXw\=\= +simedtdlg.lbl.Pressure.fr.text.changed=20110317061957 +simedtdlg.lbl.Pressure.fr.text.md5=n/tutxCm6Qrt4Lo6x1rZDw\=\= +simedtdlg.lbl.Simmethod..text.changed=20110317061957 +simedtdlg.lbl.Simmethod..text.md5=QM/1brA5LQSDOtc6CTnbYg\=\= +simedtdlg.lbl.Simmethod.es.text.changed=20110317062041 +simedtdlg.lbl.Simmethod.es.text.md5=T+buK4F25556YiT/U6oSsA\=\= +simedtdlg.lbl.Simmethod.fr.text.changed=20110317061957 +simedtdlg.lbl.Simmethod.fr.text.md5=E0Cd7BsS27KVCydYK4FwSA\=\= +simedtdlg.lbl.Simname..text.changed=20110317061957 +simedtdlg.lbl.Simname..text.md5=+UlbWvXkyqfKupRpbBMTIw\=\= +simedtdlg.lbl.Simname.es.text.changed=20110317062041 +simedtdlg.lbl.Simname.es.text.md5=DpyUyVsM6I+VQI+54Nepag\=\= +simedtdlg.lbl.Simname.fr.text.changed=20110317061957 +simedtdlg.lbl.Simname.fr.text.md5=HQyM5r/VNffPqe51ynllFw\=\= +simedtdlg.lbl.Stddeviation..text.changed=20110317061957 +simedtdlg.lbl.Stddeviation..text.md5=CBz6WaRRSz8hl300RCvT4g\=\= +simedtdlg.lbl.Stddeviation.es.text.changed=20110317062041 +simedtdlg.lbl.Stddeviation.es.text.md5=UqIOfebQru0gZ5qyVtPKiw\=\= +simedtdlg.lbl.Stddeviation.fr.text.changed=20110317061957 +simedtdlg.lbl.Stddeviation.fr.text.md5=bEJYXZja1lwK5bqslVt/1g\=\= +simedtdlg.lbl.Temperature..text.changed=20110317061957 +simedtdlg.lbl.Temperature..text.md5=DPgM4apm5pttJwjQr4JyRw\=\= +simedtdlg.lbl.Temperature.es.text.changed=20110317062041 +simedtdlg.lbl.Temperature.es.text.md5=uXp9rtZp/mQyOVPxjR1KAA\=\= +simedtdlg.lbl.Temperature.fr.text.changed=20110317061957 +simedtdlg.lbl.Temperature.fr.text.md5=L5murG6QLq/coqbNQSD92A\=\= +simedtdlg.lbl.Timestep..text.changed=20110317061957 +simedtdlg.lbl.Timestep..text.md5=QP2aXoaGzviRyuAu5HT64g\=\= +simedtdlg.lbl.Timestep.es.text.changed=20110317062041 +simedtdlg.lbl.Timestep.es.text.md5=trR5AL9fJyjKjX2YWTCuzw\=\= +simedtdlg.lbl.Timestep.fr.text.changed=20110317061957 +simedtdlg.lbl.Timestep.fr.text.md5=9mAr9cQgeaE79G9rsQi9WQ\=\= +simedtdlg.lbl.Turbulenceintensity..text.changed=20110317061957 +simedtdlg.lbl.Turbulenceintensity..text.md5=5zHyHhr9yxsNTDMV0UOmzQ\=\= +simedtdlg.lbl.Turbulenceintensity.es.text.changed=20110317062041 +simedtdlg.lbl.Turbulenceintensity.es.text.md5=58kaRWXuQX7p19/CnbTDbw\=\= +simedtdlg.lbl.Turbulenceintensity.fr.text.changed=20110317061957 +simedtdlg.lbl.Turbulenceintensity.fr.text.md5=1DPterQ/anwWFe9Bl7KBDw\=\= +simedtdlg.lbl.Wind..text.changed=20110317061957 +simedtdlg.lbl.Wind..text.md5=UiWLntpAaJhDYHfyKi7RHw\=\= +simedtdlg.lbl.Wind.es.text.changed=20110317062041 +simedtdlg.lbl.Wind.es.text.md5=7lOofNvBQh/ZaWAY9gvh0Q\=\= +simedtdlg.lbl.Wind.fr.text.changed=20110317061957 +simedtdlg.lbl.Wind.fr.text.md5=0u3MJDkYQ2E1bO8YuXi1zQ\=\= +simedtdlg.lbl.runsimfirst..text.changed=20110317061957 +simedtdlg.lbl.runsimfirst..text.md5=I/g1Xjj6vmE/ElZ2ZUJ02g\=\= +simedtdlg.lbl.runsimfirst.es.text.changed=20110317062041 +simedtdlg.lbl.runsimfirst.es.text.md5=lz5voX1EUw8DxGE3xbuB8A\=\= +simedtdlg.lbl.runsimfirst.fr.text.changed=20110317061957 +simedtdlg.lbl.runsimfirst.fr.text.md5=3ki89vBXyBPINkBe61y89A\=\= +simedtdlg.lbl.ttip.Altitude..text.changed=20110317061957 +simedtdlg.lbl.ttip.Altitude..text.md5=1t9veO/lXye/U5Y9gwXmTg\=\= +simedtdlg.lbl.ttip.Altitude.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Altitude.es.text.md5=fuekGbI9qY+Gx1MxerkbiQ\=\= +simedtdlg.lbl.ttip.Altitude.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Altitude.fr.text.md5=4o5cxorJOmqQAL9Shz6t0Q\=\= +simedtdlg.lbl.ttip.Angle..text.changed=20110317061957 +simedtdlg.lbl.ttip.Angle..text.md5=LuBdLGjhE2PexHQc1f2jIg\=\= +simedtdlg.lbl.ttip.Angle.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Angle.es.text.md5=PM8sDYrQVQJFqWKZxfP49A\=\= +simedtdlg.lbl.ttip.Angle.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Angle.fr.text.md5=M7bkB5pUmrbqvZWsiQW86Q\=\= +simedtdlg.lbl.ttip.Averwindspeed..text.changed=20110317061957 +simedtdlg.lbl.ttip.Averwindspeed..text.md5=mxm9rGc18MuudYJQqQeuLA\=\= +simedtdlg.lbl.ttip.Averwindspeed.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Averwindspeed.es.text.md5=yedieDQANvWS8DBlitGHww\=\= +simedtdlg.lbl.ttip.Averwindspeed.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Averwindspeed.fr.text.md5=edEEOXgH8Jq45hHowiyBxg\=\= +simedtdlg.lbl.ttip.Calcmethod..text.changed=20110317061957 +simedtdlg.lbl.ttip.Calcmethod..text.md5=JeDhOc3fTjXkBdTSTmmHRQ\=\= +simedtdlg.lbl.ttip.Calcmethod.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Calcmethod.es.text.md5=ZvoSLKbWcD+txhsum44p9w\=\= +simedtdlg.lbl.ttip.Calcmethod.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Calcmethod.fr.text.md5=mJhE9c/1xB2RTib6gOeBnA\=\= +simedtdlg.lbl.ttip.Direction1..text.changed=20110317061957 +simedtdlg.lbl.ttip.Direction1..text.md5=SdoWG76cIrdGWdv4Pe06jw\=\= +simedtdlg.lbl.ttip.Direction1.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Direction1.es.text.md5=SdoWG76cIrdGWdv4Pe06jw\=\= +simedtdlg.lbl.ttip.Direction1.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Direction1.fr.text.md5=DnY+t56ClYWKHsWHlhh06Q\=\= +simedtdlg.lbl.ttip.Direction2..text.changed=20110317061957 +simedtdlg.lbl.ttip.Direction2..text.md5=1Cf5tDZHgJKNW9OL5BEL3Q\=\= +simedtdlg.lbl.ttip.Direction2.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Direction2.es.text.md5=W/Gdwam3rzW1VJBF26g+HA\=\= +simedtdlg.lbl.ttip.Direction2.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Direction2.fr.text.md5=nFJlHFjk6d7n+TOK9kEhQg\=\= +simedtdlg.lbl.ttip.Direction3..text.changed=20110317061957 +simedtdlg.lbl.ttip.Direction3..text.md5=aWEFivuDNhnMb7IOLAAoEg\=\= +simedtdlg.lbl.ttip.Direction3.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Direction3.es.text.md5=TPF5Uhi96BS+nBfEhzLv8Q\=\= +simedtdlg.lbl.ttip.Direction3.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Direction3.fr.text.md5=xObBvmli/AfS1uyTvYR1dw\=\= +simedtdlg.lbl.ttip.Latitude..text.changed=20110317061957 +simedtdlg.lbl.ttip.Latitude..text.md5=8gml0q2Wc31vOrNAxng3JA\=\= +simedtdlg.lbl.ttip.Latitude.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Latitude.es.text.md5=OhvJM/vPfpABz881sqls2w\=\= +simedtdlg.lbl.ttip.Latitude.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Latitude.fr.text.md5=oBnpuWiOYFv3PqUQ0h8j2w\=\= +simedtdlg.lbl.ttip.Length..text.changed=20110317061957 +simedtdlg.lbl.ttip.Length..text.md5=xYGgm8YcHNMtfKPueX0Esw\=\= +simedtdlg.lbl.ttip.Length.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Length.es.text.md5=6SJjbxC/waHn2BRDDBe2bg\=\= +simedtdlg.lbl.ttip.Length.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Length.fr.text.md5=H2LQNdOR36hpXTkf5M3fxQ\=\= +simedtdlg.lbl.ttip.Motorcfg..text.changed=20110317061957 +simedtdlg.lbl.ttip.Motorcfg..text.md5=HXPrHbRbP6GQbmmH4+x9Ag\=\= +simedtdlg.lbl.ttip.Motorcfg.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Motorcfg.es.text.md5=Ev8cbjgxLx1B7T9UfjjyxA\=\= +simedtdlg.lbl.ttip.Motorcfg.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Motorcfg.fr.text.md5=dtElUKHY3BtTiRPIBzJ+sg\=\= +simedtdlg.lbl.ttip.Pressure..text.changed=20110317061957 +simedtdlg.lbl.ttip.Pressure..text.md5=AbSD63yY37PAcElFwnG8UA\=\= +simedtdlg.lbl.ttip.Pressure.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Pressure.es.text.md5=f7UMzkbWkZxseNncIPglGQ\=\= +simedtdlg.lbl.ttip.Pressure.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Pressure.fr.text.md5=fvF5HHZ/Kpfk69SWeXhqWA\=\= +simedtdlg.lbl.ttip.Simmethod1..text.changed=20110317061957 +simedtdlg.lbl.ttip.Simmethod1..text.md5=IrjolcvSx6eRtRde9PMOSw\=\= +simedtdlg.lbl.ttip.Simmethod1.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Simmethod1.es.text.md5=zNMyq308V2/Dn/feHy9TAQ\=\= +simedtdlg.lbl.ttip.Simmethod1.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Simmethod1.fr.text.md5=sRqV5wBYDK9xh2h0MFpRwg\=\= +simedtdlg.lbl.ttip.Simmethod2..text.changed=20110317061957 +simedtdlg.lbl.ttip.Simmethod2..text.md5=l1ghuLBNcxPo/MyDZN9irA\=\= +simedtdlg.lbl.ttip.Simmethod2.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Simmethod2.es.text.md5=Z2dAYt4iM6A08l6fwNXYlQ\=\= +simedtdlg.lbl.ttip.Simmethod2.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Simmethod2.fr.text.md5=l1ghuLBNcxPo/MyDZN9irA\=\= +simedtdlg.lbl.ttip.Stddeviation..text.changed=20110317061957 +simedtdlg.lbl.ttip.Stddeviation..text.md5=tzcoIVGX1XvdLeEavwwDxw\=\= +simedtdlg.lbl.ttip.Stddeviation.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Stddeviation.es.text.md5=vU124vF2Wc6YiLLz4bucPg\=\= +simedtdlg.lbl.ttip.Stddeviation.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Stddeviation.fr.text.md5=8qTdNH8ksKVCacLN9cL+oA\=\= +simedtdlg.lbl.ttip.Temperature..text.changed=20110317061957 +simedtdlg.lbl.ttip.Temperature..text.md5=RraujctllOTdJVfJ3o6NdA\=\= +simedtdlg.lbl.ttip.Temperature.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Temperature.es.text.md5=pvLbWd3Hu2YadWWgQyIqtQ\=\= +simedtdlg.lbl.ttip.Temperature.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Temperature.fr.text.md5=wng+aTqrK7ySpu96jVjcKw\=\= +simedtdlg.lbl.ttip.Timestep1..text.changed=20110317061957 +simedtdlg.lbl.ttip.Timestep1..text.md5=sjNhF2tFhaKArZBnupS9LA\=\= +simedtdlg.lbl.ttip.Timestep1.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Timestep1.es.text.md5=/+XSX7JqkG1vWHsf66mF5w\=\= +simedtdlg.lbl.ttip.Timestep1.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Timestep1.fr.text.md5=nmuivJUkO6WKCeuAyFXimg\=\= +simedtdlg.lbl.ttip.Timestep2..text.changed=20110317061957 +simedtdlg.lbl.ttip.Timestep2..text.md5=LqNgCewGLN9lKvdrJ8JtXg\=\= +simedtdlg.lbl.ttip.Timestep2.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Timestep2.es.text.md5=ECFZ3JM7nSsB4nvuk2sMaA\=\= +simedtdlg.lbl.ttip.Timestep2.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Timestep2.fr.text.md5=LqNgCewGLN9lKvdrJ8JtXg\=\= +simedtdlg.lbl.ttip.Turbulenceintensity1..text.changed=20110317061957 +simedtdlg.lbl.ttip.Turbulenceintensity1..text.md5=daXCs1eo6tjkG59VAuQvXQ\=\= +simedtdlg.lbl.ttip.Turbulenceintensity1.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Turbulenceintensity1.es.text.md5=oCieK1YAtvXneP550bWcOQ\=\= +simedtdlg.lbl.ttip.Turbulenceintensity1.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Turbulenceintensity1.fr.text.md5=GSEpg/NruzySRCWH6+7Y6Q\=\= +simedtdlg.lbl.ttip.Turbulenceintensity2..text.changed=20110317061957 +simedtdlg.lbl.ttip.Turbulenceintensity2..text.md5=Qv5afqXGKZ5++8dxWPgcXg\=\= +simedtdlg.lbl.ttip.Turbulenceintensity2.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Turbulenceintensity2.es.text.md5=v0n4lmIURh205LAaO0WOXQ\=\= +simedtdlg.lbl.ttip.Turbulenceintensity2.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Turbulenceintensity2.fr.text.md5=O8thzcjurxS55zQ7F/j0Nw\=\= +simedtdlg.lbl.ttip.Turbulenceintensity3..text.changed=20110317061957 +simedtdlg.lbl.ttip.Turbulenceintensity3..text.md5=AbbiA0S2iDXF7R3e3yDVMQ\=\= +simedtdlg.lbl.ttip.Turbulenceintensity3.es.text.changed=20110317062041 +simedtdlg.lbl.ttip.Turbulenceintensity3.es.text.md5=DMF1ucDxtqgxw5niaXcmYQ\=\= +simedtdlg.lbl.ttip.Turbulenceintensity3.fr.text.changed=20110317061957 +simedtdlg.lbl.ttip.Turbulenceintensity3.fr.text.md5=yXWc62SHoL0nIMqY8mItJA\=\= +simedtdlg.tab.Exportdata..text.changed=20110317061957 +simedtdlg.tab.Exportdata..text.md5=XiBkZYDaWE12Q12gDW+s5A\=\= +simedtdlg.tab.Exportdata.es.text.changed=20110317062041 +simedtdlg.tab.Exportdata.es.text.md5=PtNQUuT/0JmtfrtKHegAJw\=\= +simedtdlg.tab.Exportdata.fr.text.changed=20110317061957 +simedtdlg.tab.Exportdata.fr.text.md5=101g/zaYkc6oTRv3QSr2yw\=\= +simedtdlg.tab.Launchcond..text.changed=20110317061957 +simedtdlg.tab.Launchcond..text.md5=irWIAASLMmvjb4PrKezjzg\=\= +simedtdlg.tab.Launchcond.es.text.changed=20110317062041 +simedtdlg.tab.Launchcond.es.text.md5=uJjmrmO5J1nZ0l1nl5PuzA\=\= +simedtdlg.tab.Launchcond.fr.text.changed=20110317061957 +simedtdlg.tab.Launchcond.fr.text.md5=6tyRRpcoaUY5kbws+KkYng\=\= +simedtdlg.tab.Plotdata..text.changed=20110317061957 +simedtdlg.tab.Plotdata..text.md5=XTZPLGugzYkzvwbqixKy4Q\=\= +simedtdlg.tab.Plotdata.es.text.changed=20110317062041 +simedtdlg.tab.Plotdata.es.text.md5=MXwCojDyf9C4DX0fdZa03g\=\= +simedtdlg.tab.Plotdata.fr.text.changed=20110317061957 +simedtdlg.tab.Plotdata.fr.text.md5=YD3Aa3a9l47QKguonSgD3g\=\= +simedtdlg.tab.Simopt..text.changed=20110317061957 +simedtdlg.tab.Simopt..text.md5=JXJg7M4wZ9tYIB539YnhYA\=\= +simedtdlg.tab.Simopt.es.text.changed=20110317062041 +simedtdlg.tab.Simopt.es.text.md5=tJQz7h7gBmy/9l9+zlTS6Q\=\= +simedtdlg.tab.Simopt.fr.text.changed=20110317061957 +simedtdlg.tab.Simopt.fr.text.md5=zdwMVKJdXqAuybSud8Vtmg\=\= +simedtdlg.title.Editsim..text.changed=20110317061957 +simedtdlg.title.Editsim..text.md5=rPhGyBbyH9FNF9/6qufS6Q\=\= +simedtdlg.title.Editsim.es.text.changed=20110317062041 +simedtdlg.title.Editsim.es.text.md5=he5js47uz8cwnb8i4bOplQ\=\= +simedtdlg.title.Editsim.fr.text.changed=20110317061957 +simedtdlg.title.Editsim.fr.text.md5=2GJ3pbhnSWh8tY57ilcXIw\=\= +simedtdlg.txt.longA1..text.changed=20110317061957 +simedtdlg.txt.longA1..text.md5=PGEwD1Pp1DibUvj3AXfM2A\=\= +simedtdlg.txt.longA1.es.text.changed=20110317062041 +simedtdlg.txt.longA1.es.text.md5=7XBdfBPI0xw5l84aF0/jKQ\=\= +simedtdlg.txt.longA1.fr.text.changed=20110317061957 +simedtdlg.txt.longA1.fr.text.md5=1d8ZjA72CgNL4r7EYFPPJA\=\= +simedtdlg.txt.longA2..text.changed=20110317061957 +simedtdlg.txt.longA2..text.md5=U8wuqE70P2H4N3NI0T7BVQ\=\= +simedtdlg.txt.longA2.es.text.changed=20110317062041 +simedtdlg.txt.longA2.es.text.md5=2zK9LtnWNjlWskvmeu+LgQ\=\= +simedtdlg.txt.longA2.fr.text.changed=20110317061957 +simedtdlg.txt.longA2.fr.text.md5=z0u+Uuw7L6hdGa1IIk2Obw\=\= +simpanel.but.deletesimulations..text.changed=20110317061957 +simpanel.but.deletesimulations..text.md5=E2ccIhH6w7qOFhOsd4212A\=\= +simpanel.but.deletesimulations.es.text.changed=20110317062041 +simpanel.but.deletesimulations.es.text.md5=wuqLQ5evaBlsocAciNlqiQ\=\= +simpanel.but.deletesimulations.fr.text.changed=20110317061957 +simpanel.but.deletesimulations.fr.text.md5=DAv7od/Vxf0J1c/DIufXOA\=\= +simpanel.but.editsimulation..text.changed=20110317061957 +simpanel.but.editsimulation..text.md5=rPhGyBbyH9FNF9/6qufS6Q\=\= +simpanel.but.editsimulation.es.text.changed=20110317062041 +simpanel.but.editsimulation.es.text.md5=/DOYHZpz52v3uUGY/VilTQ\=\= +simpanel.but.editsimulation.fr.text.changed=20110317061957 +simpanel.but.editsimulation.fr.text.md5=2GJ3pbhnSWh8tY57ilcXIw\=\= +simpanel.but.newsimulation..text.changed=20110317061957 +simpanel.but.newsimulation..text.md5=ctc+CkRmqF8sATWfw90ABA\=\= +simpanel.but.newsimulation.es.text.changed=20110317062041 +simpanel.but.newsimulation.es.text.md5=51xagHSl8PtkRipZCcLRUQ\=\= +simpanel.but.newsimulation.fr.text.changed=20110317061957 +simpanel.but.newsimulation.fr.text.md5=B4pGMQXghPIMD0abrH2GnQ\=\= +simpanel.but.plotexport..text.changed=20110317061957 +simpanel.but.plotexport..text.md5=0BmFP3PBQIfU3MkcHgoGDg\=\= +simpanel.but.plotexport.es.text.changed=20110317062041 +simpanel.but.plotexport.es.text.md5=aR5iP+J13L4DCfktLRVN/Q\=\= +simpanel.but.plotexport.fr.text.changed=20110317061957 +simpanel.but.plotexport.fr.text.md5=g2zMTOErCFb1ltbSo2QxPw\=\= +simpanel.but.runsimulations..text.changed=20110317061957 +simpanel.but.runsimulations..text.md5=m95MqFZtpNCNlSSaMaDS/w\=\= +simpanel.but.runsimulations.es.text.changed=20110317062041 +simpanel.but.runsimulations.es.text.md5=tQ11Ur0YZGYGFdN+kdKF9Q\=\= +simpanel.but.runsimulations.fr.text.changed=20110317061957 +simpanel.but.runsimulations.fr.text.md5=2srBEDIV2CNbBLU+a6dJHg\=\= +simpanel.but.ttip.deletesim..text.changed=20110317061957 +simpanel.but.ttip.deletesim..text.md5=zkSMlYw/0X62OPwb2m/sRQ\=\= +simpanel.but.ttip.deletesim.es.text.changed=20110317062041 +simpanel.but.ttip.deletesim.es.text.md5=WsFOH2h277a9Okrf5KqT4A\=\= +simpanel.but.ttip.deletesim.fr.text.changed=20110317061957 +simpanel.but.ttip.deletesim.fr.text.md5=Yz7xadEaqNHyBfrGsh2DGQ\=\= +simpanel.but.ttip.editsim..text.changed=20110317061957 +simpanel.but.ttip.editsim..text.md5=JIpzmtffG8qLPSIq19x9Kg\=\= +simpanel.but.ttip.editsim.es.text.changed=20110317062041 +simpanel.but.ttip.editsim.es.text.md5=QU6BSVJTBkJViKAfNtq1aA\=\= +simpanel.but.ttip.editsim.fr.text.changed=20110317061957 +simpanel.but.ttip.editsim.fr.text.md5=hhZTpyTr67B3G+Km+rlzRw\=\= +simpanel.but.ttip.newsimulation..text.changed=20110317061957 +simpanel.but.ttip.newsimulation..text.md5=KJvY+wmPi70jlcYHXVlzIg\=\= +simpanel.but.ttip.newsimulation.es.text.changed=20110317062041 +simpanel.but.ttip.newsimulation.es.text.md5=KmMoGsi6+MClKRJmrCk3Cw\=\= +simpanel.but.ttip.newsimulation.fr.text.changed=20110317061957 +simpanel.but.ttip.newsimulation.fr.text.md5=FTrdb2+AgLHmgylJ4P7rxw\=\= +simpanel.but.ttip.runsimu..text.changed=20110317061957 +simpanel.but.ttip.runsimu..text.md5=1SNNUlCogDeoVuyvPw7ttg\=\= +simpanel.but.ttip.runsimu.es.text.changed=20110317062041 +simpanel.but.ttip.runsimu.es.text.md5=bo4qFg7HD94rrnZU3gh/fw\=\= +simpanel.but.ttip.runsimu.fr.text.changed=20110317061957 +simpanel.but.ttip.runsimu.fr.text.md5=PI4EMxgjVoJlClcfdThPUg\=\= +simpanel.checkbox.donotask..text.changed=20110317061957 +simpanel.checkbox.donotask..text.md5=xMeqCOFI2ELVUxa8B2WjDA\=\= +simpanel.checkbox.donotask.es.text.changed=20110317062041 +simpanel.checkbox.donotask.es.text.md5=bP1T4Pbn3tIsgyg5zbh5Hw\=\= +simpanel.checkbox.donotask.fr.text.changed=20110317061957 +simpanel.checkbox.donotask.fr.text.md5=V49H2SSvKhMBpOVtwMoaIA\=\= +simpanel.col.Apogee..text.changed=20110317061957 +simpanel.col.Apogee..text.md5=QL6gVpnPUZKBPZU18+Unyg\=\= +simpanel.col.Apogee.es.text.changed=20110317062041 +simpanel.col.Apogee.es.text.md5=+Tu3UZc1z0OfpeO/nohCyA\=\= +simpanel.col.Apogee.fr.text.changed=20110317061957 +simpanel.col.Apogee.fr.text.md5=+AS6Lmac9yoej6GMJZ2KZA\=\= +simpanel.col.Flighttime..text.changed=20110317061957 +simpanel.col.Flighttime..text.md5=ZpvARs0OVYcWCN74zRBz2g\=\= +simpanel.col.Flighttime.es.text.changed=20110317062041 +simpanel.col.Flighttime.es.text.md5=MlESxYpJD8vXowBF0m8PIQ\=\= +simpanel.col.Flighttime.fr.text.changed=20110317061957 +simpanel.col.Flighttime.fr.text.md5=nM5gMTT5mrjDP3Jd2Kf/Lg\=\= +simpanel.col.Groundhitvelocity..text.changed=20110317061957 +simpanel.col.Groundhitvelocity..text.md5=J2m4MqfXN/ePc6F9K1kejg\=\= +simpanel.col.Groundhitvelocity.es.text.changed=20110317062041 +simpanel.col.Groundhitvelocity.es.text.md5=J2m4MqfXN/ePc6F9K1kejg\=\= +simpanel.col.Groundhitvelocity.fr.text.changed=20110317061957 +simpanel.col.Groundhitvelocity.fr.text.md5=q4vpZlkk7WcoSxo2Fqj+zQ\=\= +simpanel.col.Maxacceleration..text.changed=20110317061957 +simpanel.col.Maxacceleration..text.md5=2Gf0gCV1HqGUyjhgEHQBow\=\= +simpanel.col.Maxacceleration.es.text.changed=20110317062041 +simpanel.col.Maxacceleration.es.text.md5=rPOe5QhK41Xj0xutD8AUBw\=\= +simpanel.col.Maxacceleration.fr.text.changed=20110317061957 +simpanel.col.Maxacceleration.fr.text.md5=CLucL4pm4PYi8N1fYOyPlA\=\= +simpanel.col.Maxvelocity..text.changed=20110317061957 +simpanel.col.Maxvelocity..text.md5=1EsSTGoM/aVRY9TxY4jp5A\=\= +simpanel.col.Maxvelocity.es.text.changed=20110317062041 +simpanel.col.Maxvelocity.es.text.md5=hSgP0YX/FFcv1hBZe2K67A\=\= +simpanel.col.Maxvelocity.fr.text.changed=20110317061957 +simpanel.col.Maxvelocity.fr.text.md5=bcjaM1jn1SZZTVlLnAv8tw\=\= +simpanel.col.Motors..text.changed=20110317061957 +simpanel.col.Motors..text.md5=Kz7jMFS+z8votTtGrbVkCA\=\= +simpanel.col.Motors.es.text.changed=20110317062041 +simpanel.col.Motors.es.text.md5=u+FtKfkep6kORQsFrHvQew\=\= +simpanel.col.Motors.fr.text.changed=20110317061957 +simpanel.col.Motors.fr.text.md5=jpNwdavDIl8hqV2r84smeA\=\= +simpanel.col.Name..text.changed=20110317061957 +simpanel.col.Name..text.md5=Se4whzSOjUTh/toZF0Q5hw\=\= +simpanel.col.Name.es.text.changed=20110317062041 +simpanel.col.Name.es.text.md5=R3e7qqCuvhBGBrd5R9DiLQ\=\= +simpanel.col.Name.fr.text.changed=20110317061957 +simpanel.col.Name.fr.text.md5=1HALaXpU+9Q6GmE9MmlOfw\=\= +simpanel.col.Timetoapogee..text.changed=20110317061957 +simpanel.col.Timetoapogee..text.md5=mtYrz6F711No33VkFnBQZw\=\= +simpanel.col.Timetoapogee.es.text.changed=20110317062041 +simpanel.col.Timetoapogee.es.text.md5=QbiyC5KDrFJIJe+TTAMPww\=\= +simpanel.col.Timetoapogee.fr.text.changed=20110317061957 +simpanel.col.Timetoapogee.fr.text.md5=6zliJqHCOJNr/gEX7niwqw\=\= +simpanel.dlg.lbl.DeleteSim1..text.changed=20110317061957 +simpanel.dlg.lbl.DeleteSim1..text.md5=DNJ2o5oEGUaGa7yIHcFAiw\=\= +simpanel.dlg.lbl.DeleteSim1.es.text.changed=20110317062041 +simpanel.dlg.lbl.DeleteSim1.es.text.md5=JJiDlPhnaQrc0nPucCJvBw\=\= +simpanel.dlg.lbl.DeleteSim1.fr.text.changed=20110317061957 +simpanel.dlg.lbl.DeleteSim1.fr.text.md5=LS+L7uekpUZWjFf5fcS8pg\=\= +simpanel.dlg.lbl.DeleteSim2..text.changed=20110317061957 +simpanel.dlg.lbl.DeleteSim2..text.md5=82qtdSO4rsRCe24wWOe1UQ\=\= +simpanel.dlg.lbl.DeleteSim2.es.text.changed=20110317062041 +simpanel.dlg.lbl.DeleteSim2.es.text.md5=JJcmRbw0W63auwokuAIrBg\=\= +simpanel.dlg.lbl.DeleteSim2.fr.text.changed=20110317061957 +simpanel.dlg.lbl.DeleteSim2.fr.text.md5=dMTK4JEtD9GD3Y7btp7rVg\=\= +simpanel.dlg.lbl.DeleteSim3..text.changed=20110317061957 +simpanel.dlg.lbl.DeleteSim3..text.md5=E2ccIhH6w7qOFhOsd4212A\=\= +simpanel.dlg.lbl.DeleteSim3.es.text.changed=20110317062041 +simpanel.dlg.lbl.DeleteSim3.es.text.md5=wuqLQ5evaBlsocAciNlqiQ\=\= +simpanel.dlg.lbl.DeleteSim3.fr.text.changed=20110317061957 +simpanel.dlg.lbl.DeleteSim3.fr.text.md5=DAv7od/Vxf0J1c/DIufXOA\=\= +simpanel.lbl.defpref..text.changed=20110317061957 +simpanel.lbl.defpref..text.md5=cYQgfnoeRCK2h69YzRSoxw\=\= +simpanel.lbl.defpref.es.text.changed=20110317062041 +simpanel.lbl.defpref.es.text.md5=aowOYzuw8jkCMXYJstMdIA\=\= +simpanel.lbl.defpref.fr.text.changed=20110317061957 +simpanel.lbl.defpref.fr.text.md5=/GBWC2EHRR28/kXEhymIgg\=\= +simplotpanel.AUTO_NAME..text.changed=20110317061957 +simplotpanel.AUTO_NAME..text.md5=BrkoHjltsAIBC94d5XJi6w\=\= +simplotpanel.AUTO_NAME.es.text.changed=20110317062041 +simplotpanel.AUTO_NAME.es.text.md5=BrkoHjltsAIBC94d5XJi6w\=\= +simplotpanel.AUTO_NAME.fr.text.changed=20110317061957 +simplotpanel.AUTO_NAME.fr.text.md5=BrkoHjltsAIBC94d5XJi6w\=\= +simplotpanel.CUSTOM..text.changed=20110317061957 +simplotpanel.CUSTOM..text.md5=kFicR/BuuXHVSFkfI8KFrw\=\= +simplotpanel.CUSTOM.es.text.changed=20110317062041 +simplotpanel.CUSTOM.es.text.md5=kFicR/BuuXHVSFkfI8KFrw\=\= +simplotpanel.CUSTOM.fr.text.changed=20110317061957 +simplotpanel.CUSTOM.fr.text.md5=3Id+tukKcqfg99CxlFASqw\=\= +simplotpanel.Desc..text.changed=20110317061957 +simplotpanel.Desc..text.md5=0ikxxUHRRh1qvRDnn7Dz+Q\=\= +simplotpanel.Desc.es.text.changed=20110317062041 +simplotpanel.Desc.es.text.md5=gGp8gZ7wyQMssreUT2nh3g\=\= +simplotpanel.Desc.fr.text.changed=20110317061957 +simplotpanel.Desc.fr.text.md5=uSQbpG7UkFdEgBR4nFsZtA\=\= +simplotpanel.LEFT_NAME..text.changed=20110317061957 +simplotpanel.LEFT_NAME..text.md5=lF1eIzz31iQPa3g7NqN0/w\=\= +simplotpanel.LEFT_NAME.es.text.changed=20110317062041 +simplotpanel.LEFT_NAME.es.text.md5=lF1eIzz31iQPa3g7NqN0/w\=\= +simplotpanel.LEFT_NAME.fr.text.changed=20110317061957 +simplotpanel.LEFT_NAME.fr.text.md5=lu3JSK24I9UkGEyR6dlwkQ\=\= +simplotpanel.OptionPane.lbl1..text.changed=20110317061957 +simplotpanel.OptionPane.lbl1..text.md5=jT4aRLzCSe+JHKoOckQlcA\=\= +simplotpanel.OptionPane.lbl1.es.text.changed=20110317062041 +simplotpanel.OptionPane.lbl1.es.text.md5=yO9NwgqL6KtUBMcYJ3hXfQ\=\= +simplotpanel.OptionPane.lbl1.fr.text.changed=20110317061957 +simplotpanel.OptionPane.lbl1.fr.text.md5=Ao+RUp62+5JAkeV4+W+tBA\=\= +simplotpanel.OptionPane.lbl2..text.changed=20110317061957 +simplotpanel.OptionPane.lbl2..text.md5=R4jGZJNSnlSLtc4sx7QjrQ\=\= +simplotpanel.OptionPane.lbl2.es.text.changed=20110317062041 +simplotpanel.OptionPane.lbl2.es.text.md5=YJv2HLwKAo6fQgypWj76Yg\=\= +simplotpanel.OptionPane.lbl2.fr.text.changed=20110317061957 +simplotpanel.OptionPane.lbl2.fr.text.md5=KsVhySzMsfP4wnKYhfilxQ\=\= +simplotpanel.RIGHT_NAME..text.changed=20110317061957 +simplotpanel.RIGHT_NAME..text.md5=krCcfEjFIMPFXkl4ddpDfA\=\= +simplotpanel.RIGHT_NAME.es.text.changed=20110317062041 +simplotpanel.RIGHT_NAME.es.text.md5=krCcfEjFIMPFXkl4ddpDfA\=\= +simplotpanel.RIGHT_NAME.fr.text.changed=20110317061957 +simplotpanel.RIGHT_NAME.fr.text.md5=vRg7dq1XHZUnBZDLefEO/Q\=\= +simplotpanel.but.All..text.changed=20110317061957 +simplotpanel.but.All..text.md5=sclMovvD54/DAGnI0PAWgA\=\= +simplotpanel.but.All.es.text.changed=20110317062041 +simplotpanel.but.All.es.text.md5=MmMMqRPQHE/ucbvo7yjt6g\=\= +simplotpanel.but.All.fr.text.changed=20110317061957 +simplotpanel.but.All.fr.text.md5=PdFuE5Jt3cdNd/CYtdHMiQ\=\= +simplotpanel.but.NewYaxisplottype..text.changed=20110317061957 +simplotpanel.but.NewYaxisplottype..text.md5=kf4ROjXkNKywG1atmMwwcA\=\= +simplotpanel.but.NewYaxisplottype.es.text.changed=20110317062041 +simplotpanel.but.NewYaxisplottype.es.text.md5=67XS22FCXSFtZjeWHwczzw\=\= +simplotpanel.but.NewYaxisplottype.fr.text.changed=20110317061957 +simplotpanel.but.NewYaxisplottype.fr.text.md5=FPb4Q2dBF35MMYNZGRIFYg\=\= +simplotpanel.but.None..text.changed=20110317061957 +simplotpanel.but.None..text.md5=at+X+DrPZFPUpqSxBw83VA\=\= +simplotpanel.but.None.es.text.changed=20110317062041 +simplotpanel.but.None.es.text.md5=Nf5kEOlwQ4ZBbP354K6mnQ\=\= +simplotpanel.but.None.fr.text.changed=20110317061957 +simplotpanel.but.None.fr.text.md5=56vBja7oyq1Y8fL6i5EgTg\=\= +simplotpanel.but.Plotflight..text.changed=20110317061957 +simplotpanel.but.Plotflight..text.md5=woEHOjBkZsv+iAie65esxA\=\= +simplotpanel.but.Plotflight.es.text.changed=20110317062041 +simplotpanel.but.Plotflight.es.text.md5=T+ar56E3y1RR71q7NE3h/Q\=\= +simplotpanel.but.Plotflight.fr.text.changed=20110317061957 +simplotpanel.but.Plotflight.fr.text.md5=a1CGSNf8H1m+nE8XkI3Ahg\=\= +simplotpanel.but.ttip.Removethisplot..text.changed=20110317061957 +simplotpanel.but.ttip.Removethisplot..text.md5=HHkN25V0jRevbAclPEhMrg\=\= +simplotpanel.but.ttip.Removethisplot.es.text.changed=20110317062041 +simplotpanel.but.ttip.Removethisplot.es.text.md5=VxvwIN66jTNO9mklpnfEuA\=\= +simplotpanel.but.ttip.Removethisplot.fr.text.changed=20110317061957 +simplotpanel.but.ttip.Removethisplot.fr.text.md5=WUWW3LaQTN43FMXuiDnhyg\=\= +simplotpanel.lbl.Axis..text.changed=20110317061957 +simplotpanel.lbl.Axis..text.md5=HJg5GUyMUD0EB+S4reTo7Q\=\= +simplotpanel.lbl.Axis.es.text.changed=20110317062041 +simplotpanel.lbl.Axis.es.text.md5=C/W/H0VgwZY89oRs9wW/0A\=\= +simplotpanel.lbl.Axis.fr.text.changed=20110317061957 +simplotpanel.lbl.Axis.fr.text.md5=SkMuRibEe2vF/woB0QZLew\=\= +simplotpanel.lbl.Flightevents..text.changed=20110317061957 +simplotpanel.lbl.Flightevents..text.md5=vBX5ufHJyCExqtWr7FknJA\=\= +simplotpanel.lbl.Flightevents.es.text.changed=20110317062041 +simplotpanel.lbl.Flightevents.es.text.md5=ziprLgKqb+LF6mdqk1XQbw\=\= +simplotpanel.lbl.Flightevents.fr.text.changed=20110317061957 +simplotpanel.lbl.Flightevents.fr.text.md5=UnRKvl4A5FBKDb63czGLCg\=\= +simplotpanel.lbl.Presetplotconf..text.changed=20110317061957 +simplotpanel.lbl.Presetplotconf..text.md5=82hXH5JjMrLKBuYKByp98Q\=\= +simplotpanel.lbl.Presetplotconf.es.text.changed=20110317062041 +simplotpanel.lbl.Presetplotconf.es.text.md5=FlDckDtt5y6jlO/WnyPzyg\=\= +simplotpanel.lbl.Presetplotconf.fr.text.changed=20110317061957 +simplotpanel.lbl.Presetplotconf.fr.text.md5=Z0TZpAlUuS9eXYMcgrAEeA\=\= +simplotpanel.lbl.Unit..text.changed=20110317061957 +simplotpanel.lbl.Unit..text.md5=n5A5gOdvQs9AGnRgw98Lyg\=\= +simplotpanel.lbl.Unit.es.text.changed=20110317062041 +simplotpanel.lbl.Unit.es.text.md5=H5ItOdoQlHBhnqw4atiiXg\=\= +simplotpanel.lbl.Unit.fr.text.changed=20110317061957 +simplotpanel.lbl.Unit.fr.text.md5=iWbN5CD+f63gN+GKJUxKDw\=\= +simplotpanel.lbl.Xaxistype..text.changed=20110317061957 +simplotpanel.lbl.Xaxistype..text.md5=yM5y+uBNeOH9SZ+ehWRJrA\=\= +simplotpanel.lbl.Xaxistype.es.text.changed=20110317062041 +simplotpanel.lbl.Xaxistype.es.text.md5=fCclLM7nHcvtFm1Zt4LhTw\=\= +simplotpanel.lbl.Xaxistype.fr.text.changed=20110317061957 +simplotpanel.lbl.Xaxistype.fr.text.md5=BV/uWr1VCQpTxA6nX61a1g\=\= +simplotpanel.lbl.Yaxistypes..text.changed=20110317061957 +simplotpanel.lbl.Yaxistypes..text.md5=MI+W8ANOfoGVBShMcs4kxg\=\= +simplotpanel.lbl.Yaxistypes.es.text.changed=20110317062041 +simplotpanel.lbl.Yaxistypes.es.text.md5=KCtREs5yRySortrWW4XHFA\=\= +simplotpanel.lbl.Yaxistypes.fr.text.changed=20110317061957 +simplotpanel.lbl.Yaxistypes.fr.text.md5=cou5rldbFlcgi6Xu4KP8hw\=\= +testkey..text.changed=20110317155038 +testkey..text.md5=kcBM0l2cxfxEt+QIbgItTQ\=\= +testkey.fr.text.author=sampo +testkey.fr.text.changed=20110317154252 +testkey.fr.text.md5=aN8Ll4OTQsS8F7SaCnbhxw\=\= diff --git a/l10n/messages.properties b/l10n/messages.properties index 9defd41b..fcabdad2 100644 --- a/l10n/messages.properties +++ b/l10n/messages.properties @@ -2,17 +2,891 @@ # # 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 = This operation cannot be undone. +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 = 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 = If connected to the Internet, you can simply click Send bug report. +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 = You can report a bug in OpenRocket by filling in and submitting the form below.
You can also report bugs and include attachments on the project web site. +bugreport.reportDialog.txt2 = Please include a short description about what you were doing when the exception occurred. + + +! 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 = Motor mounts: +edtmotorconfdlg.title.Editmotorconf = Edit motor configurations +edtmotorconfdlg.selectcomp = Select which components function as motor mounts: +edtmotorconfdlg.lbl.Motorconfig = Motor configurations: +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 = Editing materials will not affect existing rocket designs. + +!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 = The standard deviation of the windspeed.
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 = The turbulence intensity is the standard deviation divided by the average windspeed.
+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 = Select to use the International Standard Atmosphere model.
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 = The launch site latitude affects the gravitational pull of Earth.
Positive values are on the Northern hemisphere, negative values on the Southern hemisphere. +simedtdlg.lbl.Altitude = Altitude: +simedtdlg.lbl.ttip.Altitude = The launch altitude above mean sea level.
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 = Direction of the launch rod relative to the wind.
+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 = The Extended Barrowman method calculates aerodynamic forces according
to the Barrowman equations extended to accommodate more components. +simedtdlg.lbl.ExtBarrowman = Extended Barrowman +simedtdlg.lbl.Simmethod = Simulation method: +simedtdlg.lbl.ttip.Simmethod1 = The six degree-of-freedom simulator allows the rocket total freedom during flight.
+simedtdlg.lbl.ttip.Simmethod2 = Integration is performed using a 4th order Runge-Kutta 4 numerical integration. +simedtdlg.lbl.Timestep = Time step: +simedtdlg.lbl.ttip.Timestep1 = The time between simulation steps.
A smaller time step results in a more accurate but slower simulation.
+simedtdlg.lbl.ttip.Timestep2 = The 4th 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 = Simulation listeners 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 = This operation cannot be undone. +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 = The string used to separate the fields in the exported file.
+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 = Pressure CD +componentanalysisdlg.dragTableModel.Col.Base = Base CD +componentanalysisdlg.dragTableModel.Col.friction = Friction CD +componentanalysisdlg.dragTableModel.Col.total = Total CD +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 = Total Cl +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 = An engine block stops the motor from moving forwards in the motor mount tube.

In order to add a motor, create a body tube or inner tube and mark it as a motor mount in the Motor 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 = The component finish affects the aerodynamic drag of the component.
+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 = The overridden mass does not include motors.
+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 = Split the cluster into separate components.
+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 = Drag coefficient CD: +ParachuteCfg.lbl.longB1 = The drag coefficient relative to the total area of the parachute.
+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 = Drag coefficient CD: +StreamerCfg.lbl.longB1 = The drag coefficient relative to the total area of the streamer.
+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 = Store all simulated data.
+StorageOptChooser.lbl.longA2 = This can result in very large files! +StorageOptChooser.rdbut.Every = Every +StorageOptChooser.lbl.longB1 = Store plottable values approximately this far apart.
+StorageOptChooser.lbl.longB2 = Larger values result in smaller files. +StorageOptChooser.lbl.seconds = seconds +StorageOptChooser.rdbut.Onlyprimfig = Only primary figures +StorageOptChooser.lbl.longC1 = Store only the values shown in the summary table.
+StorageOptChooser.lbl.longC2 = This results in the smallest files. +StorageOptChooser.checkbox.Compfile = Compress file +StorageOptChooser.lbl.UsingComp = Using compression reduces the file size significantly. +StorageOptChooser.lbl.longD1 = An estimate on how large the resulting file would be with the present options. +StorageOptChooser.ttip.Saveopt = Save options +StorageOptChooser.lbl.Estfilesize = Estimated file size: +StorageOptChooser.lbl.Saveopt = Save options + +! ThrustCurveMotorSelectionPanel +TCMotorSelPan.lbl.Selrocketmotor = Select rocket motor: +TCMotorSelPan.checkbox.hideSimilar = Hide very similar thrust curves +TCMotorSelPan.SHOW_DESCRIPTIONS.desc1 = Show all motors +TCMotorSelPan.SHOW_DESCRIPTIONS.desc2 = Show motors with diameter less than that of the motor mount +TCMotorSelPan.SHOW_DESCRIPTIONS.desc3 = Show motors with diameter equal to that of the motor mount +TCMotorSelPan.lbl.Motormountdia = Motor mount diameter: +TCMotorSelPan.lbl.Search = Search: +TCMotorSelPan.lbl.Selectthrustcurve = Select thrust curve: +TCMotorSelPan.lbl.Ejectionchargedelay = Ejection charge delay: +TCMotorSelPan.equalsIgnoreCase.None = None +TCMotorSelPan.lbl.NumberofsecondsorNone = (Number of seconds or \"None\") +TCMotorSelPan.lbl.Totalimpulse = Total impulse: +TCMotorSelPan.lbl.Avgthrust = Avg. thrust: +TCMotorSelPan.lbl.Maxthrust = Max. thrust: +TCMotorSelPan.lbl.Burntime = Burn time: +TCMotorSelPan.lbl.Launchmass = Launch mass: +TCMotorSelPan.lbl.Emptymass = Empty mass: +TCMotorSelPan.lbl.Datapoints = Data points: +TCMotorSelPan.lbl.Digest = Digest: +TCMotorSelPan.title.Thrustcurve = Thrust curve: +TCMotorSelPan.title.Thrust = Thrust +TCMotorSelPan.delayBox.None = None + + +! PlotDialog +PlotDialog.title.Flightdataplot = Flight data plot +PlotDialog.Chart.Simulatedflight = Simulated flight +PlotDialog.CheckBox.Showdatapoints = Show data points +PlotDialog.lbl.Chart = Click+drag down+right to zoom in, up+left to zoom out + ! "main" prefix is used for the main application dialog @@ -22,6 +896,7 @@ main.menu.file.open = Open... main.menu.file.openExample = Open example... main.menu.file.save = Save main.menu.file.saveAs = Save as... +main.menu.file.print = Print / Export PDF... main.menu.file.close = Close main.menu.file.quit = Quit @@ -41,7 +916,285 @@ main.menu.help = Help main.menu.help.license = License main.menu.help.bugReport = Bug report main.menu.help.debugLog = Debug log -main.menu.help. = About +main.menu.help.about = About + +main.menu.debug = Debug +main.menu.debug.whatisthismenu = What is this menu? +main.menu.debug.createtestrocket = Create test rocket + +! database +! Translate here all material database +! + +! Material database +! BULK_MATERIAL +Databases.materials.Acrylic = Acrylic +Databases.materials.Balsa = Balsa +Databases.materials.Birch = Birch +Databases.materials.Cardboard = Cardboard +Databases.materials.Carbonfiber = Carbon fiber +Databases.materials.Cork = Cork +Databases.materials.DepronXPS = Depron (XPS) +Databases.materials.Fiberglass = Fiberglass +Databases.materials.Kraftphenolic = Kraft phenolic +Databases.materials.Maple = Maple +Databases.materials.Paperoffice = Paper (office) +Databases.materials.Pine = Pine +Databases.materials.Plywoodbirch = Plywood (birch) +Databases.materials.PolycarbonateLexan = Polycarbonate (Lexan) +Databases.materials.Polystyrene = Polystyrene +Databases.materials.PVC = PVC +Databases.materials.Spruce = Spruce +Databases.materials.StyrofoamgenericEPS = Styrofoam (generic EPS) +Databases.materials.StyrofoamBluefoamXPS = Styrofoam \"Blue foam\" (XPS) +Databases.materials.Quantumtubing = Quantum tubing +!SURFACE_MATERIAL +Databases.materials.Ripstopnylon = Ripstop nylon +Databases.materials.Mylar = Mylar +Databases.materials.Polyethylenethin = Polyethylene (thin) +Databases.materials.Polyethyleneheavy = Polyethylene (heavy) +Databases.materials.Silk = Silk +Databases.materials.Paperoffice = Paper (office) +Databases.materials.Cellophane = Cellophane +Databases.materials.Crepepaper = Cr\u00eape paper +! LINE_MATERIAL +Databases.materials.Threadheavy-duty = Thread (heavy-duty) +Databases.materials.Elasticcordround2mm = Elastic cord (round 2mm, 1/16 in) +Databases.materials.Elasticcordflat6mm = Elastic cord (flat 6mm, 1/4 in) +Databases.materials.Elasticcordflat12mm = Elastic cord (flat 12mm, 1/2 in) +Databases.materials.Elasticcordflat19mm = Elastic cord (flat 19mm, 3/4 in) +Databases.materials.Elasticcordflat25mm = Elastic cord (flat 25mm, 1 in) +Databases.materials.Braidednylon2mm = Braided nylon (2 mm, 1/16 in) +Databases.materials.Braidednylon3mm = Braided nylon (3 mm, 1/8 in) +Databases.materials.Tubularnylon11mm = Tubular nylon (11 mm, 7/16 in) +Databases.materials.Tubularnylon14mm = Tubular nylon (14 mm, 9/16 in) +Databases.materials.Tubularnylon25mm = Tubular nylon (25 mm, 1 in) + +! ExternalComponent +ExternalComponent.Rough = Rough +ExternalComponent.Unfinished = Unfinished +ExternalComponent.Regularpaint = Regular paint +ExternalComponent.Smoothpaint = Smooth paint +ExternalComponent.Polished = Polished + +! LineStyle +LineStyle.Solid = Solid +LineStyle.Dashed = Dashed +LineStyle.Dotted = Dotted +LineStyle.Dash-dotted = Dash-dotted +LineStyle.Defaultstyle = Default style + +! Shape +Shape.Conical = Conical +Shape.Conical.desc1 = A conical nose cone has a profile of a triangle. +Shape.Conical.desc2 = A conical transition has straight sides. +Shape.Ogive = Ogive +Shape.Ogive.desc1 = An ogive nose cone has a profile that is a segment of a circle. The shape parameter value 1 produces a tangent ogive, which has a smooth transition to the body tube, values less than 1 produce secant ogives. +Shape.Ogive.desc2 = An ogive transition has a profile that is a segment of a circle. The shape parameter value 1 produces a tangent ogive, which has a smooth transition to the body tube at the aft end, values less than 1 produce secant ogives. +Shape.Ellipsoid = Ellipsoid +Shape.Ellipsoid.desc1 = An ellipsoidal nose cone has a profile of a half-ellipse with major axes of lengths 2×Length and Diameter. +Shape.Ellipsoid.desc2 = An ellipsoidal transition has a profile of a half-ellipse with major axes of lengths 2×Length and Diameter. If the transition is not clipped, then the profile is extended at the center by the corresponding radius. +Shape.Powerseries = Power series +Shape.Powerseries.desc1 = A power series nose cone has a profile of Radius × (x / Length)k where k is the shape parameter. For k=0.5 this is a \u00BD-power or parabolic nose cone, for k=0.75 a \u00BE-power, and for k=1 a conical nose cone. +Shape.Powerseries.desc2 = A power series transition has a profile of Radius × (x / Length)k where k is the shape parameter. For k=0.5 the transition is \u00BD-power or parabolic, for k=0.75 a \u00BE-power, and for k=1 conical. +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 full parabola which is tangent to the body tube, 0.75 produces a 3/4 parabola, 0.5 procudes a 1/2 parabola and 0 produces a conical 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 full parabola which is tangent to the body tube at the aft end, 0.75 produces a 3/4 parabola, 0.5 procudes a 1/2 parabola and 0 produces a conical transition. +Shape.Haackseries = Haack series +Shape.Haackseries.desc1 = The Haack series nose cones are designed to minimize drag. The shape parameter 0 produces an LD-Haack or Von Karman nose cone, which minimizes drag for fixed length and diameter, while a value of 0.333 produces an LV-Haack nose cone, which minimizes drag for fixed length and volume. +Shape.Haackseries.desc2 = The Haack series nose cones 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 LD-Haack or Von Karman shape, while a value of 0.333 produces an LV-Haack shape. + + +! RocketComponent +RocketComponent.Position.TOP = Top of the parent component +RocketComponent.Position.MIDDLE = Middle of the parent component +RocketComponent.Position.BOTTOM = Bottom of the parent component +RocketComponent.Position.AFTER = After the parent component +RocketComponent.Position.ABSOLUTE = Tip of the nose cone + +! LaunchLug +LaunchLug.Launchlug = Launch lug +! NoseCone +NoseCone.NoseCone = Nose cone +! Transition +Transition.Transition = Transition +!Stage +Stage.Stage = Stage +! BodyTube +BodyTube.BodyTube = Body tube +! TubeCoupler +TubeCoupler.TubeCoupler = Tube coupler +!InnerTube +InnerTube.InnerTube = Inner Tube +! TrapezoidFinSet +TrapezoidFinSet.TrapezoidFinSet = Trapezoidal fin set +! FreeformFinSet +FreeformFinSet.FreeformFinSet = Freeform fin set +!MassComponent +MassComponent.MassComponent = Mass component +! Parachute +Parachute.Parachute = Parachute +! ShockCord +ShockCord.ShockCord = Shock cord +! Bulkhead +Bulkhead.Bulkhead = Bulkhead + +!Rocket +Rocket.motorCount.Nomotor = [No motors] +Rocket.compname.Rocket = Rocket + +!MotorMount +MotorMount.IgnitionEvent.AUTOMATIC = Automatic (launch or ejection charge) +MotorMount.IgnitionEvent.LAUNCH = Launch +MotorMount.IgnitionEvent.EJECTION_CHARGE = First ejection charge of previous stage +MotorMount.IgnitionEvent.BURNOUT = First burnout of previous stage +MotorMount.IgnitionEvent.NEVER = Never + +!ComponentIcons +ComponentIcons.Nosecone = Nose cone +ComponentIcons.Bodytube = Body tube +ComponentIcons.Transition = Transition +ComponentIcons.Trapezoidalfinset = Trapezoidal fin set +ComponentIcons.Ellipticalfinset = Elliptical fin set +ComponentIcons.Freeformfinset = Freeform fin set +ComponentIcons.Launchlug = Launch lug +ComponentIcons.Innertube = Inner tube +ComponentIcons.Tubecoupler = Tube coupler +ComponentIcons.Centeringring = Centering ring +ComponentIcons.Bulkhead = Bulk head +ComponentIcons.Engineblock = Engine block +ComponentIcons.Parachute = Parachute +ComponentIcons.Streamer = Streamer +ComponentIcons.Shockcord = Shock cord +ComponentIcons.Masscomponent = Mass component +ComponentIcons.disabled = (disabled) + +! StageAction +StageAction.Stage = Stage + +! RecoveryDevice +RecoveryDevice.DeployEvent.LAUNCH = Launch (plus NN seconds) +RecoveryDevice.DeployEvent.EJECTION = First ejection charge of this stage +RecoveryDevice.DeployEvent.APOGEE = Apogee +RecoveryDevice.DeployEvent.ALTITUDE = Specific altitude during descent +RecoveryDevice.DeployEvent.NEVER = Never + +! FlightEvent +FlightEvent.Type.LAUNCH = Launch +FlightEvent.Type.IGNITION = Motor ignition +FlightEvent.Type.LIFTOFF = Lift-off +FlightEvent.Type.LAUNCHROD = Launch rod clearance +FlightEvent.Type.BURNOUT = Motor burnout +FlightEvent.Type.EJECTION_CHARGE = Ejection charge +FlightEvent.Type.STAGE_SEPARATION = Stage separation +FlightEvent.Type.APOGEE = Apogee +FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT = Recovery device deployment +FlightEvent.Type.GROUND_HIT = Ground hit +FlightEvent.Type.SIMULATION_END = Simulation end +FlightEvent.Type.ALTITUDE = Altitude change + +! ThrustCurveMotorColumns +TCurveMotorCol.MANUFACTURER = Manufacturer +TCurveMotorCol.DESIGNATION = Designation +TCurveMotorCol.TYPE = Type +TCurveMotorCol.DIAMETER = Diameter +TCurveMotorCol.LENGTH = Length + +! RocketInfo +RocketInfo.lengthLine.Length = Length +RocketInfo.lengthLine.maxdiameter = , max. diameter +RocketInfo.massText1 = Mass with motors +RocketInfo.massText2 = Mass with no motors +RocketInfo.at = at M= +RocketInfo.cgText = CG: +RocketInfo.cpText = CP: +RocketInfo.stabText = Stability: +RocketInfo.Warning = Warning: +RocketInfo.Calculating = Calculating... +RocketInfo.Apogee = Apogee: +RocketInfo.Maxvelocity = Max. velocity: +RocketInfo.Maxacceleration = Max. acceleration: +RocketInfo.apogeeValue = N/A +RocketInfo.Mach = (Mach +RocketInfo.velocityValue = N/A +RocketInfo.accelerationValue = N/A + +! FinSet +FinSet.CrossSection.SQUARE = Square +FinSet.CrossSection.ROUNDED = Rounded +FinSet.CrossSection.AIRFOIL = Airfoil +FinSet.TabRelativePosition.FRONT = Root chord leading edge +FinSet.TabRelativePosition.CENTER = Root chord midpoint +FinSet.TabRelativePosition.END = Root chord trailing edge +! FlightDataType +FlightDataType.TYPE_TIME = Time +FlightDataType.TYPE_ALTITUDE = Altitude +FlightDataType.TYPE_VELOCITY_Z = Vertical velocity +FlightDataType.TYPE_ACCELERATION_Z = Vertical acceleration +FlightDataType.TYPE_VELOCITY_TOTAL = Total velocity +FlightDataType.TYPE_ACCELERATION_TOTAL = Total acceleration +FlightDataType.TYPE_POSITION_X = Position upwind +FlightDataType.TYPE_POSITION_Y = Position parallel to wind +FlightDataType.TYPE_POSITION_XY = Lateral distance +FlightDataType.TYPE_POSITION_DIRECTION = Lateral direction +FlightDataType.TYPE_VELOCITY_XY = Lateral velocity +FlightDataType.TYPE_ACCELERATION_XY = Lateral acceleration +FlightDataType.TYPE_AOA = Angle of attack +FlightDataType.TYPE_ROLL_RATE = Roll rate +FlightDataType.TYPE_PITCH_RATE = Pitch rate +FlightDataType.TYPE_YAW_RATE = Yaw rate +FlightDataType.TYPE_MASS = Mass +FlightDataType.TYPE_LONGITUDINAL_INERTIA = Longitudinal moment of inertia +FlightDataType.TYPE_ROTATIONAL_INERTIA = Rotational moment of inertia +FlightDataType.TYPE_CP_LOCATION = CP location +FlightDataType.TYPE_CG_LOCATION = CG location +FlightDataType.TYPE_STABILITY = Stability margin calibers +FlightDataType.TYPE_MACH_NUMBER = Mach number +FlightDataType.TYPE_REYNOLDS_NUMBER = Reynolds number +FlightDataType.TYPE_THRUST_FORCE = Thrust +FlightDataType.TYPE_DRAG_FORCE = Drag force +FlightDataType.TYPE_DRAG_COEFF = Drag coefficient +FlightDataType.TYPE_AXIAL_DRAG_COEFF = Axial drag coefficient +FlightDataType.TYPE_FRICTION_DRAG_COEFF = Friction drag coefficient +FlightDataType.TYPE_PRESSURE_DRAG_COEFF = Pressure drag coefficient +FlightDataType.TYPE_BASE_DRAG_COEFF = Base drag coefficient +FlightDataType.TYPE_NORMAL_FORCE_COEFF = Normal force coefficient +FlightDataType.TYPE_PITCH_MOMENT_COEFF = Pitch moment coefficient +FlightDataType.TYPE_YAW_MOMENT_COEFF = Yaw moment coefficient +FlightDataType.TYPE_SIDE_FORCE_COEFF = Side force coefficient +FlightDataType.TYPE_ROLL_MOMENT_COEFF = Roll moment coefficient +FlightDataType.TYPE_ROLL_FORCING_COEFF = Roll forcing coefficient +FlightDataType.TYPE_ROLL_DAMPING_COEFF = Roll damping coefficient +FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF = Pitch damping coefficient +FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF = Yaw damping coefficient +FlightDataType.TYPE_REFERENCE_LENGTH = Reference lenght +FlightDataType.TYPE_REFERENCE_AREA = Reference area +FlightDataType.TYPE_ORIENTATION_THETA = Vertical orientation (zenith) +FlightDataType.TYPE_ORIENTATION_PHI = Lateral orientation (azimuth) +FlightDataType.TYPE_WIND_VELOCITY = Wind velocity +FlightDataType.TYPE_AIR_TEMPERATURE = Air temperature +FlightDataType.TYPE_AIR_PRESSURE = Air pressure +FlightDataType.TYPE_SPEED_OF_SOUND = Speed of sound +FlightDataType.TYPE_TIME_STEP = Simulation time step +FlightDataType.TYPE_COMPUTATION_TIME = Computation time +! PlotConfiguration +PlotConfiguration.Verticalmotion = Vertical motion vs. time +PlotConfiguration.Totalmotion = Total motion vs. time +PlotConfiguration.Flightside = Flight side profile +PlotConfiguration.Stability = Stability vs. time +PlotConfiguration.Dragcoef = Drag coefficients vs. Mach number +PlotConfiguration.Rollcharacteristics = Roll characteristics +PlotConfiguration.Angleofattack = Angle of attack and orientation vs. time +PlotConfiguration.Simulationtime = Simulation time step and computation time +! Warning +Warning.LargeAOA.str1 = Large angle of attack encountered. +Warning.LargeAOA.str2 = Large angle of attack encountered ( +Warning.DISCONTINUITY = Discontinuity in rocket body diameter. +Warning.THICK_FIN = Thick fins may not be modeled accurately. +Warning.JAGGED_EDGED_FIN = Jagged-edged fin predictions may be inaccurate. +Warning.LISTENERS_AFFECTED = Listeners modified the flight simulation +Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Recovery device opened while motor still burning. +Warning.FILE_INVALID_PARAMETER = Invalid parameter encountered, ignoring. diff --git a/l10n/messages_de.properties b/l10n/messages_de.properties new file mode 100644 index 00000000..bd51927f --- /dev/null +++ b/l10n/messages_de.properties @@ -0,0 +1,1171 @@ +! Set to the name of the current translation file (used for debugging purposes) +debug.currentFile = messages_de.properties + +! RocketActions +RocketActions.checkbox.Donotaskmeagain = Nicht wieder fragen +RocketActions.lbl.Youcanchangedefop = Die Standardaktion kann in den Einstellungen geändert werden. +RocketActions.showConfirmDialog.lbl1 = Simulationen löschen? +RocketActions.showConfirmDialog.lbl2 = Diese Aktion kann nicht rückgängig gemacht werden. +RocketActions.showConfirmDialog.title = Simulationen löschen +RocketActions.DelCompAct.Delete = Löschen +RocketActions.DelCompAct.ttip.Delete = Die ausgewählte Komponente löschen. +RocketActions.DelSimuAct.Delete = Löschen +RocketActions.DelSimuAct.ttip.Delete = Die ausgewählte Simulation löschen. +RocketActions.DelAct.Delete = Löschen +RocketActions.DelAct.ttip.Delete = Die ausgewählte Komponente oder Simulation löschen. +RocketActions.CutAction.Cut = Ausschneiden +RocketActions.CutAction.ttip.Cut = Diese Komponente oder Simulation ausschneiden und aus dem Design entfernen +RocketActions.CopyAct.Copy = Kopieren +RocketActions.CopyAct.ttip.Copy = Komponente (und Subkomponenten) in die Zwischenablage kopieren. +RocketActions.PasteAct.Paste = Einfügen +RocketActions.PasteAct.ttip.Paste = Fügt die Komponente oder Simulation aus der Zwischenablage in das Design ein. +RocketActions.EditAct.Edit = Bearbeiten +RocketActions.EditAct.ttip.Edit = Die ausgewählte Komponente bearbeiten. +RocketActions.NewStageAct.Newstage = Neue Stufe +RocketActions.NewStageAct.ttip.Newstage = Fügt eine neue Stufe in das Raketendesign ein. +RocketActions.ActBoosterstage = Booster-Stufe +RocketActions.MoveUpAct.Moveup = Nach oben verschieben +RocketActions.MoveUpAct.ttip.Moveup = Verschiebt diese Komponente nach oben. +RocketActions.MoveDownAct.Movedown = Nach unten verschieben +RocketActions.MoveDownAct.ttip.Movedown = Verschiebt diese Komponente nach unten. + +! RocketPanel +RocketPanel.FigTypeAct.Sideview = Seitenansicht +RocketPanel.FigTypeAct.ttip.Sideview = Seitenansicht +RocketPanel.FigTypeAct.Backview = Rückansicht +RocketPanel.FigTypeAct.ttip.Backview = Vorderansicht +RocketPanel.lbl.Motorcfg = Motorkonfiguration +RocketPanel.lbl.infoMessage = Zum Auswählen klicken   Shift+Klick andere auswählen    Doppelklick zum Bearbeiten    Klicken+Ziehen zum Verschieben + + +! BasicFrame +BasicFrame.SimpleFileFilter1 = Alle Raketendesigns (*.ork; *.rkt) +BasicFrame.SimpleFileFilter2 = OpenRocket Designs (*.ork) +BasicFrame.SimpleFileFilter3 = RockSim Designs (*.rkt) +BasicFrame.tab.Rocketdesign = Raketendesign +BasicFrame.tab.Flightsim = Flugsimulation +BasicFrame.title.Addnewcomp = Neue Komponente hinzufügen +BasicFrame.item.Openrocketdesign = Raketendesign öffnen +BasicFrame.item.Openexamplerocketdesign = Beispieldesign öffnen +BasicFrame.item.SavecurRocketdesign = Aktuelles Raketendesign speichern +BasicFrame.item.SavecurRocketdesnewfile = Aktuelles Raketendesign in eine neue Datei speichern +BasicFrame.item.Printpart = Komponentenliste und Leitwerkschablone drucken +BasicFrame.item.Closedesign = Aktuelles Raketendesign schließen +BasicFrame.item.Quitprogram = Programm beenden +BasicFrame.menu.Rocketedt = Rakete bearbeiten +BasicFrame.dlg.lbl1 = Design ' +BasicFrame.dlg.lbl2 = ist nicht gespeichert. +BasicFrame.dlg.lbl3 = Möchten Sie es speichern? +BasicFrame.dlg.title = Design nicht gespeichert +BasicFrame.StageName.Sustainer = Sustainer +BasicFrame.WarningDialog.txt1 = Die folgenden Probleme würden beim Öffnen festgestellt +BasicFrame.WarningDialog.txt2 = Einige Designeigenschaften wurde eventuell nicht korrekt geladen. +BasicFrame.WarningDialog.title = Warnungen während des Öffnens der Datei + +! Labels used in buttons of dialog windows +button.ok = OK +button.cancel = Abbrechen +button.close = Schließen + +! Common labels used in buttons of dialog windows +dlg.but.ok = OK +dlg.but.cancel = Abbrechen +dlg.but.close = Schließen + +! About Dialog +about.dlg.but.close = Schließen +about.dlg.lbl.translation = Ins Deutsche übersetzt von Stefan Lobas (ERIG e.V.) +about.dlg.lbl.transwebsite = http://www.er-ig.de/ + +! Bug Report dialog +bugreport.dlg.title = Fehlerbericht +bugreport.dlg.but.Sendbugreport = Fehlerbericht senden +bugreport.dlg.but.Sendbugreport.Ttip = Automatische einen Fehlerbericht an die OpenRocket-Entwickler senden. +bugreport.dlg.successmsg1 = Fehlerbericht erfolgreich gesendet. +bugreport.dlg.successmsg2 = Danke für die Hilfe, OpenRocket noch besser zu machen! +bugreport.dlg.successmsg3 = Fehlerbericht gesendet +bugreport.dlg.connectedInternet = Wenn Sie mit dem Internet verbunden sind, können Sie einfach auf Fehlerbericht senden klicken. +bugreport.dlg.otherwise = Sonst senden Sie den den folgenden Text an diese Adresse: +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! +bugreport.dlg.failedmsg1 = OpenRocket konnte den Fehlerbericht nicht versenden: +bugreport.dlg.failedmsg2 = Bitte senden Sie den Bericht manuell an +bugreport.dlg.failedmsg3 = Fehler beim Versenden des Berichts +bugreport.reportDialog.txt = Sie können eine Fehler in OpenRocket mitteilen, indem Sie das unten stehende Formular ausfüllen und abschicken.
Sie können Fehler mit angehängten Dateien auch auf der Projekt-Website mitteilen. +bugreport.reportDialog.txt2 = Bitte beschreiben Sie kurz, was Sie getan haben, als der Fehler auftrat. + + +! Debug log dialog +debuglogdlg.but.clear = Löschen +debuglogdlg.OpenRocketdebuglog = OpenRocket Fehler-Log +debuglogdlg.Displayloglines = Zeige Log-Zeilen: +debuglogdlg.Follow = Folgen +debuglogdlg.col.Time = Zeit +debuglogdlg.col.Level = Level +debuglogdlg.col.Location = Ort +debuglogdlg.col.Message = Nachricht +debuglogdlg.lbl.Loglinenbr = Log-Zeilennummer +debuglogdlg.lbl.Time = Zeit: +debuglogdlg.lbl.Level = Level: + + +! Edit Motor configuration dialog +edtmotorconfdlg.but.removemotor = Motor entfernen +edtmotorconfdlg.but.Selectmotor = Motor auswählen +edtmotorconfdlg.but.Removeconfiguration = Konfiguration entfernen +edtmotorconfdlg.but.Newconfiguration = Neue Konfiguration +edtmotorconfdlg.lbl.Motormounts = Motorhalterungen: +edtmotorconfdlg.title.Editmotorconf = Motorkonfiguration bearbeiten +edtmotorconfdlg.selectcomp = Auswählen, welche Komponenten Motorhalterungen sind: +edtmotorconfdlg.lbl.Motorconfig = Motorkonfigurationen: +edtmotorconfdlg.lbl.Configname = Name der Konfiguration: +edtmotorconfdlg.lbl.Leavenamedefault = Leer lassen für Standardwert. + +! Example design dialog +exdesigndlg.but.open = Öffnen +exdesigndlg.lbl.Selectexample = Beispieldesigns zum Öffnen auswählen: +exdesigndlg.lbl.Openexampledesign = Beispieldesign öffnen +exdesigndlg.lbl.Exampledesignsnotfound = Beispieldesigns konnten nicht gefunden werden. +exdesigndlg.lbl.Examplesnotfound = Beispieldesign konnten nicht gefunden werden + +! Print panel dialog +printdlg.but.saveaspdf = Als PDF speichern +printdlg.but.preview = Vorschau +printdlg.but.settings = Einstellungen + +! Material edit panel +matedtpan.but.new = Neu +matedtpan.but.edit = Bearbeiten +matedtpan.but.delete = Löschen +matedtpan.but.revertall = Alle löschen +matedtpan.col.Material = Material +matedtpan.col.Type = Typ +matedtpan.col.Density = Dichte +matedtpan.col.but.ttip.New = Neues Material hinzufügen +matedtpan.title.Addcustmaterial = Benutzerdefiniertes Material hinzufügen +matedtpan.but.ttip.edit = Bestehendes Material bearbeiten +matedtpan.title.Editmaterial = Material bearbeiten +matedtpan.title2.Editmaterial = Die mitgelieferten Materialien können nicht verändert werden. +matedtpan.but.ttip.delete = Benutzerdefiniertes Material löschen +matedtpan.but.ttip.revertall = Alle benutzerdefinierten Materialien löschen +matedtpan.title.Deletealluser-defined = Alle benutzerdefinierten Materialien löschen? +matedtpan.title.Revertall = Alle löschen? +matedtpan.lbl.edtmaterials = Das Bearbeiten der Materialien beeinflusst keine bereits existierenden Raketendesigns. + +!MaterialModel +MaterialModel.title.Material = Material +MaterialModel.title.Defcustmat = Benutzerdefiniertes Material definieren + + +! Preference dialog +pref.dlg.but.add = Hinzufügen +pref.dlg.but.reset = Zurücksetzen +pref.dlg.but.checknow = Jetzt überprüfen +pref.dlg.but.defaultmetric = Metrisches System +pref.dlg.but.defaultimperial = Imperialistisches System +pref.dlg.title.Preferences = Einstellungen +pref.dlg.tab.Units = Einheiten +pref.dlg.tab.Defaultunits = Standardeinheiten +pref.dlg.tab.Materials = Materialien +pref.dlg.tab.Custommaterials = Benutzerdefinierte Materialien +pref.dlg.tab.Options = Optionen +pref.dlg.tab.Miscellaneousoptions = Weiter Optionen +pref.dlg.lbl.Positiontoinsert = Position, um neue Komponenten einzufügen: +pref.dlg.lbl.Confirmdeletion = Löschen von Simulationen bestätigen +pref.dlg.lbl.User-definedthrust = Benutzerdefinierte Schubkurven: +pref.dlg.Allthrustcurvefiles = Alle Schubkurvendateien (*.eng; *.rrse; *.zzip; Verzeichnisse) +pref.dlg.RASPfiles = RASP Schubkurven (*.eng) +pref.dlg.RockSimfiles = RockSim Schubkurven(*.rse) +pref.dlg.ZIParchives = ZIP-Archiv (*.zip) +pref.dlg.checkbox.Checkupdates = Beim Starten auf neue Version prüfen +pref.dlg.ttip.Checkupdatesnow = Jetzt auf neue Version prüfen +pref.dlg.lbl.Selectprefunits = Wählen Sie Ihre bevorzugten Einheiten aus: +pref.dlg.lbl.Rocketdimensions = Raketendimensionen: +pref.dlg.lbl.Linedensity = Liniendichte: +pref.dlg.lbl.Motordimensions = Motordimensionen: +pref.dlg.lbl.Surfacedensity = Oberflächendichte: +pref.dlg.lbl.Distance = Entfernung: +pref.dlg.lbl.Bulkdensity = Bulk density:: +pref.dlg.lbl.Velocity = Geschwindigkeit +pref.dlg.lbl.Surfaceroughness = Oberflächenrauhheit: +pref.dlg.lbl.Acceleration = Beschleunigung: +pref.dlg.lbl.Area = Fläche +pref.dlg.lbl.Mass = Masse: +pref.dlg.lbl.Angle = Winkel: +pref.dlg.lbl.Force = Kraft: +pref.dlg.lbl.Rollrate = Roll-Rate: +pref.dlg.lbl.Totalimpulse = Gesamtimpuls: +pref.dlg.lbl.Temperature = Temperatur: +pref.dlg.lbl.Momentofinertia = Trägheitsmoment: +pref.dlg.lbl.Pressure = Druck: +pref.dlg.lbl.Stability = Stabilität +pref.dlg.lbl.effect1 = Die Änderungen werden wirksam, wenn Sie das nächste Mal ein Fenster öffnen. +pref.dlg.lbl.Checkingupdates = Prüfe, ob Aktualisierungen verfügbar sind... +pref.dlg.lbl.msg1 = Ein Fehler trat bei der Kommunikation mit dem Server auf. +pref.dlg.lbl.msg2 = Es konnten keine Informationen über Programmaktualisierungen empfangen werden. +pref.dlg.lbl.msg3 = Sie benutzen die neueste Version von OpenRocket. +pref.dlg.lbl.msg4 = Keine Aktualisierungen verfügbar. +pref.dlg.PrefChoiseSelector1 = Immer fragen +pref.dlg.PrefChoiseSelector2 = in der Mitte einfügen +a = an das Ende anhängen +pref.dlg.PrefBooleanSelector1 = Löschen +pref.dlg.PrefBooleanSelector2 = Bestätigen +pref.dlg.Add = Hinzufügen +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. + + +! Simulation edit dialog +simedtdlg.but.runsimulation = Simulation starten +simedtdlg.but.resettodefault = Auf Standardeinstellungen zurücksetzen +simedtdlg.but.add = Hinzufügen +simedtdlg.but.remove = Entfernen +simedtdlg.title.Editsim = Simulation bearbeiten +simedtdlg.lbl.Simname = Name der Simulation: +simedtdlg.tab.Launchcond = Startbedingungen +simedtdlg.tab.Simopt = Simulationsoptionen +simedtdlg.tab.Plotdata = Daten plotten +simedtdlg.tab.Exportdata = Daten exportieren +simedtdlg.lbl.Motorcfg = Motorkonfiguration: +simedtdlg.lbl.ttip.Motorcfg = Motorkonfiguration auswählen +simedtdlg.combo.ttip.motorconf = Die Motorkonfiguration auswählen. +simedtdlg.lbl.Wind = Wind +simedtdlg.lbl.Averwindspeed = Durchschnittliche Windgeschwindigkeit: +simedtdlg.lbl.ttip.Averwindspeed = Die durchschnittliche Windgeschwindigkeit relativ zum Boden. +simedtdlg.lbl.Stddeviation = Standardabweichung +simedtdlg.lbl.ttip.Stddeviation = Die Standardabweichung der Windgeschwindigkeit.
Die Windgeschwindigkeit liegt im Durchschnitt zu 95% der Zeit in der doppelten Standardabweichung. +simedtdlg.lbl.Turbulenceintensity = Intensität der Turbulenz: +simedtdlg.lbl.ttip.Turbulenceintensity1 = Die Intensität der Turbulenz ist die Standardabweichung geteilt durch durch die durchschnittliche Windgeschwindigkeit.
+simedtdlg.lbl.ttip.Turbulenceintensity2 = Typischer Wertebereich von +simedtdlg.lbl.ttip.Turbulenceintensity3 = bis +simedtdlg.border.Atmoscond = Atmosphärische Bedingungen +simedtdlg.checkbox.InterStdAtmosphere = Internationale Standardatmosphäre benutzen +simedtdlg.checkbox.ttip.InterStdAtmosphere1 = Auswählen, um das Modell der Internationalen Standardatmosphäre zu verwenden.
In diesem Modell gilt eine Temperatur von +simedtdlg.checkbox.ttip.InterStdAtmosphere2 = und ein Luftdruck von +simedtdlg.checkbox.ttip.InterStdAtmosphere3 = auf Meeresniveau. +simedtdlg.lbl.Temperature = Temperatur: +simedtdlg.lbl.ttip.Temperature = Die Temperatur am Startplatz. +simedtdlg.lbl.Pressure = Luftdruck: +simedtdlg.lbl.ttip.Pressure = Der Luftdruck am Startplatz. +simedtdlg.lbl.Launchsite = Startplatz +simedtdlg.lbl.Latitude = Breitengrad: +simedtdlg.lbl.ttip.Latitude = Der Breitengrad des Startplatzes beeinflusst die wirksame Gravitationskraft.
Positive Werte liegen auf der Nordhalbkugel, negative Werte auf der Südhalbkugel. +simedtdlg.lbl.Altitude = Höhe: +simedtdlg.lbl.ttip.Altitude = Die Höhe des Startplatzes über Meeresniveau.
Die Höhe des Startplatzes beeinflusst die Position der Rakete im atmosphärischen Modell. +simedtdlg.border.Launchrod = Startrampe +simedtdlg.lbl.Length = Länge: +simedtdlg.lbl.ttip.Length = Die Länge der Startrampe +simedtdlg.lbl.Angle = Winkel: +simedtdlg.lbl.ttip.Angle = Der Winkel der Startrampe aus der Vertikalen. +simedtdlg.lbl.Direction = Richtung: +simedtdlg.lbl.ttip.Direction1 = Richtung der Startrampe relativ zur Windrichtung
+simedtdlg.lbl.ttip.Direction2 = = gegen den Wind. +simedtdlg.lbl.ttip.Direction3 = = mit dem Wind +simedtdlg.border.Simopt = Simulationsoptionen +simedtdlg.lbl.Calcmethod = Berechnungsmethode +simedtdlg.lbl.ttip.Calcmethod = Die erweiterte Methode nach Barrowman berechnet die aerodynamischen Kräfte
nach den Gleichungen von Barrowman, die um weitere Faktoren erweitert wurden. +simedtdlg.lbl.ExtBarrowman = Barrowman (erweitert) +simedtdlg.lbl.Simmethod = Simulationsmethode: +simedtdlg.lbl.ttip.Simmethod1 = Der Sechs-Freiheitsgradsimulator erlaubt der Rakete völlige Bewegungsfreiheit während des Fluges.
+simedtdlg.lbl.ttip.Simmethod2 = Das Integrieren wird nach dem numerischen Runge-Kutta-Verfahren 4. Ordnung durchgeführt. +simedtdlg.lbl.Timestep = Zeitschritt: +simedtdlg.lbl.ttip.Timestep1 = Die Zeit zwischen den Simulationsschritten.
Kleinere Schritte ergeben genauere Ergebnisse, die Simulationen dauern aber länger.
+simedtdlg.lbl.ttip.Timestep2 = Die Berechnung der Simulation mit dem Verfahren 4. Ordnung liefert gute Ergebnisse mit Zeitschritten von +simedtdlg.but.ttip.resettodefault = Zeitschritte zurücksetzen auf den Standardwert ( +simedtdlg.border.Simlist = Simulationsempfänger +simedtdlg.txt.longA1 = Simulationsempfänger sind ein fortgeschrittenes Feature, dass es benutzerdefinierten Programmen erlaubt, die Simulationsdaten zu empfangen und mit der Simulation zu interagieren. +simedtdlg.txt.longA2 = Mehr Information zum Schreiben von Simualtionsempfängern sind in der OpenRocket technical documentation zu finden. +simedtdlg.lbl.Curlist = Aktuelle Simulationsempfänger: +simedtdlg.lbl.Addsimlist = Simulationsempfänger hinzufügen +simedtdlg.lbl.Noflightdata = Keine Flugdaten verfügbar. +simedtdlg.lbl.runsimfirst = Bitte erst die Simulation ausführen. +simedtdlg.chart.Simflight = Simulierter Flug +simedtdlg.dlg.Simres = Ergebnisse der Simulation +simedtdlg.IntensityDesc.None = Keine +simedtdlg.IntensityDesc.Verylow = Sehr niedrig +simedtdlg.IntensityDesc.Low = Niedrig +simedtdlg.IntensityDesc.Medium = Mittel +simedtdlg.IntensityDesc.High = Hoch +simedtdlg.IntensityDesc.Veryhigh = Sehr hoch +simedtdlg.IntensityDesc.Extreme = Extrem + + + +! Simulation Panel +simpanel.but.newsimulation = Neue Simulation +simpanel.but.editsimulation = Simulation bearbeiten +simpanel.but.runsimulations = Simulation ausführen +simpanel.but.deletesimulations = Simulation löschen +simpanel.but.plotexport = Plotten / exportieren +simpanel.but.ttip.newsimulation = Neue Simulation hinzufügen +simpanel.but.ttip.editsim = Ausgewählte Simulation bearbeiten +simpanel.but.ttip.runsimu = Neuberechnen der ausgewählten Simulationen +simpanel.but.ttip.deletesim = Ausgewählte Simulationen löschen +simpanel.checkbox.donotask = Nicht wieder fragen +simpanel.lbl.defpref = Die Standardaktion kann in den Einstellungen geändert werden. +simpanel.dlg.lbl.DeleteSim1 = Die ausgewählten Simulationen löschen? +simpanel.dlg.lbl.DeleteSim2 = Diese Aktion kann nicht rückgängig gemacht werden. +simpanel.dlg.lbl.DeleteSim3 = Simulationen löschen +simpanel.col.Name = Name der Simulation: +simpanel.col.Motors = Motoren +simpanel.col.Apogee = Apogäum +simpanel.col.Maxvelocity = max. Geschwindigkeit +simpanel.col.Maxacceleration = max. Beschleunigung +simpanel.col.Timetoapogee = Zeit bis zum Apogäum +simpanel.col.Flighttime = Flugzeit +simpanel.col.Groundhitvelocity = Landegeschwindigkeit + +! SimulationRunDialog +SimuRunDlg.title.RunSim = Simuliere... +SimuRunDlg.lbl.Running = Arbeite... +SimuRunDlg.lbl.Simutime = Simulationsdauer: +SimuRunDlg.lbl.Altitude = Höhe: +SimuRunDlg.lbl.Velocity = Geschwindigkeit: +SimuRunDlg.msg.Unabletosim = Simulieren nicht möglich: +SimuRunDlg.msg.errorOccurred = Während der Simulation trat ein Fehler auf: +SimuRunDlg.msg.AnException1 = Während der Simulation trat eine Ausnahme auf: +SimuRunDlg.msg.AnException2 = Bitte berichten Sie diesen Fehler mit den unten stehenden Details. +SimuRunDlg.msg.AssertionError1 = Während der Simulation trat ein Berechnungsfehler auf: +SimuRunDlg.msg.AssertionError2 = Bitte berichten Sie diesen Fehler mit den unten stehenden Details. +SimuRunDlg.msg.unknownerror1 = Während der Simulation trat ein unbekannter Fehler auf: +SimuRunDlg.msg.unknownerror2 = Das Programm könnte instabil sein, speichern Sie Ihr Design und starten Sie OpenRocket neu! + + + +! SimulationExportPanel +SimExpPan.desc = Komma getrennte Werte (*.csv) +SimExpPan.border.Vartoexport = zu exportierende Variablen +SimExpPan.but.Selectall = Alle auswählen +SimExpPan.but.Selectnone = Keine auswählen +SimExpPan.border.Fieldsep = Feldtrennung +SimExpPan.lbl.Fieldsepstr = Trennzeichen +SimExpPan.lbl.longA1 = Das Trennzeichen wird benutzt, um die Felder in der exportierten Datei voneinander zu trennen.
+SimExpPan.lbl.longA2 = Für eine CSV-Datei (Comma Separated Values) ein ',' benutzen. +SimExpPan.checkbox.Includesimudesc = Simulationsbeschreibung einfügen +SimExpPan.checkbox.ttip.Includesimudesc = Fügt einen Kommentar mit einer Simulationsbeschreibung am Anfang der Datei ein. +SimExpPan.border.Comments = Kommentare +SimExpPan.checkbox.Includefielddesc = Feldbeschreibungen einfügen +SimExpPan.checkbox.ttip.Includefielddesc = Fügt eine Kommentarzeile mit der Beschreibung der exportierten Variablen ein. +SimExpPan.checkbox.Incflightevents = Flugereignisse einfügen +SimExpPan.checkbox.ttip.Incflightevents = Fügt eine Kommentarzeile für jedes Flugereignis ein. +SimExpPan.lbl.Commentchar = Kommentarzeichen: +SimExpPan.lbl.ttip.Commentchar = Zeichen, das einen Kommentar in der exportierten Datei kennzeichnet. +SimExpPan.but.Exporttofile = In Datei exportieren... +SimExpPan.Fileexists.desc1 = File \"",Datei \«" +SimExpPan.Fileexists.desc2 = \" existiert bereits. Überschreiben?" +SimExpPan.Fileexists.title = Datei existiert bereits +SimExpPan.ExportingVar.desc1 = Exportiere Variable 1 aus +SimExpPan.ExportingVar.desc2 = Exportiere +SimExpPan.ExportingVar.desc3 = Variablen aus +SimExpPan.Col.Variable = Variable +SimExpPan.Col.Unit = Einheit + +! MotorPlot +MotorPlot.title.Motorplot = Motorkurve +MotorPlot.but.Select = Auswahl +MotorPlot.Chart.Motorthrustcurve = Motorschubkurve +MotorPlot.Chart.Time = Zeit / s +MotorPlot.Chart.Thrust = Schub / N +MotorPlot.txt.Designation = Bezeichnung: +MotorPlot.txt.Manufacturer = Hersteller +MotorPlot.txt.Type = Typ: +MotorPlot.txt.Delays = Verzögerungen: +MotorPlot.txt.Comment = Kommentare:\n + + + +! Simulation plot panel +simplotpanel.lbl.Presetplotconf = Plotparameter setzen +simplotpanel.lbl.Xaxistype = X-Achse: +simplotpanel.lbl.Unit = Einheit: +simplotpanel.lbl.Yaxistypes = Y-Achse: +simplotpanel.lbl.Flightevents = Flugereignisse: +simplotpanel.but.All = Alle auswählen +simplotpanel.but.None = Keine +simplotpanel.but.NewYaxisplottype = Neuer Y-Achsenplot-Typ +simplotpanel.but.Plotflight = Flug plotten +simplotpanel.lbl.Axis = Achsen: +simplotpanel.but.ttip.Removethisplot = Diesen Plot löschen +simplotpanel.Desc = Die Daten werden in zeitlicher Reihenfolge geplottet, auch wenn der X-Achsen-Typ nicht Zeit ist. +simplotpanel.OptionPane.lbl1 = Es sind maximal 15 Plots erlaubt. +simplotpanel.OptionPane.lbl2 = Plot konnte nicht hinzugefügt werden +simplotpanel.AUTO_NAME = Auto +simplotpanel.LEFT_NAME = Links +simplotpanel.RIGHT_NAME = Rechts +simplotpanel.CUSTOM = Benutzerdefiniert + +! Component add buttons +compaddbuttons.Bodycompandfinsets = Körperteile und Leitwerke +compaddbuttons.Nosecone = Spitze +compaddbuttons.Bodytube = Körperrohr +compaddbuttons.Transition = Übergang +compaddbuttons.Trapezoidal = Trapeziod +compaddbuttons.Elliptical = Elliptisch +compaddbuttons.Freeform = Freiform +compaddbuttons.Launchlug = Leit-\nröhrchen +compaddbuttons.Innercomponent = Innenteile +compaddbuttons.Innertube = Innenrohr +compaddbuttons.Coupler = Koppler +compaddbuttons.Centeringring = Zentrier-\nring +compaddbuttons.Bulkhead = Schott +compaddbuttons.Engineblock = Motor-\nblock +compaddbuttons.Massobjects = Massenobjekte +compaddbuttons.Parachute = Fallschirm +compaddbuttons.Streamer = Strömer +compaddbuttons.Shockcord = Gummiseil +compaddbuttons.Masscomponent = Massen-\nobjekt +compaddbuttons.Donotaskmeagain = Nicht wieder fragen +compaddbuttons.Selectcomppos = Komponentenposition auswählen +compaddbuttons.lbl.Youcanchange = Die Standardaktion kann in den Einstellungen geändert werden. +compaddbuttons.lbl.insertcomp = Die Komponente nach der aktuellen Komponente oder als letzte Komponente einfügen? +compaddbuttons.askPosition.Inserthere = Hier einfügen +compaddbuttons.askPosition.Addtotheend = Zum Ende hinzufügen +compaddbuttons.askPosition.Cancel = Abbrechen + +! Component Analysis Dialog +componentanalysisdlg.componentanalysis = Component analysis +componentanalysisdlg.lbl.winddir = Windrichtung +componentanalysisdlg.TitledBorder.warnings = Warnungen: +componentanalysisdlg.ToggleBut.worst = Worst +componentanalysisdlg.lbl.angleofattack = Angriffswinkel: +componentanalysisdlg.lbl.machnumber = Machzahl: +componentanalysisdlg.lbl.rollrate = Rollrate: +componentanalysisdlg.lbl.activestages = Aktive Stufen: +componentanalysisdlg.lbl.motorconf = Motorkonfiguration: +componentanalysisdlg.TabStability.Col = Komponente +componentanalysisdlg.TabStability = Stabilität +componentanalysisdlg.TabStability.ttip = Stabilitätsinformationen +componentanalysisdlg.dragTableModel.Col.Component = Komponente +componentanalysisdlg.dragTableModel.Col.Pressure = Druck CD +componentanalysisdlg.dragTableModel.Col.Base = Base CD +componentanalysisdlg.dragTableModel.Col.friction = Reibung CD +componentanalysisdlg.dragTableModel.Col.total = Gesamt CD +componentanalysisdlg.dragTabchar = Drag characteristics +componentanalysisdlg.dragTabchar.ttip = Drag characteristics +componentanalysisdlg.rollTableModel.Col.component = Komponente +componentanalysisdlg.rollTableModel.Col.rollforc = Roll forcing coefficient +componentanalysisdlg.rollTableModel.Col.rolldamp = Roll damping coefficient +componentanalysisdlg.rollTableModel.Col.total = Gesamt Cl +componentanalysisdlg.rollTableModel = Rolldynamik +componentanalysisdlg.rollTableModel.ttip = Rolldynamik +componentanalysisdlg.println.closingmethod = Closing method called: +componentanalysisdlg.println.settingnam = SETTING NAN VALUES +componentanalysisdlg.lbl.reflenght = Referenzlänge: +componentanalysisdlg.lbl.refarea = Referenzfläche: +!componentanalysisdlg.But.close =Close + +! Custom Material dialog +custmatdlg.title.Custommaterial = Benutzerdefiniertes Material +custmatdlg.lbl.Materialname = Name des Materials: +custmatdlg.lbl.Materialtype = Materialtyp +custmatdlg.lbl.Materialdensity = Materialdichte: +custmatdlg.checkbox.Addmaterial = Material zur Datenbank hinzufügen + + +! Ring Component Config +ringcompcfg.OuterRadius = Äußerer Radius +ringcompcfg.Automatic = Automatisch +ringcompcfg.InnerRadius = Innerer Radius +ringcompcfg.Thickness = Wandstärke +ringcompcfg.Length = Länge +ringcompcfg.Positionrelativeto = Relative Position zu: +ringcompcfg.plus = plus +ringcompcfg.PositionValue = Positionswert +ringcompcfg.Radialdistance = Radialer Abstand: +ringcompcfg.Distancefrom = Abstand von der Raketenmittellinie +ringcompcfg.Radialdirection = Radiale Richtung +ringcompcfg.radialdirectionfrom = Die radiale Richtung von der Raketenmittellinie +ringcompcfg.but.Reset = Zurücksetzen +ringcompcfg.but.Resetcomponant = Komponente auf die Raketenmittellinie zurücksetzen +ringcompcfg.EngineBlock.desc = Eine Motorhalterung verhindert, dass der Motor sich im Rohr nach vorne bewegt.

Um einen Motor hinzuzufügen, ein Körperrohr oder ein Innenrohr hinzufügen und im Reiter Motor als Motorhalterung markieren. +ringcompcfg.note.desc = Hinweis: Innenrohre beeinflussen die Aerodynamik der Rakete nicht, auch wenn sie außerhalb des Körperohres liegen. + + +! Body Tube Config +BodyTubecfg.lbl.Bodytubelength = Länge des Körperrohres: +BodyTubecfg.lbl.Outerdiameter = Außendurchmesser: +BodyTubecfg.lbl.Innerdiameter = Innendurchmesser: +BodyTubecfg.lbl.Wallthickness = Wandstärke: +BodyTubecfg.tab.General = Allgemein +BodyTubecfg.tab.Generalproperties = Allgemeine Eigenschaften +BodyTubecfg.tab.Motor = Motor +BodyTubecfg.tab.Motormountconf = Motorkonfiguration +BodyTubecfg.checkbox.Automatic = Automatisch +BodyTubecfg.checkbox.Filled = Gefüllt + +! FinSetConfig +FinSetConfig.tab.Fintabs = Leitwerke +FinSetConfig.tab.Through-the-wall = Durchsteckbare Leitwerke +FinSetConfig.but.Converttofreeform = In Freiform konvertieren +FinSetConfig.but.Converttofreeform.ttip = Konvertiert diese Leitwerke in eine Freiform +FinSetConfig.Convertfinset = Leitwerke konvertieren +FinSetConfig.but.Splitfins = Geteilte Leitwerke +FinSetConfig.but.Splitfins.ttip = Teilt den Leitwerkssatz in getrennte Leitwerke +FinSetConfig.lbl.Through-the-wall = Durchsteckbare Leitwerke: +FinSetConfig.lbl.Tablength = Länge: +FinSetConfig.ttip.Tablength = Länge des Leitwerks. +FinSetConfig.lbl.Tabheight = Höhe: +FinSetConfig.ttip.Tabheight = Spannweite des Leitwerks. +FinSetConfig.lbl.Tabposition = Position: +FinSetConfig.ttip.Tabposition = Position des Leitwerks. +FinSetConfig.lbl.relativeto = relativ zu + +! MotorDatabaseLoadingDialog +MotorDbLoadDlg.title = Lade Motoren +MotorDbLoadDlg.Loadingmotors = Lade Motoren... + +! RocketConfig +RocketCfg.lbl.Designname = Name der Rakete: +RocketCfg.lbl.Designer = Ersteller: +RocketCfg.lbl.Comments = Kommentare: +RocketCfg.lbl.Revisionhistory = Versionsgeschichte: +RocketCfg.lbl.Material = Material: + +! ShockCordConfig +ShockCordCfg.lbl.Shockcordlength = Gummiseillänge + +! RocketComponentConfig +RocketCompCfg.lbl.Componentname = Komponentenname: +RocketCompCfg.ttip.Thecomponentname = Name der Komponente. +RocketCompCfg.tab.Override = Werte überschreiben +RocketCompCfg.tab.MassandCGoverride = Massen- und Schwerpunktsoptionen +RocketCompCfg.tab.Figure = Form +RocketCompCfg.tab.Figstyleopt = Formoptionen +RocketCompCfg.tab.Comment = Kommentar +RocketCompCfg.tab.Specifyacomment = Kommentar zu dieser Komponente +RocketCompCfg.lbl.Mass = Masse: +RocketCompCfg.lbl.Componentmass = Masse der Komponente: +RocketCompCfg.lbl.overriddento = (überschrieben auf +RocketCompCfg.lbl.overriddenby = (überschrieben durch +RocketCompCfg.lbl.Componentmaterial = Material: +RocketCompCfg.lbl.Componentfinish = Oberfläche: +RocketCompCfg.lbl.ttip.componentmaterialaffects = Das Material beeinflusst die Masse der Komponente. +RocketCompCfg.combo.ttip.componentmaterialaffects = Das Material beeinflusst die Masse der Komponente. +RocketCompCfg.lbl.longA1 = Die Oberfläche beeinflusst den aerodynamischen Widerstand der Komponente.
+RocketCompCfg.lbl.longA2 = Der angegebene Wert ist die durchschnittliche Rautiefe der Oberfläche. +RocketCompCfg.but.Setforall = Für alle setzen +RocketCompCfg.but.ttip.Setforall = Diese Oberflächen für alle Komponenten der Rakete setzen. +RocketCompCfg.lbl.Overridemassorcenter = Überschreiben von Masse oder Schwerpunkts von +RocketCompCfg.checkbox.Overridemass = Masse überschreiben: +RocketCompCfg.checkbox.Overridecenterofgrav = Schwerpunkt überschreiben: +RocketCompCfg.checkbox.OverridemassandCG = Masse und Schwerpunkt für alle Unterkomponenten überschreiben +RocketCompCfg.lbl.longB1 = Die überschriebene Masse enthält keine Motoren.
+RocketCompCfg.lbl.longB2 = Die Messung des Schwerpunktes beginnt am Ende von +RocketCompCfg.lbl.Commentsonthe = Kommentare zu +RocketCompCfg.lbl.Figurestyle = Form: +RocketCompCfg.lbl.Componentcolor = Farbe: +RocketCompCfg.lbl.Choosecolor = Farbe auswählen +RocketCompCfg.checkbox.Usedefaultcolor = Standardfarbe verwenden +RocketCompCfg.lbl.Complinestyle = Linienstil: +RocketCompCfg.but.Saveasdefstyle = Als Standardstil speichern +RocketCompCfg.lbl.Diameter = Durchmesser: +RocketCompCfg.lbl.Length = Länge: +RocketCompCfg.lbl.Thickness = Wandstärke: +RocketCompCfg.checkbox.Endcapped = Verschlossenes Ende +RocketCompCfg.ttip.Endcapped = Gibt an, ob das Ende der Schulter geschlossen ist. +RocketCompCfg.title.Noseconeshoulder = Spitzenschulter +RocketCompCfg.title.Aftshoulder = Schulter hinten +RocketCompCfg.border.Foreshoulder = Schulter vorn +!RocketCompCfg.lbl.Length = Length: + +! BulkheadConfig +BulkheadCfg.tab.Radius = Radius: +BulkheadCfg.tab.Thickness = Wandstärke: +BulkheadCfg.tab.General = Allgemein +BulkheadCfg.tab.Generalproperties = Allgemeine Eigenschaften + +!CenteringRingConfig +CenteringRingCfg.tab.Outerdiam = Außendurchmesser: +CenteringRingCfg.tab.Innerdiam = Innendurchmesser: +CenteringRingCfg.tab.Thickness = Wandstärke: +CenteringRingCfg.tab.General = Allgemein +CenteringRingCfg.tab.Generalproperties = Allgemeine Eigenschaften + +!ComponentConfigDialog +ComponentCfgDlg.configuration = Konfiguration +ComponentCfgDlg.Modify = Verändern + +!EllipticalFinSetConfig +EllipticalFinSetCfg.Nbroffins = Anzahl der Leitwerke +EllipticalFinSetCfg.Rotation = Rotation: +EllipticalFinSetCfg.Fincant = Neigung: +EllipticalFinSetCfg.Rootchord = Blatttiefe: +EllipticalFinSetCfg.Height = Höhe: +EllipticalFinSetCfg.Positionrelativeto = Position relativ zu: +EllipticalFinSetCfg.plus = plus +EllipticalFinSetCfg.FincrossSection = Querschnitt: +EllipticalFinSetCfg.Thickness = Wandstärke: +EllipticalFinSetCfg.General = Allgemein +EllipticalFinSetCfg.Generalproperties = Allgemeine Eigenschaften +EllipticalFinSetCfg.ttip.Fincant = Der Winkel, in dem die Leitwerke zum Körperrohr geneigt sind. + +!FreeformFinSetConfig +FreeformFinSetCfg.tab.General = Allgemein +FreeformFinSetCfg.tab.ttip.General = Allgemeine Eigenschaften +FreeformFinSetCfg.tab.Shape = Form +FreeformFinSetCfg.tab.ttip.Finshape = Leitwerksform +FreeformFinSetCfg.lbl.Numberoffins = Anzahl der Leitwerke +FreeformFinSetCfg.lbl.Finrotation = Rotation: +FreeformFinSetCfg.lbl.Fincant = Neigung: +FreeformFinSetCfg.lbl.ttip.Fincant = Der Winkel, in dem die Leitwerke zum Körperrohr geneigt sind. +FreeformFinSetCfg.lbl.Posrelativeto = Position relativ zu: +FreeformFinSetCfg.lbl.plus = plus +FreeformFinSetCfg.lbl.FincrossSection = Querschnitt: +FreeformFinSetCfg.lbl.Thickness = Wandstärke: + +!InnerTubeConfig +InnerTubeCfg.tab.Motor = Motor +InnerTubeCfg.tab.ttip.Motor = Motorkonfiguration +InnerTubeCfg.tab.Cluster = Cluster +InnerTubeCfg.tab.ttip.Cluster = Cluster-Konfiguration +InnerTubeCfg.tab.Radialpos = Radiale Position +InnerTubeCfg.tab.ttip.Radialpos = Radiale Position +InnerTubeCfg.lbl.Selectclustercfg = Cluster-Konfiguration auswählen: +InnerTubeCfg.lbl.TubeSep = Rohrtrennung +InnerTubeCfg.lbl.ttip.TubeSep = Die Trennung der Rohre, 1.0 = die Rohre berühren sich +InnerTubeCfg.lbl.Rotation = Rotation: +InnerTubeCfg.lbl.ttip.Rotation = Rotationswinkel der Cluster-Konfiguration +InnerTubeCfg.lbl.Rotangle = Rotationswinkel der Cluster-Konfiguration +InnerTubeCfg.but.Splitcluster = Cluster aufteilen +InnerTubeCfg.lbl.longA1 = Den Cluster in einzelne Komponenten aufteilen.
+InnerTubeCfg.lbl.longA2 = Die dupliziert alle Komponenten innerhalb dieses Innenrohrs. +InnerTubeCfg.but.Resetsettings = Einstellungen zurücksetzen +InnerTubeCfg.but.ttip.Resetsettings = Setzt die Aufteilung und Rotation auf die Standardwerte zurück + +! LaunchLugConfig +LaunchLugCfg.lbl.Length = Länge: +LaunchLugCfg.lbl.Outerdiam = Außendurchmesser: +LaunchLugCfg.lbl.Innerdiam = Innendurchmesser: +LaunchLugCfg.lbl.Thickness = Wandstärke: +LaunchLugCfg.lbl.Radialpos = Radiale Position: +LaunchLugCfg.lbl.Posrelativeto = Position relativ zu: +LaunchLugCfg.lbl.plus = plus +LaunchLugCfg.tab.General = Allgemein +LaunchLugCfg.tab.Generalprop = Allgemeine Eigenschaften + +! MassComponentConfig +MassComponentCfg.lbl.Mass = Masse +MassComponentCfg.lbl.Length = Länge +MassComponentCfg.lbl.Diameter = Durchmesser +MassComponentCfg.lbl.PosRelativeto = Position relativ zu: +MassComponentCfg.lbl.plus = plus +MassComponentCfg.tab.General = Allgemein +MassComponentCfg.tab.ttip.General = Allgemeine Eigenschaften +MassComponentCfg.tab.Radialpos = Radiale Position +MassComponentCfg.tab.ttip.Radialpos = Konfiguration der radialen Position +MassComponentCfg.lbl.Radialdistance = Radialer Abstand: +MassComponentCfg.lbl.Radialdirection = radiale Richtung: +MassComponentCfg.but.Reset = Zurücksetzen + +! MotorConfig +MotorCfg.checkbox.compmotormount = Diese Komponente ist eine Motorhalterung +MotorCfg.lbl.Motorcfg = Motorkonfiguration +MotorCfg.but.New = Neu +MotorCfg.lbl.Currentmotor = Aktueller Motor: +MotorCfg.lbl.Motoroverhang = Motorüberstand: +MotorCfg.lbl.Ignitionat = Zündung bei: +MotorCfg.lbl.plus = plus +MotorCfg.lbl.seconds = Sekunden +MotorCfg.lbl.longA1 = Das aktuelle Design hat im Moment nur eine Stufe. +MotorCfg.lbl.longA2 = Stufen können durch Klicken auf \«Neue Stufe\« hinzugefügt werden. +MotorCfg.lbl.longB1 = Das aktuelle Design hat im Moment nur eine Stufe. +MotorCfg.lbl.longB2 = Stufen. +MotorCfg.but.Selectmotor = Motor auswählen +MotorCfg.but.Removemotor = Motor entfernen +MotorCfg.lbl.motorLabel = Keiner + +! NoseConeConfig +NoseConeCfg.lbl.Noseconeshape = Spitzenform: +NoseConeCfg.lbl.Shapeparam = Formparameter: +NoseConeCfg.lbl.Noseconelength = Spitzenlänge: +NoseConeCfg.lbl.Basediam = Basisdurchmesser: +NoseConeCfg.checkbox.Automatic = Automatisch +NoseConeCfg.lbl.Wallthickness = Wandstärke: +NoseConeCfg.checkbox.Filled = gefüllt +NoseConeCfg.tab.General = Allgemein +NoseConeCfg.tab.ttip.General = Allgemeine Eigenschaften +NoseConeCfg.tab.Shoulder = Schulter +NoseConeCfg.tab.ttip.Shoulder = Schultereigenschaften + +! ParachuteConfig +ParachuteCfg.lbl.Canopy = Fallschirmkappe: +ParachuteCfg.lbl.Diameter = Durchmesser: +ParachuteCfg.lbl.Material = Material: +ParachuteCfg.combo.MaterialModel = Das Material beeinflusst die Masse der Komponente. +ParachuteCfg.lbl.longA1 = Luftwiderstandskoeffizient CD: +ParachuteCfg.lbl.longB1 = Der Luftwiderstandsbeiwert relativ zur Gesamtfläche des Fallschirms.
+ParachuteCfg.lbl.longB2 = Ein größerer Luftwiderstand führt zu einer kleineren Sinkrate. +ParachuteCfg.lbl.longB3 = Ein typischer Wert für Fallschirme ist 0,8. +ParachuteCfg.but.Reset = Zurücksetzen +ParachuteCfg.lbl.Shroudlines = Fangleinen: +ParachuteCfg.lbl.Numberoflines = Anzahl der Leinen: +ParachuteCfg.lbl.Linelength = Länge der Leinen: +ParachuteCfg.lbl.Material = Material: +ParachuteCfg.lbl.Posrelativeto = Position relativ zu: +ParachuteCfg.lbl.plus = plus +ParachuteCfg.lbl.Packedlength = gepackte Länge: +ParachuteCfg.lbl.Packeddiam = gepackter Durchmesser: +ParachuteCfg.lbl.Deploysat = Auswurf bei +ParachuteCfg.lbl.seconds = Sekunden +ParachuteCfg.lbl.Altitude = Höhe: +ParachuteCfg.tab.General = Allgemein +ParachuteCfg.tab.ttip.General = Allgemeine Eigenschaften +ParachuteCfg.tab.Radialpos = Radiale Position +ParachuteCfg.tab.ttip.Radialpos = Konfiguration der radialen Position +ParachuteCfg.lbl.Radialdistance = Radialer Abstand: +ParachuteCfg.lbl.Radialdirection = radiale Richtung: +ParachuteCfg.but.Reset = Zurücksetzen + +! ShockCordConfig +ShockCordCfg.lbl.Shockcordlength = Länge des Gummiseils +ShockCordCfg.lbl.Shockcordmaterial = Material des Gummiseils: +ShockCordCfg.lbl.Posrelativeto = Position relativ zu: +ShockCordCfg.lbl.plus = plus +ShockCordCfg.lbl.Packedlength = gepackte Länge: +ShockCordCfg.lbl.Packeddiam = gepackter Durchmesser: +ShockCordCfg.tab.General = Allgemein +ShockCordCfg.tab.ttip.General = Allgemeine Eigenschaften + +!SleeveConfig +SleeveCfg.tab.Outerdiam = Außendurchmesser: +SleeveCfg.tab.Innerdiam = Innendurchmesser: +SleeveCfg.tab.Wallthickness = Wandstärke: +SleeveCfg.tab.Length = Länge: +SleeveCfg.tab.General = Allgemein +SleeveCfg.tab.Generalproperties = Allgemeine Eigenschaften + +! StreamerConfig +StreamerCfg.lbl.Striplength = Länge des Strömers: +StreamerCfg.lbl.Stripwidth = Breite des Strömers: +StreamerCfg.lbl.Striparea = Fläche des Strömers: +StreamerCfg.lbl.Aspectratio = Seitenverhältnis: +StreamerCfg.lbl.Material = Material: +StreamerCfg.combo.ttip.MaterialModel = Das Material beeinflusst die Masse der Komponente. +StreamerCfg.lbl.longA1 = Widerstandskoeffizient CD: +StreamerCfg.lbl.longB1 = Der Widerstandskoeffizient des Strömers hängt von der Gesamtfläche ab.
+StreamerCfg.lbl.longB2 = Ein größerer Luftwiderstandskoeffizient führt zu einer kleineren Sinkrate. +StreamerCfg.lbl.Automatic = Automatisch +StreamerCfg.lbl.longC1 = Der Luftwiderstandskoeffizient hängt von der Fläche des Strömers ab. +StreamerCfg.lbl.Posrelativeto = Position relativ zu: +StreamerCfg.lbl.plus = plus +StreamerCfg.lbl.Packedlength = gepackte Länge: +StreamerCfg.lbl.Packeddiam = gepackter Durchmesser: +StreamerCfg.lbl.Deploysat = Auswurf bei +StreamerCfg.lbl.seconds = Sekunden +StreamerCfg.lbl.Altitude = Höhe: +StreamerCfg.tab.General = Allgemein +StreamerCfg.tab.ttip.General = Allgemeine Eigenschaften +StreamerCfg.tab.Radialpos = Radiale Position +StreamerCfg.tab.ttip.Radialpos = Konfiguration der radialen Position +StreamerCfg.lbl.Radialdistance = Radialer Abstand: +StreamerCfg.lbl.Radialdirection = radiale Richtung: +StreamerCfg.but.Reset = Zurücksetzen + +! ThicknessRingComponentConfig +ThicknessRingCompCfg.tab.Outerdiam = Außendurchmesser: +ThicknessRingCompCfg.tab.Innerdiam = Innendurchmesser: +ThicknessRingCompCfg.tab.Wallthickness = Wandstärke: +ThicknessRingCompCfg.tab.Length = Länge: +ThicknessRingCompCfg.tab.General = Allgemein +ThicknessRingCompCfg.tab.Generalprop = Allgemeine Eigenschaften + +! TransitionConfig +TransitionCfg.lbl.Transitionshape = Form des Übergangs +TransitionCfg.checkbox.Clipped = geklemmt +TransitionCfg.lbl.Shapeparam = Formparameter: +TransitionCfg.lbl.Transitionlength = Länge des Übergangs: +TransitionCfg.lbl.Forediam = Vorderer Durchmesser +TransitionCfg.checkbox.Automatic = Automatisch +TransitionCfg.lbl.Aftdiam = Hinterer Durchmesser +TransitionCfg.lbl.Wallthickness = Wandstärke: +TransitionCfg.checkbox.Filled = gefüllt +TransitionCfg.tab.General = Allgemein +TransitionCfg.tab.Generalproperties = Allgemeine Eigenschaften +TransitionCfg.tab.Shoulder = Schulter +TransitionCfg.tab.Shoulderproperties = Schultereigenschaften + +! TrapezoidFinSetConfig +TrapezoidFinSetCfg.lbl.Nbroffins = Anzahl der Leitwerke +TrapezoidFinSetCfg.lbl.ttip.Nbroffins = Anzahl der Leitwerke in diesem Satz +TrapezoidFinSetCfg.lbl.Finrotation = Rotation der Leitwerke +TrapezoidFinSetCfg.lbl.ttip.Finrotation = Winkel des ersten Leitwerks in diesem Satz +TrapezoidFinSetCfg.lbl.Fincant = Neigung: +TrapezoidFinSetCfg.lbl.ttip.Fincant = Der Winkel, in dem die Leitwerke zum Körperrohr geneigt sind. +TrapezoidFinSetCfg.lbl.Rootchord = Blatttiefe: +TrapezoidFinSetCfg.lbl.Tipchord = Blatttiefe (Spitze) +TrapezoidFinSetCfg.lbl.Height = Höhe: +TrapezoidFinSetCfg.lbl.Sweeplength = Blattbreite: +TrapezoidFinSetCfg.lbl.Sweepangle = Pfeilungswinkel +TrapezoidFinSetCfg.lbl.FincrossSection = Leitwerksquerschnitt +TrapezoidFinSetCfg.lbl.Thickness = Wandstärke: +TrapezoidFinSetCfg.lbl.Posrelativeto = Position relativ zu: +TrapezoidFinSetCfg.lbl.plus = plus +TrapezoidFinSetCfg.tab.General = Allgemein +TrapezoidFinSetCfg.tab.Generalproperties = Allgemeine Eigenschaften + +!MotorConfigurationModel +MotorCfgModel.Editcfg = Konfigurationen bearbeiten + +! StorageOptionChooser +StorageOptChooser.lbl.Simdatatostore = Zu speichernde Simulationsdaten: +StorageOptChooser.rdbut.Allsimdata = Alle Simulationsdaten +StorageOptChooser.lbl.longA1 = Speichert alle Simulationsdaten.
+StorageOptChooser.lbl.longA2 = Dies kann sehr große Dateien erzeugen! +StorageOptChooser.rdbut.Every = Alle Simulationsdaten +StorageOptChooser.lbl.longB1 = Speicher plotbare Daten in etwa diesem Abstand.
+StorageOptChooser.lbl.longB2 = Größere Werte erzeugen kleinere Dateien. +StorageOptChooser.lbl.seconds = Sekunden +StorageOptChooser.rdbut.Onlyprimfig = Nur die wichtigsten Werte +StorageOptChooser.lbl.longC1 = Speichert nur die Werte, die in der Zusammenfassung stehen.
+StorageOptChooser.lbl.longC2 = Dies ergibt die kleinsten Dateien +StorageOptChooser.checkbox.Compfile = Datei komprimieren +StorageOptChooser.lbl.UsingComp = Kompression der Datei verringert die Größe signifikant. +StorageOptChooser.lbl.longD1 = Eine Schätzung der Dateigröße mit den gegebenen Optionen. +StorageOptChooser.ttip.Saveopt = Speicheroptionen +StorageOptChooser.lbl.Estfilesize = Voraussichtliche Dateigröße: +StorageOptChooser.lbl.Saveopt = Speicheroptionen + +! ThrustCurveMotorSelectionPanel +TCMotorSelPan.lbl.Selrocketmotor = Raketenmotor auswählen: +TCMotorSelPan.checkbox.hideSimilar = Ähnliche Schubkurven verbergen +TCMotorSelPan.SHOW_DESCRIPTIONS.desc1 = Alle Motoren anzeigen +TCMotorSelPan.SHOW_DESCRIPTIONS.desc2 = Motoren anzeigen, deren Durchmesser kleiner als der der Motorhalterung ist +TCMotorSelPan.SHOW_DESCRIPTIONS.desc3 = Motoren anzeigen, deren Durchmesser gleich der der Motorhalterung ist +TCMotorSelPan.lbl.Motormountdia = Durchmesser der Motorhalterung +TCMotorSelPan.lbl.Search = Suchen: +TCMotorSelPan.lbl.Selectthrustcurve = Schubkurve auswählen: +TCMotorSelPan.lbl.Ejectionchargedelay = Verzögerung der Ausstoßladung: +TCMotorSelPan.equalsIgnoreCase.None = keine +TCMotorSelPan.lbl.NumberofsecondsorNone = (Anzahl der Sekunden oder \«keine\«) +TCMotorSelPan.lbl.Totalimpulse = Gesamtimpuls: +TCMotorSelPan.lbl.Avgthrust = Durchschn. Schub: +TCMotorSelPan.lbl.Maxthrust = max. Schub +TCMotorSelPan.lbl.Burntime = Brenndauer: +TCMotorSelPan.lbl.Launchmass = Startmasse: +TCMotorSelPan.lbl.Emptymass = Leermasse: +TCMotorSelPan.lbl.Datapoints = Datenpunkte: +TCMotorSelPan.lbl.Digest = Übersicht: +TCMotorSelPan.title.Thrustcurve = Schubkurve: +TCMotorSelPan.title.Thrust = Schub: +TCMotorSelPan.delayBox.None = keine + + +! PlotDialog +PlotDialog.title.Flightdataplot = Flugdatenplot +PlotDialog.Chart.Simulatedflight = Simulierter Flug +PlotDialog.CheckBox.Showdatapoints = Datenpunkte anzeigen +PlotDialog.lbl.Chart = Klicken+ziehen: runter+rechts um hinein zu zoomen, hoch+links um heraus zu zoomen + + +! "main" prefix is used for the main application dialog + +main.menu.file = Datei +main.menu.file.new = Neu +main.menu.file.open = Öffnen.. +main.menu.file.openExample = Beispiel öffnen.. +main.menu.file.save = Speichern +main.menu.file.saveAs = Speichern unter... +main.menu.file.print = Drucken... +main.menu.file.close = Schließen +main.menu.file.quit = Beenden + +main.menu.edit = Bearbeiten +main.menu.edit.undo = Rückgängig +main.menu.edit.redo = Wiederholen +main.menu.edit.cut = Ausschneiden +main.menu.edit.copy = Kopieren +main.menu.edit.paste = Einfügen +main.menu.edit.delete = Löschen +main.menu.edit.preferences = Einstellungen + +main.menu.analyze = Analysieren +main.menu.analyze.componentAnalysis = Komponente analysieren + +main.menu.help = Hilfe +main.menu.help.license = Lizenz +main.menu.help.bugReport = Fehlerbericht +main.menu.help.debugLog = Debug-Log +main.menu.help.about = Über + +main.menu.debug = Debug +main.menu.debug.whatisthismenu = Was macht diese Menü? +main.menu.debug.createtestrocket = Eine Testrakete erstellen + +! database +! Translate here all material database +! + +! Material database +! BULK_MATERIAL +Databases.materials.Acrylic = Acryl +Databases.materials.Balsa = Balsa +Databases.materials.Birch = Birke +Databases.materials.Cardboard = Karton +Databases.materials.Carbonfiber = Kohlefaser +Databases.materials.Cork = Kork +Databases.materials.DepronXPS = Depron (XPS) +Databases.materials.Fiberglass = Glasfaser +Databases.materials.Kraftphenolic = Pertinax +Databases.materials.Maple = Ahorn +Databases.materials.Paperoffice = Papier (Büro) +Databases.materials.Pine = Kiefer +Databases.materials.Plywoodbirch = Sperrholz (Birke) +Databases.materials.PolycarbonateLexan = Polycarbonat (Lexan) +Databases.materials.Polystyrene = Polystyrène +Databases.materials.PVC = PVC +Databases.materials.Spruce = Fichte +Databases.materials.StyrofoamgenericEPS = Styropor (EPS) +Databases.materials.StyrofoamBluefoamXPS = Styrodur (XPS) +Databases.materials.Quantumtubing = Quantum tubing +!SURFACE_MATERIAL +Databases.materials.Ripstopnylon = Ripstop Nylon +Databases.materials.Mylar = Mylar +Databases.materials.Polyethylenethin = Polyethylen (dünn) +Databases.materials.Polyethyleneheavy = Polyethylen (schwer) +Databases.materials.Silk = Seide +Databases.materials.Paperoffice = Papier (Büro) +Databases.materials.Cellophane = Zellophan +Databases.materials.Crepepaper = Krepppapier +! LINE_MATERIAL +Databases.materials.Threadheavy-duty = Faden (stark) +Databases.materials.Elasticcordround2mm = Elastikband (rund, 2mm, 1/16 in) +Databases.materials.Elasticcordflat6mm = Elastikband (flach, 6mm, 1/4 in) +Databases.materials.Elasticcordflat12mm = Elastikband (flach, 12mm, 1/2 in) +Databases.materials.Elasticcordflat19mm = Elastikband (flach, 19mm, 3/4 in) +Databases.materials.Elasticcordflat25mm = Elastikband (flach, 25mm, 1 in) +Databases.materials.Braidednylon2mm = Nylonflachband (2 mm, 1/16 in) +Databases.materials.Braidednylon3mm = Nylonflachband (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 = Rau +ExternalComponent.Unfinished = unbehandelt +ExternalComponent.Regularpaint = normale Farbe +ExternalComponent.Smoothpaint = glatte Farbe +ExternalComponent.Polished = poliert + +! LineStyle +LineStyle.Solid = durchgehend +LineStyle.Dashed = gestrichelt +LineStyle.Dotted = gepunktet +LineStyle.Dash-dotted = Strich-Punkt +LineStyle.Defaultstyle = Standardstil + +! Shape +Shape.Conical = Konisch +Shape.Conical.desc1 = Eine konische Spitze hat ein dreieckiges Profil +Shape.Conical.desc2 = Ein konischer Übergang hat gerade Kanten +Shape.Ogive = Ogive +Shape.Ogive.desc1 = Eine ogive Spitze hat das Profil eines Kreissegments. Der Formparamter 1 erzeugt eine tangentiale Ogive, die einen weichen Übergang zum Körperrohr hat, Werte kleiner 1 erzeugen eine sekante Ogive. +Shape.Ogive.desc2 = Eine ogive Spitze hat das Profil eines Kreissegments. Der Formparamter 1 erzeugt eine tangentiale Ogive, die einen weichen Übergang zum Körperrohr am hinteren Ende hat, Werte kleiner 1 erzeugen eine sekante Ogive. +Shape.Ellipsoid = Ellipsoid +Shape.Ellipsoid.desc1 = Eine ellipsoide Spitze hat ein Profil einer Halbellipse mit der einer Hauptachsenlänge von 2×Länge und Durchmesser +Shape.Ellipsoid.desc2 = An ellipsoidal transition has a profile of a half-ellipse with major axes of lengths 2×Length and Diameter. If the transition is not clipped, then the profile is extended at the center by the corresponding radius. +Shape.Powerseries = Power series +Shape.Powerseries.descA1 = A power series nose cone has a profile of Radius × (x / Length)k where k is the shape parameter. For k=0.5 this is a +Shape.Powerseries.descA2 = -power or parabolic nose cone, for k=0.75 a +Shape.Powerseries.descA3 = -power, and for k=1 a conical nose cone. +Shape.Powerseries.descB1 = A power series transition has a profile of Radius × (x / Length)k where k is the shape parameter. For k=0.5 the transition is +Shape.Powerseries.descB2 = -power or parabolic, for k=0.75 a +Shape.Powerseries.descB3 = -power, and for k=1 conical. +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 full parabola which is tangent to the body tube, 0.75 produces a 3/4 parabola, 0.5 procudes a 1/2 parabola and 0 produces a conical 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 full parabola which is tangent to the body tube at the aft end, 0.75 produces a 3/4 parabola, 0.5 procudes a 1/2 parabola and 0 produces a conical transition. +Shape.Haackseries = Haack series +Shape.Haackseries.desc1 = The Haack series nose cones are designed to minimize drag. The shape parameter 0 produces an LD-Haack or Von Karman nose cone, which minimizes drag for fixed length and diameter, while a value of 0.333 produces an LV-Haack nose cone, which minimizes drag for fixed length and volume. +Shape.Haackseries.desc2 = The Haack series nose cones 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 LD-Haack or Von Karman shape, while a value of 0.333 produces an LV-Haack shape. + + +! RocketComponent +RocketComponent.Position.TOP = oberes Ende der übergeordneten Komponente +RocketComponent.Position.MIDDLE = Mitte der übergeordneten Komponente +RocketComponent.Position.BOTTOM = unteres Ende der übergeordneten Komponente +RocketComponent.Position.AFTER = nach der übergeordneten Komponente +RocketComponent.Position.ABSOLUTE = zur Spitze + +! LaunchLug +LaunchLug.Launchlug = Leitröhrchen +! NoseCone +NoseCone.NoseCone = Spitze +! Transition +Transition.Transition = Übergang +!Stage +Stage.Stage = Stufe +! BodyTube +BodyTube.BodyTube = Körperrohr +! TubeCoupler +TubeCoupler.TubeCoupler = Koppler +!InnerTube +InnerTube.InnerTube = Innenrohr +! TrapezoidFinSet +TrapezoidFinSet.TrapezoidFinSet = Trapezoide Leitwerke +! FreeformFinSet +FreeformFinSet.FreeformFinSet = Frei geformte Leitwerke +!MassComponent +MassComponent.MassComponent = Masse +! Parachute +Parachute.Parachute = Fallschirm +! ShockCord +ShockCord.ShockCord = Gummiseil +! Bulkhead +Bulkhead.Bulkhead = Schott + +!Rocket +Rocket.motorCount.Nomotor = [Keine Motoren] +Rocket.compname.Rocket = Rakete + +!MotorMount +MotorMount.IgnitionEvent.AUTOMATIC = Automatisch (Start oder Ausstoßladung) +MotorMount.IgnitionEvent.LAUNCH = Start +MotorMount.IgnitionEvent.EJECTION_CHARGE = Erste Ausstoßladung der vorherigen Stufe +MotorMount.IgnitionEvent.BURNOUT = Erster Brennschluss der vorherigen Stufe +MotorMount.IgnitionEvent.NEVER = Nie + +!ComponentIcons +ComponentIcons.Nosecone = Spitze +ComponentIcons.Bodytube = Körperrohr +ComponentIcons.Transition = Übergang +ComponentIcons.Trapezoidalfinset = Trapezoide Leitwerke +ComponentIcons.Ellipticalfinset = Elliptische Leitwerke +ComponentIcons.Freeformfinset = Frei geformte Leitwerke +ComponentIcons.Launchlug = Leitröhrchen +ComponentIcons.Innertube = Innenrohr +ComponentIcons.Tubecoupler = Koppler +ComponentIcons.Centeringring = Zentrierring +ComponentIcons.Bulkhead = Schott +ComponentIcons.Engineblock = Motorhalterung +ComponentIcons.Parachute = Fallschirm +ComponentIcons.Streamer = Strömer +ComponentIcons.Shockcord = Gummiseil +ComponentIcons.Masscomponent = Masse +ComponentIcons.disabled = (deaktiviert) + +! StageAction +StageAction.Stage = Stufe + +! RecoveryDevice +RecoveryDevice.DeployEvent.LAUNCH = Start (plus NN Sekunden) +RecoveryDevice.DeployEvent.EJECTION = Erste Ausstoßladung dieser Stufe +RecoveryDevice.DeployEvent.APOGEE = Apogäum +RecoveryDevice.DeployEvent.ALTITUDE = Spezifische Höhe während der Landephase +RecoveryDevice.DeployEvent.NEVER = Nie + +! FlightEvent +FlightEvent.Type.LAUNCH = Start +FlightEvent.Type.IGNITION = Motorzündung +FlightEvent.Type.LIFTOFF = Abheben +FlightEvent.Type.LAUNCHROD = Verlassen der Startrampe +FlightEvent.Type.BURNOUT = Motorbrennschluss +FlightEvent.Type.EJECTION_CHARGE = Ausstoßladung +FlightEvent.Type.STAGE_SEPARATION = Stufentrennung +FlightEvent.Type.APOGEE = Apogäum +FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT = Auslösung des Bergungssystems +FlightEvent.Type.GROUND_HIT = Landung +FlightEvent.Type.SIMULATION_END = Ende der Simulation +FlightEvent.Type.ALTITUDE = Höhenänderung + +! ThrustCurveMotorColumns +TCurveMotorCol.MANUFACTURER = Hersteller +TCurveMotorCol.DESIGNATION = Bezeichnung +TCurveMotorCol.TYPE = Typ +TCurveMotorCol.DIAMETER = Durchmesser +TCurveMotorCol.LENGTH = Länge + +! RocketInfo +RocketInfo.lengthLine.Length = Länge +RocketInfo.lengthLine.maxdiameter = , max. Durchmesser +RocketInfo.massText1 = Masse mit Motoren +RocketInfo.massText2 = Masse ohne Motoren +RocketInfo.at = bei M= +RocketInfo.cgText = CG: +RocketInfo.cpText = CP: +RocketInfo.stabText = Stabilität: +RocketInfo.Warning = Warnung: +RocketInfo.Calculating = Berechne... +RocketInfo.Apogee = Apogäum: +RocketInfo.Maxvelocity = max. Geschwindigkeit: +RocketInfo.Maxacceleration = max. Beschleunigung: +RocketInfo.apogeeValue = N/A +RocketInfo.Mach = (Mach +RocketInfo.velocityValue = N/A +RocketInfo.accelerationValue = N/A + +! FinSet +FinSet.CrossSection.SQUARE = Quadrat +FinSet.CrossSection.ROUNDED = Abgerundet +FinSet.CrossSection.AIRFOIL = Tragfläche +FinSet.TabRelativePosition.FRONT = Root chord leading edge +FinSet.TabRelativePosition.CENTER = Root chord midpoint +FinSet.TabRelativePosition.END = Root chord trailing edge + +! FlightDataType +FlightDataType.TYPE_TIME = Zeit +FlightDataType.TYPE_ALTITUDE = Höhe +FlightDataType.TYPE_VELOCITY_Z = Vertikalgeschwindigkeit +FlightDataType.TYPE_ACCELERATION_Z = Vertikalbeschleunigung +FlightDataType.TYPE_VELOCITY_TOTAL = Gesamtgeschwindigkeit +FlightDataType.TYPE_ACCELERATION_TOTAL = Gesamtbeschleunigung +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 = Angriffswinkel +FlightDataType.TYPE_ROLL_RATE = Rollrate +FlightDataType.TYPE_PITCH_RATE = Nickrate +FlightDataType.TYPE_YAW_RATE = Gierrate +FlightDataType.TYPE_MASS = Masse +FlightDataType.TYPE_LONGITUDINAL_INERTIA = Longitudinal moment of inertia +FlightDataType.TYPE_ROTATIONAL_INERTIA = Rotational moment of inertia +FlightDataType.TYPE_CP_LOCATION = Position vom CP +FlightDataType.TYPE_CG_LOCATION = Position vom CG +FlightDataType.TYPE_STABILITY = Stabilität in Kalibern +FlightDataType.TYPE_MACH_NUMBER = Machzahl +FlightDataType.TYPE_REYNOLDS_NUMBER = Reynoldszahl +FlightDataType.TYPE_THRUST_FORCE = Schub +FlightDataType.TYPE_DRAG_FORCE = Luftwiderstandskraft +FlightDataType.TYPE_DRAG_COEFF = Luftwiderstandskoeffizient +FlightDataType.TYPE_AXIAL_DRAG_COEFF = Axial drag coefficient +FlightDataType.TYPE_FRICTION_DRAG_COEFF = Reibungskoeffizient +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 = Referenzlänge +FlightDataType.TYPE_REFERENCE_AREA = Referenzfläche +FlightDataType.TYPE_ORIENTATION_THETA = Vertical orientation (zenith) +FlightDataType.TYPE_ORIENTATION_PHI = Lateral orientation (azimuth) +FlightDataType.TYPE_WIND_VELOCITY = Windgeschwindigkeit +FlightDataType.TYPE_AIR_TEMPERATURE = Lufttemperatur +FlightDataType.TYPE_AIR_PRESSURE = Luftdruck +FlightDataType.TYPE_SPEED_OF_SOUND = Schallgeschwindigkeit +FlightDataType.TYPE_TIME_STEP = Simulationszeitschritt +FlightDataType.TYPE_COMPUTATION_TIME = Berechnnungszeit + +! PlotConfiguration +PlotConfiguration.Verticalmotion = Vertikale Bewegung über Zeit +PlotConfiguration.Totalmotion = Gesamte Bewegung über Zeit +PlotConfiguration.Flightside = Flight side profile +PlotConfiguration.Stability = Stabilität über Zeit +PlotConfiguration.Dragcoef = Drag coefficients vs. Mach number +PlotConfiguration.Rollcharacteristics = Roll characteristics +PlotConfiguration.Angleofattack = Angle of attack and orientation vs. time +PlotConfiguration.Simulationtime = Simulationszeitschritt und Berechnungszeit + +! Warning +Warning.LargeAOA.str1 = Large angle of attack encountered. +Warning.LargeAOA.str2 = Large angle of attack encountered ( +Warning.DISCONTINUITY = Unstetigkeit im Raketendurchmesser +Warning.THICK_FIN = Dicke Leitwerke können nicht präzise modelliert werden. +Warning.JAGGED_EDGED_FIN = Gezackte Ecken in Leitwerken können unpräzise Ergebnisse liefern. +Warning.LISTENERS_AFFECTED = Simulationsempfänger haben die Simulation beeinflusst. +Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Bergungssystem wurde ausgelöst während der Motor noch gebrannt hat. +Warning.FILE_INVALID_PARAMETER = Ignoriere ungültigen Parameter. diff --git a/l10n/messages_es.properties b/l10n/messages_es.properties new file mode 100644 index 00000000..b1aeebb9 --- /dev/null +++ b/l10n/messages_es.properties @@ -0,0 +1,1182 @@ +# +# Spanish base translation file +# translations provided by Tripoli Spain +# +# Should you need to add new logical keys here is the proposed method +# +# className.ComponantType.componantName +# + + + +! Set to the name of the current translation file (used for debugging purposes) +debug.currentFile = messages_es.properties + +! RocketActions +RocketActions.checkbox.Donotaskmeagain = No preguntarme nuevamente +RocketActions.lbl.Youcanchangedefop = Puede modificar la operación por defecto con sus preferencias +RocketActions.showConfirmDialog.lbl1 = ¿Borrar las simulaciones seleccionadas? +RocketActions.showConfirmDialog.lbl2 = Esta operación no puede deshacerse. +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 = 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 = Si está conectado a Internet, haga simplemente Clik Enviar report de errores. +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 = Puede enviar un report de error en OpenRocket rellenando el formulario de abajo y enviándolo.
También puede reportar errores e incluir adjuntos sobre el proyecto de Web. +bugreport.reportDialog.txt2 = Por favor incluya una breve descripción de lo que estaba haciendo cuando ocurrió la excepción. + + +! 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 = Porta motor: +edtmotorconfdlg.title.Editmotorconf = Mostrar las configuraciones de motor +edtmotorconfdlg.selectcomp = Seleccionar que componentes tienen la función de porta motor: +edtmotorconfdlg.lbl.Motorconfig = Configuraciones del motor: +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 = Editar materiales que no afectaran los diseños existentes. + +!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 = Desviación standard de la velocidad del viento.
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 = La intensidad de la turbulencia es la desviación standard dividida por la velocidad media del viento.
+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 = Seleccionar para usar el modelo de la International Standard Atmosphere model.
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 = La latitud del lugar de lanzamiento afecta la atracción terrestre.
Los valores positivos se dan en el hemisferio Norte, los negativos en el hemisferio Sur. +simedtdlg.lbl.Altitude = Altitud: +simedtdlg.lbl.ttip.Altitude = Los valores por encima del nivel del mar.
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 = Dirección de la varilla de lanzamiento relativa al viento.
+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 = El método Barrowman extendido calcula las fuerzas aerodinámicas
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 = El simulador de seis-grados-de-libertad permite al cohete una total libertad durante el vuelo.
+simedtdlg.lbl.ttip.Simmethod2 = La integración mejora usando un 4th ordenar Runge-Kutta 4 integración numérica. +simedtdlg.lbl.Timestep = Duración de la etapa +simedtdlg.lbl.ttip.Timestep1 = Tiempo entre etapas de simulación.
Un tiempo mas corto de etapa origina una simulación mas exacta pero mas lenta.
+simedtdlg.lbl.ttip.Timestep2 = The 4th 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 = Oyentes del simulador 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 = Esta operación no puede deshacerse. +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 = Las barras para separar campos en el documento exportado.
+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 = Presión CD +componentanalysisdlg.dragTableModel.Col.Base = Base CD +componentanalysisdlg.dragTableModel.Col.friction = Rozamiento CD +componentanalysisdlg.dragTableModel.Col.total = Total CD +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 = Total Cl +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 = Un retén motor Impide que el motor se desplace hacia delante dentro del tubo porta motor.

Para añadir un motor, cree un tubo de fuselaje o dentro del tubo y desígnelo como portamotor en el Motor 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 = El acabado del componente afecta su coeficiente de rozamiento.
+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 = La masa elegida no incluye los motores.
+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 = Split del cluster dentro de componentes separados.
+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 = Drag coeficiente CD: +ParachuteCfg.lbl.longB1 = Coeficiente de rozamiento relativo al área total del paracaídas.
+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 = Coeficiente de fricción CD: +StreamerCfg.lbl.longB1 = Coeficiente de fricción relativo al área total de la banderola.
+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 = Almacenar todos los datos simulados.
+StorageOptChooser.lbl.longA2 = Puede significar archivos muy grandes +StorageOptChooser.rdbut.Every = Cada +StorageOptChooser.lbl.longB1 = Almacenar valores de impresión aproximadamente este lejano apartado.
+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 = Almacenas sólo los valores en la tabla sumario.
+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 Tangente a la ojiva, Que tiene una transición suave al fuselaje, produce un valor menor que 1 Secante a la ojiva. +Shape.Ogive.desc2 = Una ojiva con perfil de segmento circular. El parámetro de forma de valor 1 produce una Tangente a la ojiva, Que tiene una transición suave al fuselaje, produce un valor menor que 1 Secante a la ojiva. +Shape.Ellipsoid = Elipsoide +Shape.Ellipsoid.desc1 = Una ojiva elipsoidal tiene un perfil de media elipse con el eje mayor de longitud 2&veces;Longitud y Diámetro. +Shape.Ellipsoid.desc2 = Una ojiva elipsoidal tiene un perfil de media elipse con el eje mayor de longitud 2&veces;Longitud y Diámetro. 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 deRadio &veces; (x / Longitud)k donde k es el parámetro de forma. Para k=0.5 este es un +Shape.Powerseries.descA2 = -potencia o parabólico ojiva, para k=0.75 un +Shape.Powerseries.descA3 = -potencia, y para k=1 a cónica ojiva. +Shape.Powerseries.descB1 = Una serie de transiciones potentes tiene un perfil de Radio &veces; (x / Longitud)k donde k es el parámetro de forma. Para k=0.5 la transición es +Shape.Powerseries.descB2 = -potencia o parabólica, para k=0.75 a +Shape.Powerseries.descB3 = -potencia, y para k=1 cónica. +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 full parábola que es tangente a el body tubo, 0.75 produces a 3/4 parábola, 0.5 procudes a 1/2 parábola y 0 produces a cónico 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 full parábola que es tangente a el body tubo at el aft extremo, 0.75 produces a 3/4 parábola, 0.5 procudes a 1/2 parábola y 0 produces a cónico 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 LD-Haack o Von Karman ojiva , que minimizas drag para fijado longitud y diámetro, mientras a valor de 0.333 produces un LV-Haack ojiva , que minimizas drag para fijado longitud y volumen. +Shape.Haackseries.desc2 = The Haack series ojiva 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 LD-Haack o Von Karman forma, mientras a valor de 0.333 produces un LV-Haack shape. + + +! RocketComponent +RocketComponent.Position.TOP = Parte alta del componente +RocketComponent.Position.MIDDLE = Parte media del componente +RocketComponent.Position.BOTTOM = Extremo inferior del componente +RocketComponent.Position.AFTER = Despues del componente +RocketComponent.Position.ABSOLUTE = Punta de la ojiva + +! LaunchLug +LaunchLug.Launchlug = Guía +! NoseCone +NoseCone.NoseCone = Ojiva +! Transition +Transition.Transition = Transición cónica de lados rectos +!Stage +Stage.Stage = Etapa +! BodyTube +BodyTube.BodyTube = Tubo del fuselaje +! TubeCoupler +TubeCoupler.TubeCoupler = Acoplador +!InnerTube +InnerTube.InnerTube = Tubo interior +! TrapezoidFinSet +TrapezoidFinSet.TrapezoidFinSet = Aleta en configuración trapezoidal +! FreeformFinSet +FreeformFinSet.FreeformFinSet = Forma libre de aleta +!MassComponent +MassComponent.MassComponent = Componente masa +! Parachute +Parachute.Parachute = Paracaídas +! ShockCord +ShockCord.ShockCord = Tirante de suspensión +! Bulkhead +Bulkhead.Bulkhead = Media cámara + +!Rocket +Rocket.motorCount.Nomotor = [Sin motores] +Rocket.compname.Rocket = Cohete + +!MotorMount +MotorMount.IgnitionEvent.AUTOMATIC = Automático (Lanzamiento o carga de eyección) +MotorMount.IgnitionEvent.LAUNCH = Lanzamiento +MotorMount.IgnitionEvent.EJECTION_CHARGE = Primera carga de eyección de la etapa previa +MotorMount.IgnitionEvent.BURNOUT = Primer encendido de la etapa previa +MotorMount.IgnitionEvent.NEVER = Nunca + +!ComponentIcons +ComponentIcons.Nosecone = Ojiva +ComponentIcons.Bodytube = Tubo del fuselaje +ComponentIcons.Transition = Transición +ComponentIcons.Trapezoidalfinset = Aleta en configuración trapezoidal +ComponentIcons.Ellipticalfinset = Aleta en configuración elíptica +ComponentIcons.Freeformfinset = Forma libre de aleta +ComponentIcons.Launchlug = Guía de lanzamiento +ComponentIcons.Innertube = Tubo interior +ComponentIcons.Tubecoupler = Tubo de acoplamiento +ComponentIcons.Centeringring = Arandela de centraje +ComponentIcons.Bulkhead = Media cámara +ComponentIcons.Engineblock = Tope motor +ComponentIcons.Parachute = Paracaídas +ComponentIcons.Streamer = Banderola +ComponentIcons.Shockcord = Tirante de suspensión +ComponentIcons.Masscomponent = Componente masa +ComponentIcons.disabled = (Desconectado) + +! StageAction +StageAction.Stage = Etapa + +! RecoveryDevice +RecoveryDevice.DeployEvent.LAUNCH = Lanzamiento (mas NN segundos) +RecoveryDevice.DeployEvent.EJECTION = Primera carga de eyección de esta etapa +RecoveryDevice.DeployEvent.APOGEE = Apogeo +RecoveryDevice.DeployEvent.ALTITUDE = Altura específica durante el descenso +RecoveryDevice.DeployEvent.NEVER = Nunca + +! FlightEvent +FlightEvent.Type.LAUNCH = Lanzamiento +FlightEvent.Type.IGNITION = Encendido del motor +FlightEvent.Type.LIFTOFF = Despegue +FlightEvent.Type.LAUNCHROD = Despeje de la varilla de lanzamiento +FlightEvent.Type.BURNOUT = Apagado del motor +FlightEvent.Type.EJECTION_CHARGE = Carga de eyección +FlightEvent.Type.STAGE_SEPARATION = Separación de etapa +FlightEvent.Type.APOGEE = Apogeo +FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT = Sistema de despliegue del sistema de recuperación +FlightEvent.Type.GROUND_HIT = Contacto con el suelo +FlightEvent.Type.SIMULATION_END = Fin de la simulación +FlightEvent.Type.ALTITUDE = Cambio de altura + +! ThrustCurveMotorColumns +TCurveMotorCol.MANUFACTURER = Fabricante +TCurveMotorCol.DESIGNATION = Designación +TCurveMotorCol.TYPE = Tipo +TCurveMotorCol.DIAMETER = Diámetro +TCurveMotorCol.LENGTH = Longitud + +! RocketInfo +RocketInfo.lengthLine.Length = Longitud +RocketInfo.lengthLine.maxdiameter = , max. Diámetro +RocketInfo.massText1 = Masa con motores +RocketInfo.massText2 = Masa sin motores +RocketInfo.at = a M= +RocketInfo.cgText = CG: +RocketInfo.cpText = CP: +RocketInfo.stabText = Estabilidad: +RocketInfo.Warning = Peligro: +RocketInfo.Calculating = Calculando... +RocketInfo.Apogee = Apogeo: +RocketInfo.Maxvelocity = Max. velocidad: +RocketInfo.Maxacceleration = Max. aceleración: +RocketInfo.apogeeValue = N/A +RocketInfo.Mach = (Mach +RocketInfo.velocityValue = N/A +RocketInfo.accelerationValue = N/A + +! FinSet +FinSet.CrossSection.SQUARE = Cuadrado +FinSet.CrossSection.ROUNDED = Redondo +FinSet.CrossSection.AIRFOIL = Superficie de sustentación +FinSet.TabRelativePosition.FRONT = Borde principal del extremo de anclaje +FinSet.TabRelativePosition.CENTER = Borde principal del anclaje +FinSet.TabRelativePosition.END = Borde principal de tracción + +! FlightDataType +FlightDataType.TYPE_TIME = Tiempo de quemado: +FlightDataType.TYPE_ALTITUDE = Altura específica durante el descenso +FlightDataType.TYPE_VELOCITY_Z = Velocidad vertical +FlightDataType.TYPE_ACCELERATION_Z = Aceleración vertical +FlightDataType.TYPE_VELOCITY_TOTAL = Velocidad total +FlightDataType.TYPE_ACCELERATION_TOTAL = Aceleración total +FlightDataType.TYPE_POSITION_X = Posición contra viento +FlightDataType.TYPE_POSITION_Y = Posición paralela al viento +FlightDataType.TYPE_POSITION_XY = Distancia lateral +FlightDataType.TYPE_POSITION_DIRECTION = Dirección lateral +FlightDataType.TYPE_VELOCITY_XY = Velocidad lateral +FlightDataType.TYPE_ACCELERATION_XY = Aceleración lateral +FlightDataType.TYPE_AOA = Ángulo de ataque: +FlightDataType.TYPE_ROLL_RATE = Relación de rotación +FlightDataType.TYPE_PITCH_RATE = Relación de pico +FlightDataType.TYPE_YAW_RATE = Relación de desvío +FlightDataType.TYPE_MASS = Masa +FlightDataType.TYPE_LONGITUDINAL_INERTIA = Momento de inercia longitudinal +FlightDataType.TYPE_ROTATIONAL_INERTIA = Momento de inercia rotacional +FlightDataType.TYPE_CP_LOCATION = CP situación +FlightDataType.TYPE_CG_LOCATION = CG situación +FlightDataType.TYPE_STABILITY = Calibración del margen de estabilidad +FlightDataType.TYPE_MACH_NUMBER = Número Mach +FlightDataType.TYPE_REYNOLDS_NUMBER = Número de Reynolds +FlightDataType.TYPE_THRUST_FORCE = Empuje +FlightDataType.TYPE_DRAG_FORCE = Fuerza de rozamiento +FlightDataType.TYPE_DRAG_COEFF = Coeficiente de rozamiento +FlightDataType.TYPE_AXIAL_DRAG_COEFF = Coeficiente de rozamiento axial +FlightDataType.TYPE_FRICTION_DRAG_COEFF = Coeficiente de rozamiento por fricción +FlightDataType.TYPE_PRESSURE_DRAG_COEFF = Presión del coeficiente de rozamiento +FlightDataType.TYPE_BASE_DRAG_COEFF = Coeficiente de rozamiento base +FlightDataType.TYPE_NORMAL_FORCE_COEFF = Coeficiente de rozamiento normal +FlightDataType.TYPE_PITCH_MOMENT_COEFF = Pico del coeficiente de rozamiento +FlightDataType.TYPE_YAW_MOMENT_COEFF = Coeficiente de rozamiento de desviación +FlightDataType.TYPE_SIDE_FORCE_COEFF = Coeficiente de fuerza lateral +FlightDataType.TYPE_ROLL_MOMENT_COEFF = Coeficiente del momento de rotación +FlightDataType.TYPE_ROLL_FORCING_COEFF = Fuerza del coeficiente de rotación +FlightDataType.TYPE_ROLL_DAMPING_COEFF = Disminución del coeficiente de rotación +FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF = Disminución del coeficiente de pico +FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF = Disminución del coeficiente de desviación +FlightDataType.TYPE_REFERENCE_LENGTH = Longitud de referencia: +FlightDataType.TYPE_REFERENCE_AREA = Área de referencia +FlightDataType.TYPE_ORIENTATION_THETA = Orientación vertical (zenit) +FlightDataType.TYPE_ORIENTATION_PHI = Orientación lateral (azimut) +FlightDataType.TYPE_WIND_VELOCITY = Velocidad del viento +FlightDataType.TYPE_AIR_TEMPERATURE = Temperatura del aire +FlightDataType.TYPE_AIR_PRESSURE = Presión del aire +FlightDataType.TYPE_SPEED_OF_SOUND = Velocidad del sonido +FlightDataType.TYPE_TIME_STEP = Simulación del tiempo de etapa +FlightDataType.TYPE_COMPUTATION_TIME = Cálculo del tiempo + +! PlotConfiguration +PlotConfiguration.Verticalmotion = Movimiento vertical vs. Tiempo +PlotConfiguration.Totalmotion = Movimiento total vs. Tiempo +PlotConfiguration.Flightside = Perfil lateral de vuelo +PlotConfiguration.Stability = Estabilidad vs. Tiempo +PlotConfiguration.Dragcoef = Coeficiente de rozamiento vs. Número Mach +PlotConfiguration.Rollcharacteristics = Características de rotación +PlotConfiguration.Angleofattack = Ángulo de orientación y ataque vs. Tiempo +PlotConfiguration.Simulationtime = Simulación del tiempo de etapa y cálculo del tiempo + +! Warning +Warning.LargeAOA.str1 = Evaluación de la amplitud del ángulo de ataque. +Warning.LargeAOA.str2 = Evaluación de la amplitud del ángulo de ataque ( +Warning.DISCONTINUITY = Discontinuidad en el diámetro del fuselaje. +Warning.THICK_FIN = Las aletas gruesas no están correctamente modeladas. +Warning.JAGGED_EDGED_FIN = las predicciones afiladas de la aleta pueden ser inexactas. +Warning.LISTENERS_AFFECTED = Los oyentes modificaron la simulación del vuelo +Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Sistema de recuperación abierto mientras el motor todavía empujaba +Warning.FILE_INVALID_PARAMETER = Parámetro no válido encontrado. Ignorarlo. diff --git a/l10n/messages_fr.properties b/l10n/messages_fr.properties new file mode 100644 index 00000000..d4c0972a --- /dev/null +++ b/l10n/messages_fr.properties @@ -0,0 +1,1180 @@ + +# +# French base translation file +# Translated by Tripoli France + + +! Set to the name of the current translation file (used for debugging purposes) +debug.currentFile = messages_fr.properties + +! RocketActions +RocketActions.checkbox.Donotaskmeagain = Ne plus me demander +RocketActions.lbl.Youcanchangedefop = Vous pouvez changer le mode opératoire par defaut dans les préferences. +RocketActions.showConfirmDialog.lbl1 = Supprimer les simulations sélectionnées? +RocketActions.showConfirmDialog.lbl2 = Cette opération n'est pas réversible. +RocketActions.showConfirmDialog.title = Effacer les simulations +RocketActions.DelCompAct.Delete = Effacer +RocketActions.DelCompAct.ttip.Delete = Effacer la pièce sélectionnée. +RocketActions.DelSimuAct.Delete = Effacer +RocketActions.DelSimuAct.ttip.Delete = Effacer la simulation sélectionnée. +RocketActions.DelAct.Delete = Effacer +RocketActions.DelAct.ttip.Delete = Effacer la pièce ou la simulation sélectionnée. +RocketActions.CutAction.Cut = Couper +RocketActions.CutAction.ttip.Cut = Couper cette pièce ou simulation, l'ajouter au presse papier et l'enlever du projet +RocketActions.CopyAct.Copy = Copier +RocketActions.CopyAct.ttip.Copy = Copier les pièces (et les pièces liées) dans le presse papier. +RocketActions.PasteAct.Paste = Coller +RocketActions.PasteAct.ttip.Paste = Coller la pièce ou simulation présente dans le presse papier dans le projet. +RocketActions.EditAct.Edit = Modifier +RocketActions.EditAct.ttip.Edit = Modifier la pièce sélectionnée. +RocketActions.NewStageAct.Newstage = Nouvel étage +RocketActions.NewStageAct.ttip.Newstage = Ajouter un nouvel étage au projet. +RocketActions.ActBoosterstage = Etage Booster +RocketActions.MoveUpAct.Moveup = Monter +RocketActions.MoveUpAct.ttip.Moveup = Monter la pièce. +RocketActions.MoveDownAct.Movedown = Descendre +RocketActions.MoveDownAct.ttip.Movedown = Descendre la pièce. + +! RocketPanel +RocketPanel.FigTypeAct.Sideview = Vue de coté +RocketPanel.FigTypeAct.ttip.Sideview = Vue de coté +RocketPanel.FigTypeAct.Backview = Vue arrière +RocketPanel.FigTypeAct.ttip.Backview = Vue arrière +RocketPanel.lbl.Motorcfg = Configuration Moteur: +RocketPanel.lbl.infoMessage = Cliquer pour sélectionner    Shift+cliquer pour sélectionner plusieurs    Double-cliquer pour modifier    Click+déplacer pour déplacer + + +! BasicFrame +BasicFrame.SimpleFileFilter1 = Tous les fichiers fusée (*.ork; *.rkt) +BasicFrame.SimpleFileFilter2 = Fichiers OpenRocket (*.ork) +BasicFrame.SimpleFileFilter3 = Fichiers RockSim (*.rkt) +BasicFrame.tab.Rocketdesign = Projet fusée +BasicFrame.tab.Flightsim = Simulations de vol +BasicFrame.title.Addnewcomp = Ajouter une nouvelle pièce +BasicFrame.item.Openrocketdesign = Ouvrir un projet fusée +BasicFrame.item.Openexamplerocketdesign = Ouvrir un exemple de projet fusée +BasicFrame.item.SavecurRocketdesign = Sauvegarder le projet fusée courant +BasicFrame.item.SavecurRocketdesnewfile = Sauvegarder le projet fusée courant dans un nouveau fichier +BasicFrame.item.Printpart = Imprimer la liste des pièces et les modèles d'ailerons +BasicFrame.item.Closedesign = Fermer le projet fusée courant +BasicFrame.item.Quitprogram = Quitter le programme +BasicFrame.menu.Rocketedt = Modification de la fusée +BasicFrame.dlg.lbl1 = Le projet ' +BasicFrame.dlg.lbl2 = ' N'a pas été sauvegardé. +BasicFrame.dlg.lbl3 = Voulez vous le sauvegarder? +BasicFrame.dlg.title = Projet non sauvegardé +BasicFrame.StageName.Sustainer = Sustainer +BasicFrame.WarningDialog.txt1 = Les problemes suivant sont survenus lors de l'ouverture de +BasicFrame.WarningDialog.txt2 = Certains elements du projet n'ont peut etre pas été chargé correctement. +BasicFrame.WarningDialog.title = Avertissement lors de l'ouverture du fichier + +! Labels used in buttons of dialog windows +button.ok = OK +button.cancel = Annuler +button.close = Fermer + +! Common labels used in buttons of dialog windows +dlg.but.ok = Accepter +dlg.but.cancel = Annuler +dlg.but.close = Fermer + +! About Dialog +AboutDialog.lbl.translation = Traduit en français par +AboutDialog.lbl.translator = Tripoli France +AboutDialog.lbl.translatorWebsite = http://tripoli.france.free.fr/ + +! Bug Report dialog +bugreport.dlg.title = Rapport d'erreurs +bugreport.dlg.but.Sendbugreport = Envoyer un rapport d'erreurs +bugreport.dlg.but.Sendbugreport.Ttip = Envoyer automatiquement un rapport d'erreurs aux developpeurs d'OpenRocket +bugreport.dlg.successmsg1 = Rapport d'erreurs envoyé avec succès. +bugreport.dlg.successmsg2 = Merci d'avoir contribué à l'amélioration d'OpenRocket! +bugreport.dlg.successmsg3 = Rapport d'erreurs envoyé +bugreport.dlg.connectedInternet = Si vous etes connecté sur Internet, vous pouvez tout simplement cliquer sur Envoyer un rapport d'erreurs. +bugreport.dlg.otherwise = Sinon envoyez le texte ci-dessous à l'adresse: +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. +bugreport.dlg.failedmsg1 = OpenRocket n'a pas réussi à envoyer le rapport d'erreur: +bugreport.dlg.failedmsg2 = S'il vous plait envoyez le rapport manuellement à +bugreport.dlg.failedmsg3 = Erreur d'envoi du rapport +bugreport.reportDialog.txt = Vous pouvez signaler une erreur avec OpenRocket en remplissant et en envoyant le message ci-dessous.
Vous pouvez egalement signaler des erreurs et inclure des pieces jointes sur le site web du projet. +bugreport.reportDialog.txt2 = S'il vous plait ajoutez une courte description de ce que vous faisiez lorsque l'erreur s'est produite. + + +! Debug log dialog +debuglogdlg.but.clear = Effacer +debuglogdlg.OpenRocketdebuglog = Fichier debug d'OpenRocket +debuglogdlg.Displayloglines = Afficher les numéros des lignes: +debuglogdlg.Follow = Suivre +debuglogdlg.col.Time = Heure +debuglogdlg.col.Level = Niveau +debuglogdlg.col.Location = Emplacement +debuglogdlg.col.Message = Message +debuglogdlg.lbl.Loglinenbr = Numéro de la ligne: +debuglogdlg.lbl.Time = Heure: +debuglogdlg.lbl.Level = Niveau: + + +! Edit Motor configuration dialog +edtmotorconfdlg.but.removemotor = Enlever le moteur +edtmotorconfdlg.but.Selectmotor = Choisir le moteur +edtmotorconfdlg.but.Removeconfiguration = Supprimer la configuration +edtmotorconfdlg.but.Newconfiguration = Nouvelle configuration +edtmotorconfdlg.lbl.Motormounts = Portes moteur: +edtmotorconfdlg.title.Editmotorconf = Changer la configuration moteur +edtmotorconfdlg.selectcomp = Choisir les pièces utilisées par le porte moteur: +edtmotorconfdlg.lbl.Motorconfig = Configurations moteur: +edtmotorconfdlg.lbl.Configname = Nom de la configuration: +edtmotorconfdlg.lbl.Leavenamedefault = Laisser le champ vide par défaut. + +! Example design dialog +exdesigndlg.but.open = Ouvrir +exdesigndlg.lbl.Selectexample = Chosir l'exemple de projet à ouvrir: +exdesigndlg.lbl.Openexampledesign = Ouvrir un exemple de projet +exdesigndlg.lbl.Exampledesignsnotfound = Impossible de trouver les exemples de projets. +exdesigndlg.lbl.Examplesnotfound = Exemples non trouvés + +! Print panel dialog +printdlg.but.saveaspdf = Sauvegarder en PDF +printdlg.but.preview = Prévisualisation +printdlg.but.settings = Configuration + +! Material edit panel +matedtpan.but.new = Nouveau +matedtpan.but.edit = Editer +matedtpan.but.delete = Effacer +matedtpan.but.revertall = Revenir aux valeurs précédente +matedtpan.col.Material = Matériaux +matedtpan.col.Type = Type +matedtpan.col.Density = Densité +matedtpan.col.but.ttip.New = Ajouter un nouveau matériau +matedtpan.title.Addcustmaterial = Ajouter un matériau personnalisé +matedtpan.but.ttip.edit = Modifier un matériau existant +matedtpan.title.Editmaterial = Modifier un matériau +matedtpan.title2.Editmaterial = Les matériaux prédéfinis ne peuvent pas être modifiés. +matedtpan.but.ttip.delete = Supprimer un matériau personnalisé +matedtpan.but.ttip.revertall = Supprimer tous les matériaux personnalisés +matedtpan.title.Deletealluser-defined = Effacer tous les matériaux personalisés? +matedtpan.title.Revertall = Revenir aux valeurs précédentes? +matedtpan.lbl.edtmaterials = Modifier les matériaux n'affectera pas les projets fusée existants. + +!MaterialModel +MaterialModel.title.Material = Matériau +MaterialModel.title.Defcustmat = Définir un matériau personnalisé + + +! Preference dialog +pref.dlg.but.add = Ajouter +pref.dlg.but.reset = Réinitialiser +pref.dlg.but.checknow = Vérifier maintenant +pref.dlg.but.defaultmetric = Système métrique +pref.dlg.but.defaultimperial = Système imperial +pref.dlg.title.Preferences = Préférences +pref.dlg.tab.Units = Unités +pref.dlg.tab.Defaultunits = Unités par défaut +pref.dlg.tab.Materials = Matériaux +pref.dlg.tab.Custommaterials = Matériaux personnalisés +pref.dlg.tab.Options = Options +pref.dlg.tab.Miscellaneousoptions = Autres options +pref.dlg.lbl.Positiontoinsert = Position pour insérer des composants internes: +pref.dlg.lbl.Confirmdeletion = Confirmer l'effacement des simulations: +pref.dlg.lbl.User-definedthrust = Courbes de poussée personnalisées: +pref.dlg.Allthrustcurvefiles = Tous les fichiers de courbes de poussée (*.eng; *.rse; *.zip; répertoires) +pref.dlg.RASPfiles = Fichiers moteur RASP (*.eng) +pref.dlg.RockSimfiles = Fichiers moteur RockSim (*.rse) +pref.dlg.ZIParchives = Archives ZIP (*.zip) +pref.dlg.checkbox.Checkupdates = Rechercher les mises à jour au démarrage +pref.dlg.ttip.Checkupdatesnow = Recherchez les mises à jour maintenant +pref.dlg.lbl.Selectprefunits = Choisissez vos unités favorites: +pref.dlg.lbl.Rocketdimensions = Dimensions de la fusée: +pref.dlg.lbl.Linedensity = Epaisseur des lignes: +pref.dlg.lbl.Motordimensions = Dimensions du moteur: +pref.dlg.lbl.Surfacedensity = Densité de la Surface: +pref.dlg.lbl.Distance = Distance: +pref.dlg.lbl.Bulkdensity = Densité apparente: +pref.dlg.lbl.Velocity = Vitesse: +pref.dlg.lbl.Surfaceroughness = Rugosité de la Surface: +pref.dlg.lbl.Acceleration = Accélération: +pref.dlg.lbl.Area = Surface: +pref.dlg.lbl.Mass = Masse: +pref.dlg.lbl.Angle = Angle: +pref.dlg.lbl.Force = Force: +pref.dlg.lbl.Rollrate = Taux de roulis: +pref.dlg.lbl.Totalimpulse = Impulsion totale: +pref.dlg.lbl.Temperature = Température: +pref.dlg.lbl.Momentofinertia = Moment d'inertie: +pref.dlg.lbl.Pressure = Pression: +pref.dlg.lbl.Stability = Stabilité: +pref.dlg.lbl.effect1 = Les changements prendront effet la prochaine fois que vous ouvrirez une fenêtre. +pref.dlg.lbl.Checkingupdates = Recherche des mises à jour... +pref.dlg.lbl.msg1 = Une erreur est survenue durant la communication avec le serveur. +pref.dlg.lbl.msg2 = Incapable de récupérer les informations de mise à jour +pref.dlg.lbl.msg3 = Vous utilisez la dernière version d'OpenRocket. +pref.dlg.lbl.msg4 = Pas de mises à jour disponible +pref.dlg.PrefChoiseSelector1 = Toujours demander +pref.dlg.PrefChoiseSelector2 = Insérer au milieu +pref.dlg.PrefChoiseSelector3 = Ajouter à la fin +pref.dlg.PrefBooleanSelector1 = Supprimer +pref.dlg.PrefBooleanSelector2 = Confirmer +pref.dlg.Add = Ajouter +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. + + +! Simulation edit dialog +simedtdlg.but.runsimulation = Lancer la simulation +simedtdlg.but.resettodefault = Restaurer les paramètres par défaut +simedtdlg.but.add = Ajouter +simedtdlg.but.remove = Enlever +simedtdlg.title.Editsim = Modifier la simulation +simedtdlg.lbl.Simname = Nom de la simulation: +simedtdlg.tab.Launchcond = Conditions de lancement +simedtdlg.tab.Simopt = Options de simulation +simedtdlg.tab.Plotdata = Tracer les données +simedtdlg.tab.Exportdata = Exporter les données +simedtdlg.lbl.Motorcfg = Configuration moteur: +simedtdlg.lbl.ttip.Motorcfg = Choisir la configuration moteur à utiliser. +simedtdlg.combo.ttip.motorconf = Choisir la configuration moteur à utiliser. +simedtdlg.lbl.Wind = Vent +simedtdlg.lbl.Averwindspeed = Vitesse moyenne du vent: +simedtdlg.lbl.ttip.Averwindspeed = Vitesse moyenne du vent par rapport au sol. +simedtdlg.lbl.Stddeviation = Dérive standard: +simedtdlg.lbl.ttip.Stddeviation = La dérive standard de la vitesse du vent.
La vitesse du vent est le double de l'écart-type de la moyenne dans 95% des cas. +simedtdlg.lbl.Turbulenceintensity = Intensité de la turbulence: +simedtdlg.lbl.ttip.Turbulenceintensity1 = L'intensité de la turbulence résulte de la division de la dérive par la vitesse moyenne de vent.
+simedtdlg.lbl.ttip.Turbulenceintensity2 = Les valeurs typiques vont de +simedtdlg.lbl.ttip.Turbulenceintensity3 = à +simedtdlg.border.Atmoscond = Conditions atmosphériques +simedtdlg.checkbox.InterStdAtmosphere = Utiliser les paramètres de l'Atmosphère Standard +simedtdlg.checkbox.ttip.InterStdAtmosphere1 = Sélectionner pour utiliser les paramètres de l'Atmosphère Standard.
Ce modèle à une température de +simedtdlg.checkbox.ttip.InterStdAtmosphere2 = et une pression de +simedtdlg.checkbox.ttip.InterStdAtmosphere3 = au niveau de la mer. +simedtdlg.lbl.Temperature = Température: +simedtdlg.lbl.ttip.Temperature = Température du site de lancement. +simedtdlg.lbl.Pressure = Pression: +simedtdlg.lbl.ttip.Pressure = Pression atmosphérique du site de lancement. +simedtdlg.lbl.Launchsite = Site de lancement +simedtdlg.lbl.Latitude = Latitude: +simedtdlg.lbl.ttip.Latitude = La latitude du site de lancement affecte l'attraction gravitationnelle de la Terre.
> Les valeurs positives sont dans l'hémisphère Nord, les valeurs négatives sur l'hémisphère Sud. +simedtdlg.lbl.Altitude = Altitude: +simedtdlg.lbl.ttip.Altitude = Altitude du site de lancement par rapport au niveau de la mer.
Cela affecte la position de la fusée dans le modèle atmosphérique. +simedtdlg.border.Launchrod = Rampe de lancement +simedtdlg.lbl.Length = Longueur: +simedtdlg.lbl.ttip.Length = Longueur de la rampe. +simedtdlg.lbl.Angle = Angle: +simedtdlg.lbl.ttip.Angle = Angle de la rampe de lancement par rapport à la verticale. +simedtdlg.lbl.Direction = Direction: +simedtdlg.lbl.ttip.Direction1 = Direction de la rampe de lance par rapport au vent.
+simedtdlg.lbl.ttip.Direction2 = = Face au vent, +simedtdlg.lbl.ttip.Direction3 = = vent arrière. +simedtdlg.border.Simopt = Options de simulation +simedtdlg.lbl.Calcmethod = Méthode de calcul: +simedtdlg.lbl.ttip.Calcmethod = La méthode Barrowman étendue calcule les forces aérodynamique selon
les équations de Barrowman étendues pour arranger plus de pièces. +simedtdlg.lbl.ExtBarrowman = Barrowman étendu +simedtdlg.lbl.Simmethod = Méthode de Simulation: +simedtdlg.lbl.ttip.Simmethod1 = Le simulateur de six degrés de liberté permet la liberté totale de fusée en vol.
+simedtdlg.lbl.ttip.Simmethod2 = Integration is performed using a 4th order Runge-Kutta 4 numerical integration. +simedtdlg.lbl.Timestep = Règlage du pas de temps: +simedtdlg.lbl.ttip.Timestep1 = Le temps entre les étapes de la simulation.
Avec un pas de temps plus petit la simulation est plus lente mais également plus précise.
+simedtdlg.lbl.ttip.Timestep2 = The 4th order simulation method is quite accurate with a time step of +simedtdlg.but.ttip.resettodefault = Réinitialiser le pas de temps à sa valeur par défaut ( +simedtdlg.border.Simlist = Auditeurs de simulation +simedtdlg.txt.longA1 = Les auditeurs de simulation sont une fonction avancé qui permet à l'utilisateur d'écrire du code pour suivre et interagir avec la simulation. +simedtdlg.txt.longA2 = Pour plus de détails sur les auditeurs de simulation, reférez vous à la documentation technique d'OpenRocket. +simedtdlg.lbl.Curlist = Auditeurs de simulation actuel: +simedtdlg.lbl.Addsimlist = Ajouter un "auditeur de simulation" +simedtdlg.lbl.Noflightdata = Aucune donnée de vol disponible. +simedtdlg.lbl.runsimfirst = S'il vous plait faites tourner la simulation d'abord. +simedtdlg.chart.Simflight = Vol simulé +simedtdlg.dlg.Simres = Résultats de la simulation +simedtdlg.IntensityDesc.None = Aucune +simedtdlg.IntensityDesc.Verylow = Très basse +simedtdlg.IntensityDesc.Low = Basse +simedtdlg.IntensityDesc.Medium = Moyenne +simedtdlg.IntensityDesc.High = Haute +simedtdlg.IntensityDesc.Veryhigh = Très haute +simedtdlg.IntensityDesc.Extreme = Extreme + + + + +! Simulation Panel +simpanel.but.newsimulation = Nouvelle simulation +simpanel.but.editsimulation = Modifier la simulation +simpanel.but.runsimulations = Lancer les simulations +simpanel.but.deletesimulations = Effacer les simulations +simpanel.but.plotexport = Tracer / exporter +simpanel.but.ttip.newsimulation = Ajouter une nouvelle simulation +simpanel.but.ttip.editsim = Modifier la simulation sélectionnée +simpanel.but.ttip.runsimu = Recommencer la simulation sélectionnée +simpanel.but.ttip.deletesim = Effacer les simulations sélectionnées +simpanel.checkbox.donotask = Ne plus me demander +simpanel.lbl.defpref = Vous pouvez changer le mode opératoire par défaut dans préferences. +simpanel.dlg.lbl.DeleteSim1 = Effacer les simulations sélectionnées? +simpanel.dlg.lbl.DeleteSim2 = Cette opération n'est pas réversible. +simpanel.dlg.lbl.DeleteSim3 = Effacer les simulations +simpanel.col.Name = Nom +simpanel.col.Motors = Moteurs +simpanel.col.Apogee = Apogée +simpanel.col.Maxvelocity = Vélocité Max. +simpanel.col.Maxacceleration = Accélération Max. +simpanel.col.Timetoapogee = Temps pour atteindre l'apogée +simpanel.col.Flighttime = Temps de vol +simpanel.col.Groundhitvelocity = Vitesse à l'atterrissage + +! SimulationRunDialog +SimuRunDlg.title.RunSim = Simulations en cour... +SimuRunDlg.lbl.Running = En cour ... +SimuRunDlg.lbl.Simutime = Temps de simulation: +SimuRunDlg.lbl.Altitude = Altitude: +SimuRunDlg.lbl.Velocity = Vélocité: +SimuRunDlg.msg.Unabletosim = Simulation impossible: +SimuRunDlg.msg.errorOccurred = Une erreur s'est produite durant la simulation: +SimuRunDlg.msg.AnException1 = Une exception s'est produite lors de la simulation: +SimuRunDlg.msg.AnException2 = S'il vous plaît faites un rapport d'erreurs avec les détails ci-dessous. +SimuRunDlg.msg.AssertionError1 = Une erreur de calcul s'est produite lors de la simulation. +SimuRunDlg.msg.AssertionError2 = S'il vous plaît faites un rapport d'erreurs avec les détails ci-dessous. +SimuRunDlg.msg.unknownerror1 = Une erreur inconnue s'est produite lors de la simulation. +SimuRunDlg.msg.unknownerror2 = Le programme peut être instable, vous devez enregistrer toutes vos créations et redémarrez OpenRocket maintenant! + + +! SimulationExportPanel +SimExpPan.desc = Fichiers dont les données sont séparées par une virgule (*.csv) +SimExpPan.border.Vartoexport = Variables à exporter +SimExpPan.but.Selectall = Tout sélectionner +SimExpPan.but.Selectnone = Ne rien sélectionner +SimExpPan.border.Fieldsep = Séparateur de champ +SimExpPan.lbl.Fieldsepstr = Séparateur de champ: +SimExpPan.lbl.longA1 = La chaîne utilisée pour séparer les champs dans le fichier exporté.
+SimExpPan.lbl.longA2 = Utiliser ',' pour un fichier (CSV). +SimExpPan.checkbox.Includesimudesc = Inclure la description de la simulation +SimExpPan.checkbox.ttip.Includesimudesc = Inclure un commentaire au début du fichier pour décrire la simulation. +SimExpPan.border.Comments = Commentaires +SimExpPan.checkbox.Includefielddesc = Inclure les descriptions des champs +SimExpPan.checkbox.ttip.Includefielddesc = Inclure une ligne de commentaire avec la description des variables exportées. +SimExpPan.checkbox.Incflightevents = Inclure les événements de vol +SimExpPan.checkbox.ttip.Incflightevents = Inclure une ligne de commentaire pour chaque évènement de vol. +SimExpPan.lbl.Commentchar = Symbole pour les commentaires: +SimExpPan.lbl.ttip.Commentchar = Le symbole utilisé pour une ligne de commentaires. +SimExpPan.but.Exporttofile = Exporter dans un fichier... +SimExpPan.Fileexists.desc1 = Le fichier \" +SimExpPan.Fileexists.desc2 = \" existe déjà. Ecraser? +SimExpPan.Fileexists.title = Le fichier existe +SimExpPan.ExportingVar.desc1 = Exporter 1 variable sur un total de +SimExpPan.ExportingVar.desc2 = Exportation +SimExpPan.ExportingVar.desc3 = variable sur un total de +SimExpPan.Col.Variable = Variable +SimExpPan.Col.Unit = Unité + +! MotorPlot +MotorPlot.title.Motorplot = Courbe du moteur +MotorPlot.but.Select = Selection +MotorPlot.Chart.Motorthrustcurve = Courbe de poussée moteur +MotorPlot.Chart.Time = Temps / s +MotorPlot.Chart.Thrust = Poussée / N +MotorPlot.txt.Designation = Désignation: +MotorPlot.txt.Manufacturer = Manufacturer: +MotorPlot.txt.Type = Type: +MotorPlot.txt.Delays = Retards: +MotorPlot.txt.Comment = Commentaires:\n + + + +! Simulation plot panel +simplotpanel.lbl.Presetplotconf = Prédéfinir les paramètres du tracé: +simplotpanel.lbl.Xaxistype = Axe des X: +simplotpanel.lbl.Unit = Unités: +simplotpanel.lbl.Yaxistypes = Axe des Y: +simplotpanel.lbl.Flightevents = Evénements du vol: +simplotpanel.but.All = Tous +simplotpanel.but.None = Aucun +simplotpanel.but.NewYaxisplottype = Nouveau type de tracé de l'axe Y +simplotpanel.but.Plotflight = Tracer le vol +simplotpanel.lbl.Axis = Axes: +simplotpanel.but.ttip.Removethisplot = Effacer le tracé +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. +simplotpanel.OptionPane.lbl1 = Un maximum de 15 tracés est permis. +simplotpanel.OptionPane.lbl2 = Impossible d'ajouter le tracé +simplotpanel.AUTO_NAME = Auto +simplotpanel.LEFT_NAME = Gauche +simplotpanel.RIGHT_NAME = Droite +simplotpanel.CUSTOM = Personnalisé + + + +! Component add buttons +compaddbuttons.Bodycompandfinsets = Pièces du corps et ailerons +compaddbuttons.Nosecone = Cône +compaddbuttons.Bodytube = Tube du\ncorps +compaddbuttons.Transition = Transition +compaddbuttons.Trapezoidal = Trapézoïdale +compaddbuttons.Elliptical = Elliptique +compaddbuttons.Freeform = Forme libre +compaddbuttons.Launchlug = Tube de\nguidage +compaddbuttons.Innercomponent = Pièces internes +compaddbuttons.Innertube = Tube interne +compaddbuttons.Coupler = Coupleur +compaddbuttons.Centeringring = Anneau de\ncentrage +compaddbuttons.Bulkhead = Cloison +compaddbuttons.Engineblock = Bague de\nrétention\nmoteur +compaddbuttons.Massobjects = Pièces pleines +compaddbuttons.Parachute = Parachute +compaddbuttons.Streamer = Banderole +compaddbuttons.Shockcord = Cordon\namortisseur +compaddbuttons.Masscomponent = Poids +compaddbuttons.Donotaskmeagain = Ne plus me poser la question +compaddbuttons.Selectcomppos = Position de la pièce +compaddbuttons.lbl.Youcanchange = Vous pouvez modifier le fonctionnement par défaut dans les préférences. +compaddbuttons.lbl.insertcomp = Insérez la pièce après l'élément actuel ou en tant que dernier élément? +compaddbuttons.askPosition.Inserthere = Ajouter ici +compaddbuttons.askPosition.Addtotheend = Ajouter à la fin +compaddbuttons.askPosition.Cancel = Annuler + +! Component Analysis Dialog +componentanalysisdlg.Componentanalysis = Analyse pièce +componentanalysisdlg.lbl.winddir = Direction du vent: +componentanalysisdlg.TitledBorder.warnings = Avertissements: +componentanalysisdlg.ToggleBut.worst = Pire +componentanalysisdlg.lbl.angleofattack = Angle d'attaque: +componentanalysisdlg.lbl.machnumber = Mach number: +componentanalysisdlg.lbl.rollrate = Taux de roulis: +componentanalysisdlg.lbl.activestages = Etages actifs: +componentanalysisdlg.lbl.motorconf = Configuration moteur: +componentanalysisdlg.TabStability.Col.Component = Pièce +componentanalysisdlg.TabStability = Stabilité +componentanalysisdlg.TabStability.ttip = Information de stabilité +componentanalysisdlg.dragTableModel.Col.Component = Pièce +componentanalysisdlg.dragTableModel.Col.Pressure = Pression CD +componentanalysisdlg.dragTableModel.Col.Base = Base CD +componentanalysisdlg.dragTableModel.Col.friction = Friction CD +componentanalysisdlg.dragTableModel.Col.total = Total CD +componentanalysisdlg.dragTabchar = Caractéristiques de traînée +componentanalysisdlg.dragTabchar.ttip = Caractéristiques de traînée +componentanalysisdlg.rollTableModel.Col.component = Pièce +componentanalysisdlg.rollTableModel.Col.rollforc = Coefficient de forçage de roulis +componentanalysisdlg.rollTableModel.Col.rolldamp = Coefficient amortisseur de roulis +componentanalysisdlg.rollTableModel.Col.total = Total Cl +componentanalysisdlg.rollTableModel = Dynamique du roulis +componentanalysisdlg.rollTableModel.ttip = Dynamique du roulis +componentanalysisdlg.println.closingmethod = Méthode de clôture appelée: +componentanalysisdlg.println.settingnam = SETTING NAN VALUES +componentanalysisdlg.lbl.reflenght = Longueur de référence: +componentanalysisdlg.lbl.refarea = Aire de référence: +!componentanalysisdlg.but.close =Fermer + +! Custom Material dialog +custmatdlg.title.Custommaterial = Matériau personnalisé +custmatdlg.lbl.Materialname = Nom du matériau: +custmatdlg.lbl.Materialtype = Type de matériau: +custmatdlg.lbl.Materialdensity = Densité du matériau: +custmatdlg.checkbox.Addmaterial = Ajouter la pièce dans la base de données + + +! Ring Component Config +ringcompcfg.OuterRadius = Diamètre extérieur +ringcompcfg.Automatic = Automatique +ringcompcfg.InnerRadius = Diamètre intérieur +ringcompcfg.Thickness = Epaisseur +ringcompcfg.Length = Longueur +ringcompcfg.Positionrelativeto = Position relative à: +ringcompcfg.plus = plus +!ringcompcfg.PositionValue = PositionValue +ringcompcfg.Radialdistance = Rayon: +ringcompcfg.Distancefrom = Distance de l'axe central de la fusée +ringcompcfg.Radialdirection = Azimut +ringcompcfg.radialdirectionfrom = Sens par rapport à l'axe central de la fusée +ringcompcfg.but.Reset = Réinitialisation +ringcompcfg.but.Resetcomponant = Réinitialiser la pièce à l'axe de la fusée +ringcompcfg.EngineBlock.desc = Un bloc moteur empêche le moteur de se déplacer vers l'avant dans le tube porte moteur.

Pour ajouter un moteur, créer un tube ou un tube interne et marquer le comme porte moteur dans l'onglet Moteur. +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. + + + +! Body Tube Config +BodyTubecfg.lbl.Bodytubelength = Longueur du tube: +BodyTubecfg.lbl.Outerdiameter = Diamètre externe: +BodyTubecfg.lbl.Innerdiameter = Diamètre interne: +BodyTubecfg.lbl.Wallthickness = Epaisseur des parois: +BodyTubecfg.tab.General = Général +BodyTubecfg.tab.Generalproperties = Propriétés générales +BodyTubecfg.tab.Motor = Moteur +BodyTubecfg.tab.Motormountconf = Configuration porte moteur +BodyTubecfg.checkbox.Automatic = Automatique +BodyTubecfg.checkbox.Filled = Aspérités bouchées + +! FinSetConfig +FinSetConfig.tab.Fintabs = Pattes des ailerons +FinSetConfig.tab.Through-the-wall = Ailerons traversant le fuselage +FinSetConfig.but.Converttofreeform = Convertir en forme libre +FinSetConfig.but.Converttofreeform.ttip = Convertir ce jeu d'ailerons en forme libre +FinSetConfig.Convertfinset = Convertir le jeu d'ailerons +FinSetConfig.but.Splitfins = Séparer les ailerons +FinSetConfig.but.Splitfins.ttip = Diviser le jeu d'ailerons en aileron indépendant +FinSetConfig.lbl.Through-the-wall = Ailerons traversant le fuselage: +FinSetConfig.lbl.Tablength = Longueur de la patte: +FinSetConfig.ttip.Tablength = La longueur de la patte de l'aileron. +FinSetConfig.lbl.Tabheight = Hauteur de la patte: +FinSetConfig.ttip.Tabheight = La hauteur de l'envergure de la patte de l'aileron. +FinSetConfig.lbl.Tabposition = Position de la patte: +FinSetConfig.ttip.Tabposition = La position de la patte de l'ailerons. +FinSetConfig.lbl.relativeto = relative à + +! MotorDatabaseLoadingDialog +MotorDbLoadDlg.title = Chargement des moteurs +MotorDbLoadDlg.Loadingmotors = Chargement des moteurs... + +! RocketConfig +RocketCfg.lbl.Designname = Nom du projet: +RocketCfg.lbl.Designer = Concepteur: +RocketCfg.lbl.Comments = Commentaires: +RocketCfg.lbl.Revisionhistory = Historique des modifications: +RocketCfg.lbl.Material = Matériaux: + +! ShockCordConfig +ShockCordCfg.lbl.Shockcordlength = Longueur du cordon amortisseur + +! RocketComponentConfig +RocketCompCfg.lbl.Componentname = Nom de la pièce: +RocketCompCfg.ttip.Thecomponentname = Le nom de la pièce. +RocketCompCfg.tab.Override = Forcer la valeur +RocketCompCfg.tab.MassandCGoverride = Forçage de la Masse et du CG +RocketCompCfg.tab.Figure = Forme +RocketCompCfg.tab.Figstyleopt = Options de la forme +RocketCompCfg.tab.Comment = Commentaires +RocketCompCfg.tab.Specifyacomment = Commentaires concernant la pièce +RocketCompCfg.lbl.Mass = Masse: +RocketCompCfg.lbl.Componentmass = Masse de la pièce: +RocketCompCfg.lbl.overriddento = (forcé à +RocketCompCfg.lbl.overriddenby = (forcé par +RocketCompCfg.lbl.Componentmaterial = Matériaux composant la pièce: +RocketCompCfg.lbl.Componentfinish = Finition de la pièce: +RocketCompCfg.lbl.ttip.componentmaterialaffects = Les matériaux utilisés pour la pièce affectent le poids de la pièce. +RocketCompCfg.combo.ttip.componentmaterialaffects = Les matériaux utilisés pour la pièce affectent le poids de la pièce. +RocketCompCfg.lbl.longA1 = La finition de la pièce affecte l'aérodynamisme de la pièce.
+RocketCompCfg.lbl.longA2 = La valeur indiquée est la hauteur moyenne de la rugosité de la surface. +RocketCompCfg.but.Setforall = Appliquer à tous +RocketCompCfg.but.ttip.Setforall = Régler la finition pour tous les composants de la fusée. +RocketCompCfg.lbl.Overridemassorcenter = Forcer la masse ou le centre de gravité du +RocketCompCfg.checkbox.Overridemass = Forcer la masse: +RocketCompCfg.checkbox.Overridecenterofgrav = Forcer le centre de gravité: +RocketCompCfg.checkbox.OverridemassandCG = Forcer la masse et le centre de gravité de tous les sous composants +RocketCompCfg.lbl.longB1 = Le forçage de la masse n'inclus pas le ou les moteurs.
+RocketCompCfg.lbl.longB2 = Le centre de gravité est mesuré à partir de l'extrémité avant de la fusée +RocketCompCfg.lbl.Commentsonthe = Commentaires à propos du +RocketCompCfg.lbl.Figurestyle = Modèle de forme: +RocketCompCfg.lbl.Componentcolor = Couleur de la pièce: +RocketCompCfg.lbl.Choosecolor = Choisir la couleur +RocketCompCfg.checkbox.Usedefaultcolor = Utiliser la couleur par défaut +RocketCompCfg.lbl.Complinestyle = Style de lignes pour les pièces: +RocketCompCfg.but.Saveasdefstyle = Sauver le modèle par défaut +RocketCompCfg.lbl.Diameter = Diamètre: +RocketCompCfg.lbl.Length = Longueur: +RocketCompCfg.lbl.Thickness = Epaisseur: +RocketCompCfg.checkbox.Endcapped = Arrière clos +RocketCompCfg.ttip.Endcapped = Whether the end of the shoulder is capped. +RocketCompCfg.title.Noseconeshoulder = accotement du cône +RocketCompCfg.title.Aftshoulder = accotement arrière +RocketCompCfg.border.Foreshoulder = Fore shoulder +!RocketCompCfg.lbl.Length = Length: + +! BulkheadConfig +BulkheadCfg.tab.Radius = Rayon: +BulkheadCfg.tab.Thickness = Epaisseur: +BulkheadCfg.tab.General = Général +BulkheadCfg.tab.Generalproperties = Propriétés générales + +!CenteringRingConfig +CenteringRingCfg.tab.Outerdiam = Diamètre externe: +CenteringRingCfg.tab.Innerdiam = Diamètre interne: +CenteringRingCfg.tab.Thickness = Epaisseur: +CenteringRingCfg.tab.General = Général +CenteringRingCfg.tab.Generalproperties = Propriétés Générales + +!ComponentConfigDialog +ComponentCfgDlg.configuration = configuration +ComponentCfgDlg.Modify = Modifier + +!EllipticalFinSetConfig +EllipticalFinSetCfg.Nbroffins = Nombre d'ailerons: +EllipticalFinSetCfg.Rotation = Rotation: +EllipticalFinSetCfg.Fincant = Inclinaison de l'aileron: +EllipticalFinSetCfg.Rootchord = Emplanture: +EllipticalFinSetCfg.Height = Hauteur: +EllipticalFinSetCfg.Positionrelativeto = Position relative à: +EllipticalFinSetCfg.plus = plus +EllipticalFinSetCfg.FincrossSection = Coupe de l'aileron: +EllipticalFinSetCfg.Thickness = Epaisseur: +EllipticalFinSetCfg.General = Général +EllipticalFinSetCfg.Generalproperties = Propriétés Générales +EllipticalFinSetCfg.ttip.Fincant = Angle d'inclinaison des ailerons par rapport au corps de la fusée + +!FreeformFinSetConfig +FreeformFinSetCfg.tab.General = Général +FreeformFinSetCfg.tab.ttip.General = Propriétés générales +FreeformFinSetCfg.tab.Shape = Forme +FreeformFinSetCfg.tab.ttip.Finshape = Forme de l'aileron +FreeformFinSetCfg.lbl.Numberoffins = Nombre d'ailerons: +FreeformFinSetCfg.lbl.Finrotation = Rotation des ailerons: +FreeformFinSetCfg.lbl.Fincant = Inclinaison de l'aileron: +FreeformFinSetCfg.lbl.ttip.Fincant = angle d'inclinaison des ailerons par rapport au corps de la fusée. +FreeformFinSetCfg.lbl.Posrelativeto = Position par rapport à: +FreeformFinSetCfg.lbl.plus = plus +FreeformFinSetCfg.lbl.FincrossSection = Coupe de l'aileron: +FreeformFinSetCfg.lbl.Thickness = Epaisseur: + +!InnerTubeConfig +InnerTubeCfg.tab.Motor = Moteur +InnerTubeCfg.tab.ttip.Motor = Configuration du porte moteur +InnerTubeCfg.tab.Cluster = Cluster +InnerTubeCfg.tab.ttip.Cluster = Configuration du cluster +InnerTubeCfg.tab.Radialpos = Position circulaire +InnerTubeCfg.tab.ttip.Radialpos = Position circulaire +InnerTubeCfg.lbl.Selectclustercfg = Choisir la configuration du cluster: +InnerTubeCfg.lbl.TubeSep = Séparation du tube: +InnerTubeCfg.lbl.ttip.TubeSep = La Séparation des tubes, 1.0 = chacun se touche +InnerTubeCfg.lbl.Rotation = Rotation: +InnerTubeCfg.lbl.ttip.Rotation = Angle de rotation du cluster +InnerTubeCfg.lbl.Rotangle = Angle de rotation de la configuration du cluster +InnerTubeCfg.but.Splitcluster = Séparer le cluster +InnerTubeCfg.lbl.longA1 = séparer le cluster en pièces distinctes.
+InnerTubeCfg.lbl.longA2 = Cela duplique également tous les composants rattacher à ce tube interne. +InnerTubeCfg.but.Resetsettings = Réinitialiser les réglages +InnerTubeCfg.but.ttip.Resetsettings = Réinitialiser la séparation et la rotation aux valeurs par défauts + +! LaunchLugConfig +LaunchLugCfg.lbl.Length = Longueur: +LaunchLugCfg.lbl.Outerdiam = Diamètre externe: +LaunchLugCfg.lbl.Innerdiam = Diamètre interne: +LaunchLugCfg.lbl.Thickness = Epaisseur: +LaunchLugCfg.lbl.Radialpos = Position circulaire: +LaunchLugCfg.lbl.Posrelativeto = Position relative à: +LaunchLugCfg.lbl.plus = plus +LaunchLugCfg.tab.General = Général +LaunchLugCfg.tab.Generalprop = Propriétés Générales + +! MassComponentConfig +MassComponentCfg.lbl.Mass = Masse +MassComponentCfg.lbl.Length = Longueur +MassComponentCfg.lbl.Diameter = Diamètre +MassComponentCfg.lbl.PosRelativeto = Position relative à: +MassComponentCfg.lbl.plus = plus +MassComponentCfg.tab.General = Général +MassComponentCfg.tab.ttip.General = Propriétés Générales +MassComponentCfg.tab.Radialpos = Position sur le périmètre +MassComponentCfg.tab.ttip.Radialpos = Configuration de la position sur le périmètre +MassComponentCfg.lbl.Radialdistance = Rayon: +MassComponentCfg.lbl.Radialdirection = Azimut: +MassComponentCfg.but.Reset = Réinitialiser + +! MotorConfig +MotorCfg.checkbox.compmotormount = Cette pièce est un porte moteur +MotorCfg.lbl.Motorcfg = Configuration du moteur: +MotorCfg.but.New = Nouveau +MotorCfg.lbl.Currentmotor = Moteur actuel: +MotorCfg.lbl.Motoroverhang = Surplomb du moteur: +MotorCfg.lbl.Ignitionat = Allumage à: +MotorCfg.lbl.plus = plus +MotorCfg.lbl.seconds = secondes +MotorCfg.lbl.longA1 = Le projet actuel n'a qu'un étage. +MotorCfg.lbl.longA2 = Des étages peuvent-être ajoutés en cliquant \"Nouvel étage\". +MotorCfg.lbl.longB1 = Le projet actuel a +MotorCfg.lbl.longB2 = étage(s). +MotorCfg.but.Selectmotor = Choisir le moteur +MotorCfg.but.Removemotor = Enlever le moteur +MotorCfg.lbl.motorLabel = Aucun + +! NoseConeConfig +NoseConeCfg.lbl.Noseconeshape = Forme du nez de la fusée: +NoseConeCfg.lbl.Shapeparam = Paramètre de la forme: +NoseConeCfg.lbl.Noseconelength = Longueur du nez de la fusée: +NoseConeCfg.lbl.Basediam = Diamètre de la base: +NoseConeCfg.checkbox.Automatic = Automatique +NoseConeCfg.lbl.Wallthickness = Epaisseur de la paroi: +NoseConeCfg.checkbox.Filled = Aspérités bouchées +NoseConeCfg.tab.General = Général +NoseConeCfg.tab.ttip.General = Propriétés générales +NoseConeCfg.tab.Shoulder = Accotement +NoseConeCfg.tab.ttip.Shoulder = Propriétés de l'accotement + +! ParachuteConfig +ParachuteCfg.lbl.Canopy = Canopée: +ParachuteCfg.lbl.Diameter = Diamètre: +ParachuteCfg.lbl.Material = Matériau: +ParachuteCfg.combo.MaterialModel = La nature du matériau affecte le poids de la pièce. +ParachuteCfg.lbl.longA1 = Coefficient de traînée CD: +ParachuteCfg.lbl.longB1 = Le coefficient de traînée dépend de la surface totale du parachute.
+ParachuteCfg.lbl.longB2 = Un plus grand coefficient de trainée produit une descente plus lente. +ParachuteCfg.lbl.longB3 = Une valeur standard pour le parachute est 0.8. +ParachuteCfg.but.Reset = Réinitialiser +ParachuteCfg.lbl.Shroudlines = Suspentes: +ParachuteCfg.lbl.Numberoflines = Nombre de suspentes: +ParachuteCfg.lbl.Linelength = Longueur des suspentes: +ParachuteCfg.lbl.Material = Matériau: +ParachuteCfg.lbl.Posrelativeto = Position relative à: +ParachuteCfg.lbl.plus = plus +ParachuteCfg.lbl.Packedlength = Longueur plié: +ParachuteCfg.lbl.Packeddiam = Diamètre plié: +ParachuteCfg.lbl.Deploysat = Déploiement à: +ParachuteCfg.lbl.seconds = secondes +ParachuteCfg.lbl.Altitude = Altitude: +ParachuteCfg.tab.General = Général +ParachuteCfg.tab.ttip.General = Propriétés générales +ParachuteCfg.tab.Radialpos = Position sur le périmètre +ParachuteCfg.tab.ttip.Radialpos = Configuration de la position radial +ParachuteCfg.lbl.Radialdistance = Rayon: +ParachuteCfg.lbl.Radialdirection = Azimut: +ParachuteCfg.but.Reset = Réinitialiser + +! ShockCordConfig +ShockCordCfg.lbl.Shockcordlength = Longueur du cordon amortisseur +ShockCordCfg.lbl.Shockcordmaterial = Matériau du cordon amortisseur: +ShockCordCfg.lbl.Posrelativeto = Position relative à: +ShockCordCfg.lbl.plus = plus +ShockCordCfg.lbl.Packedlength = Longueur emballé: +ShockCordCfg.lbl.Packeddiam = Diamètre emballé: +ShockCordCfg.tab.General = Général +ShockCordCfg.tab.ttip.General = Propriétés générales + +!SleeveConfig +SleeveCfg.tab.Outerdiam = Diamètre externe: +SleeveCfg.tab.Innerdiam = Diamètre interne: +SleeveCfg.tab.Wallthickness = Epaisseur des parois: +SleeveCfg.tab.Length = Longueur: +SleeveCfg.tab.General = Général +SleeveCfg.tab.Generalproperties = Propriétés générales + +! StreamerConfig +StreamerCfg.lbl.Striplength = Longueur de la bande: +StreamerCfg.lbl.Stripwidth = Largeur de la bande: +StreamerCfg.lbl.Striparea = Surface de la bande: +StreamerCfg.lbl.Aspectratio = Aspect ratio: +StreamerCfg.lbl.Material = Matériau: +StreamerCfg.combo.ttip.MaterialModel = La nature du matériau affecte le poids de la pièce. +StreamerCfg.lbl.longA1 = Coefficient de traînée CD: +StreamerCfg.lbl.longB1 = Le coefficient de trainée dépend de la surface totale de la banderole.
+StreamerCfg.lbl.longB2 = Un plus grand coefficient de trainée produit une descente plus lente. +StreamerCfg.lbl.Automatic = Automatique +StreamerCfg.lbl.longC1 = le coefficient de trainée dépend de la surface totale de la banderole. +StreamerCfg.lbl.Posrelativeto = Position relative à: +StreamerCfg.lbl.plus = plus +StreamerCfg.lbl.Packedlength = Longueur emballé: +StreamerCfg.lbl.Packeddiam = Diamètre emballé: +StreamerCfg.lbl.Deploysat = Déploiement à: +StreamerCfg.lbl.seconds = secondes +StreamerCfg.lbl.Altitude = Altitude: +StreamerCfg.tab.General = Général +StreamerCfg.tab.ttip.General = Propriétés générales +StreamerCfg.tab.Radialpos = Position sur le périmètre +StreamerCfg.tab.ttip.Radialpos = Configuration de la position sur le périmètre +StreamerCfg.lbl.Radialdistance = Rayon: +StreamerCfg.lbl.Radialdirection = Azimut: +StreamerCfg.but.Reset = Réinitialiser + +! ThicknessRingComponentConfig +ThicknessRingCompCfg.tab.Outerdiam = Diamètre externe: +ThicknessRingCompCfg.tab.Innerdiam = Diamètre interne: +ThicknessRingCompCfg.tab.Wallthickness = Epaisseur de la paroi: +ThicknessRingCompCfg.tab.Length = Longueur: +ThicknessRingCompCfg.tab.General = Général +ThicknessRingCompCfg.tab.Generalprop = Propriétés générales + +! TransitionConfig +TransitionCfg.lbl.Transitionshape = Forme de la transition: +TransitionCfg.checkbox.Clipped = Emboitée +TransitionCfg.lbl.Shapeparam = Paramètre de la forme: +TransitionCfg.lbl.Transitionlength = Longueur de la transition: +TransitionCfg.lbl.Forediam = Diamètre avant: +TransitionCfg.checkbox.Automatic = Automatique +TransitionCfg.lbl.Aftdiam = Diamètre arrière: +TransitionCfg.lbl.Wallthickness = Epaisseur de la paroi: +TransitionCfg.checkbox.Filled = Aspérités bouchées +TransitionCfg.tab.General = Général +TransitionCfg.tab.Generalproperties = Propriétés Générales +TransitionCfg.tab.Shoulder = Accotement +TransitionCfg.tab.Shoulderproperties = Propriétés de l'accotement + +! TrapezoidFinSetConfig +TrapezoidFinSetCfg.lbl.Nbroffins = Nombre d'ailerons: +TrapezoidFinSetCfg.lbl.ttip.Nbroffins = Le nombre d'ailerons composant le jeu. +TrapezoidFinSetCfg.lbl.Finrotation = Rotation de l'aileron: +TrapezoidFinSetCfg.lbl.ttip.Finrotation = Angle du premier aileron dans le jeu. +TrapezoidFinSetCfg.lbl.Fincant = Inclinaison de l'aileron: +TrapezoidFinSetCfg.lbl.ttip.Fincant = Angle d'inclinaison des ailerons par rapport au tube du corps de la fusée. +TrapezoidFinSetCfg.lbl.Rootchord = Longueur de la base de l'aileron: +TrapezoidFinSetCfg.lbl.Tipchord = Longueur du bout de l'aileron: +TrapezoidFinSetCfg.lbl.Height = Hauteur: +TrapezoidFinSetCfg.lbl.Sweeplength = Longueur du bord d'attaque: +TrapezoidFinSetCfg.lbl.Sweepangle = Angle du bord d'attaque: +TrapezoidFinSetCfg.lbl.FincrossSection = Coupe de l'aileron: +TrapezoidFinSetCfg.lbl.Thickness = Epaisseur: +TrapezoidFinSetCfg.lbl.Posrelativeto = Position relative à: +TrapezoidFinSetCfg.lbl.plus = plus +TrapezoidFinSetCfg.tab.General = Général +TrapezoidFinSetCfg.tab.Generalproperties = Propriétés générales + +!MotorConfigurationModel +MotorCfgModel.Editcfg = Modifier les configurations + +! StorageOptionChooser +StorageOptChooser.lbl.Simdatatostore = Données simulées à stocker: +StorageOptChooser.rdbut.Allsimdata = Toutes les données des simulations +StorageOptChooser.lbl.longA1 = Enregistrer toutes les données des simulations.
+StorageOptChooser.lbl.longA2 = Cela peut entraîner de très gros fichiers! +StorageOptChooser.rdbut.Every = Every +StorageOptChooser.lbl.longB1 = Store plottable values approximately this far apart.
+StorageOptChooser.lbl.longB2 = Des valeurs plus grandes produisent des fichiers plus petits. +StorageOptChooser.lbl.seconds = secondes +StorageOptChooser.rdbut.Onlyprimfig = Seuls les chiffres primaires +StorageOptChooser.lbl.longC1 = Stocker seulement les valeurs montrées dans le tableau récapitulatif.
+StorageOptChooser.lbl.longC2 = Cela produira des fichiers plus petit. +StorageOptChooser.checkbox.Compfile = Compresse le fichier +StorageOptChooser.lbl.UsingComp = Utiliser la compression réduit significativement la taille du fichier. +StorageOptChooser.lbl.longD1 = Une estimation sur la taille qu'aurait le fichier résultant avec les options actuelles. +StorageOptChooser.ttip.Saveopt = Options de sauvegarde +StorageOptChooser.lbl.Estfilesize = Taille estimée du fichier: +StorageOptChooser.lbl.Saveopt = Options de sauvegarde + +! ThrustCurveMotorSelectionPanel +TCMotorSelPan.lbl.Selrocketmotor = Choisir le moteur fusée: +TCMotorSelPan.checkbox.hideSimilar = Cacher les courbes de poussées similaires +TCMotorSelPan.SHOW_DESCRIPTIONS.desc1 = Montrer tous les moteurs +TCMotorSelPan.SHOW_DESCRIPTIONS.desc2 = Montrer les moteurs avec un diametre inferieur au porte moteur +TCMotorSelPan.SHOW_DESCRIPTIONS.desc3 = Montrer les moteurs avec un diametre egale au porte moteur +TCMotorSelPan.lbl.Motormountdia = Diametre du tube porte moteur: +TCMotorSelPan.lbl.Search = Rechercher: +TCMotorSelPan.lbl.Selectthrustcurve = Choisir la courbe de poussée: +TCMotorSelPan.lbl.Ejectionchargedelay = Retard de la charge d'ejection: +TCMotorSelPan.equalsIgnoreCase.None = Aucun +TCMotorSelPan.lbl.NumberofsecondsorNone = (Nombre de secondes ou \"Aucun\") +TCMotorSelPan.lbl.Totalimpulse = Impulsion totale: +TCMotorSelPan.lbl.Avgthrust = Poussée moyenne: +TCMotorSelPan.lbl.Maxthrust = Poussée Max.: +TCMotorSelPan.lbl.Burntime = Temps de combustion: +TCMotorSelPan.lbl.Launchmass = Masse au lancement: +TCMotorSelPan.lbl.Emptymass = Masse à vide: +TCMotorSelPan.lbl.Datapoints = Points de données: +TCMotorSelPan.lbl.Digest = Assimilation: +TCMotorSelPan.title.Thrustcurve = Courbe de poussée: +TCMotorSelPan.title.Thrust = Poussée +TCMotorSelPan.delayBox.None = Aucun + +! PlotDialog +PlotDialog.title.Flightdataplot = Tracé du vol +PlotDialog.Chart.Simulatedflight = Simulation du vol +PlotDialog.CheckBox.Showdatapoints = Afficher un point pour chaque valeur +PlotDialog.lbl.Chart = Cliquer+déplacer en bas +droite pour agrandir, haut+gauche pour rétrécir + +! "main" prefix is used for the main application dialog + +main.menu.file = Fichier +main.menu.file.new = Nouveau +main.menu.file.open = Ouvrir... +main.menu.file.openExample = Ouvrir exemple... +main.menu.file.save = Sauvegarder +main.menu.file.saveAs = Sauvegarder sous... +main.menu.file.print = Imprimer... +main.menu.file.close = Fermer +main.menu.file.quit = Quitter + +main.menu.edit = Editer +main.menu.edit.undo = Annuler modification +main.menu.edit.redo = Refaire modification +main.menu.edit.cut = Couper +main.menu.edit.copy = Copier +main.menu.edit.paste = Coller +main.menu.edit.delete = Effacer +main.menu.edit.preferences = Préférences + +main.menu.analyze = Analyse +main.menu.analyze.componentAnalysis = Analyse des Pièces + +main.menu.help = Aide +main.menu.help.license = Licence +main.menu.help.bugReport = Rapport d'erreurs +main.menu.help.debugLog = Debug log +main.menu.help.about = A propos + +main.menu.debug = Debug +main.menu.debug.whatisthismenu = Quel est ce menu? +main.menu.debug.createtestrocket = Créer une fusée test + +! database +! Translate here all material database +! + +! Material database +! BULK_MATERIAL +Databases.materials.Acrylic = Acrylique +Databases.materials.Balsa = Balsa +Databases.materials.Birch = Bouleau +Databases.materials.Cardboard = Carton +Databases.materials.Carbonfiber = Fibre de carbone +Databases.materials.Cork = Liège +Databases.materials.DepronXPS = Depron (XPS) +Databases.materials.Fiberglass = Fibre de verre +Databases.materials.Kraftphenolic = Kraft phénolique +Databases.materials.Maple = Érable +Databases.materials.Paperoffice = Papier (bureau) +Databases.materials.Pine = Pin +Databases.materials.Plywoodbirch = Contre-plaqué (bouleau) +Databases.materials.PolycarbonateLexan = Polycarbonate (Lexan) +Databases.materials.Polystyrene = Polystyrène +Databases.materials.PVC = PVC +Databases.materials.Spruce = Sapin +Databases.materials.StyrofoamgenericEPS = Polystyrène (générique EPS) +Databases.materials.StyrofoamBluefoamXPS = \"Mousse Bleue\" de polystyrène (XPS) +Databases.materials.Quantumtubing = Quantum tubing +!SURFACE_MATERIAL +Databases.materials.Ripstopnylon = Ripstop nylon +Databases.materials.Mylar = Mylar +Databases.materials.Polyethylenethin = Polyéthylène (fin) +Databases.materials.Polyethyleneheavy = Polyéthylène (lourd) +Databases.materials.Silk = Soie +Databases.materials.Paperoffice1 = Papier (bureau) +Databases.materials.Cellophane = Cellophane +Databases.materials.Crepepaper = Cr\u00eape paper +! LINE_MATERIAL +Databases.materials.Threadheavy-duty = Fil(résistant) +Databases.materials.Elasticcordround2mm = Corde Elastique (ronde 2mm, 1/16 in) +Databases.materials.Elasticcordflat6mm = Corde Elastique (plate 6mm, 1/4 in) +Databases.materials.Elasticcordflat12mm = Corde Elastique (plate 12mm, 1/2 in) +Databases.materials.Elasticcordflat19mm = Corde Elastique (plate 19mm, 3/4 in) +Databases.materials.Elasticcordflat25mm = Corde Elastique (plate 25mm, 1 in) +Databases.materials.Braidednylon2mm = Nylon tressé (2 mm, 1/16 in) +Databases.materials.Braidednylon3mm = Nylon tressé (3 mm, 1/8 in) +Databases.materials.Tubularnylon11mm = Nylon tubulaire (11 mm, 7/16 in) +Databases.materials.Tubularnylon14mm = Nylon tubulaire (14 mm, 9/16 in) +Databases.materials.Tubularnylon25mm = Nylon tubulaire (25 mm, 1 in) + +! ExternalComponent +ExternalComponent.Rough = Rugeuse +ExternalComponent.Unfinished = Non peinte +ExternalComponent.Regularpaint = Peinture classique +ExternalComponent.Smoothpaint = Fine couche +ExternalComponent.Polished = Polie + + +! LineStyle +LineStyle.Solid = Ligne pleine +LineStyle.Dashed = Tiret +LineStyle.Dotted = Ligne pointillée +LineStyle.Dash-dotted = Ligne Pointillée et Tiret +LineStyle.Defaultstyle = Style par défaut + +! Shape +Shape.Conical = Conique +Shape.Conical.desc1 = Un cône conique a un profil triangulaire. +Shape.Conical.desc2 = Une transition conique a des côtés droits. +Shape.Ogive = Ogive +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 ogive tangente, qui a une transition en douceur vers le tube de la fusée, des valeurs inférieures à 1 produisent des ogives sécantes. +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 ogive tangente, 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 ogives sécantes. +Shape.Ellipsoid = Ellipsoïde +Shape.Ellipsoid.desc1 = Un cône ellipsoïdal a un profil d'une demi ellipse dont les axes principaux sont de longueurs 2×la longueur et diamètre. +Shape.Ellipsoid.desc2 = Une transition ellipsoïdale a un profil d'une demi ellipse dont les axes principaux sont de longueurs 2×longueur et diamètre. Si la transition n'est pas coupée alors le profil est étendu au centre par le rayon correspondant. +Shape.Powerseries = Série Haute puissance +Shape.Powerseries.descA1 = Un cône de puissance a un profil de Rayon × (x / Longueur)k ou k est le paramètre de la forme. Pour k=0,5 c'est une +Shape.Powerseries.descA2 = -puissance ou une ogive parabolique, pour k=0,75 une +Shape.Powerseries.descA3 = -puissance, et pour k=1 un cône conique. +Shape.Powerseries.descB1 = Une transition de la série haute puissance a un profile de Rayon × (x / Longueur)k ou k est le paramètre de la forme. Pour k=0,5 la transition est +Shape.Powerseries.descB2 = -puissance ou parabolique, pour k=0,75 une +Shape.Powerseries.descB3 = -puissance, et pour k=1 conique. +Shape.Parabolicseries = Série parabolique +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 parabole pleine qui est tangent au tube de la fusée, 0,75 produit un 3/4 de parabole, 0,5 produit une 1/2 parabole et 0 produit un cône conique. +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 parabole pleine qui est tangent au tube de la fusée à l'extrémité arrière, 0,75 produit une 3/4 parabole, 0,5 produit une 1/2 parabole et 0 produit une transition conique. +Shape.Haackseries = Série Haack +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 LD-Haack ou un cône Von Karman, 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 LV-Haack, ce qui minimise la trainée pour une longueur et un volume fixe. +Shape.Haackseries.desc2 = Les cônes 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 LD-Haack ou Von Karman, tandis qu'une valeur de 0,333 produit une forme LV-Haack. + + +! RocketComponent +RocketComponent.Position.TOP = Haut de la pièce parent +RocketComponent.Position.MIDDLE = Milieu de la pièce parent(porteuse) +RocketComponent.Position.BOTTOM = Bas de la pièce parent +RocketComponent.Position.AFTER = Après la pièce parent +RocketComponent.Position.ABSOLUTE = Pointe de l'ogive + + +! LaunchLug +LaunchLug.Launchlug = Tube de guidage +! NoseCone +NoseCone.NoseCone = Ogive +! Transition +Transition.Transition = Transition +!Stage +Stage.Stage = Etage +! BodyTube +BodyTube.BodyTube = Tube du corps +! TubeCoupler +TubeCoupler.TubeCoupler = Coupleur de tube +!InnerTube +InnerTube.InnerTube = Tube interne +! TrapezoidFinSet +TrapezoidFinSet.TrapezoidFinSet = Ailerons Trapezoidaux +! FreeformFinSet +FreeformFinSet.FreeformFinSet = Ailerons personnalisés +!MassComponent +MassComponent.MassComponent = Poids +! Parachute +Parachute.Parachute = Parachute +! ShockCord +ShockCord.ShockCord = Cordon amortisseur +! Bulkhead +Bulkhead.Bulkhead = Cloison + +!Rocket +Rocket.motorCount.Nomotor = [aucun moteurs] +Rocket.compname.Rocket = Fusée + +!MotorMount +MotorMount.IgnitionEvent.AUTOMATIC = Automatique (lancement ou charge d'éjection) +MotorMount.IgnitionEvent.LAUNCH = Lancement +MotorMount.IgnitionEvent.EJECTION_CHARGE = Premiere charge d'ejection ou étage precedent +MotorMount.IgnitionEvent.BURNOUT = First burnout of previous stage +MotorMount.IgnitionEvent.NEVER = Jamais + +!ComponentIcons +ComponentIcons.Nosecone = Ogive +ComponentIcons.Bodytube = Tube +ComponentIcons.Transition = Transition +ComponentIcons.Trapezoidalfinset = Jeu d'ailerons de forme trapézoïdale +ComponentIcons.Ellipticalfinset = Jeu d'ailerons de forme elliptique +ComponentIcons.Freeformfinset = Jeu d'ailerons de forme personnalisé +ComponentIcons.Launchlug = Tube de guidage +ComponentIcons.Innertube = Tube interne +ComponentIcons.Tubecoupler = Coupleur de tube +ComponentIcons.Centeringring = Anneau de centrage +ComponentIcons.Bulkhead = Cloison +ComponentIcons.Engineblock = Bague de retension moteur +ComponentIcons.Parachute = Parachute +ComponentIcons.Streamer = Banderolle +ComponentIcons.Shockcord = Cordon amortisseur +ComponentIcons.Masscomponent = Mass component +ComponentIcons.disabled = (désactivé) + +! StageAction +StageAction.Stage = Etage + +! RecoveryDevice +RecoveryDevice.DeployEvent.LAUNCH = Lancement(plus NN secondes) +RecoveryDevice.DeployEvent.EJECTION = Première charge d'éjection de cet étage +RecoveryDevice.DeployEvent.APOGEE = Apogée +RecoveryDevice.DeployEvent.ALTITUDE = Altitude spécifiée durant la descente +RecoveryDevice.DeployEvent.NEVER = Jamais + +! FlightEvent +FlightEvent.Type.LAUNCH = Lancement +FlightEvent.Type.IGNITION = Allumage du moteur +FlightEvent.Type.LIFTOFF = Décollage +FlightEvent.Type.LAUNCHROD = Dégagement de rampe de lancement +FlightEvent.Type.BURNOUT = Fin de combustion du moteur +FlightEvent.Type.EJECTION_CHARGE = Charge d'éjection +FlightEvent.Type.STAGE_SEPARATION = Séparation d'étage +FlightEvent.Type.APOGEE = Apogée +FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT = Déploiement du dispositif de récupération +FlightEvent.Type.GROUND_HIT = Atterrissage +FlightEvent.Type.SIMULATION_END = Fin de la simulation +FlightEvent.Type.ALTITUDE = Changement d'altitude + +! ThrustCurveMotorColumns +TCurveMotorCol.MANUFACTURER = Fabricant +TCurveMotorCol.DESIGNATION = Désignation +TCurveMotorCol.TYPE = Type +TCurveMotorCol.DIAMETER = Diamètre +TCurveMotorCol.LENGTH = Longueur + +! RocketInfo +RocketInfo.lengthLine.Length = Longueur +RocketInfo.lengthLine.maxdiameter = , diamètre max. +RocketInfo.massText1 = Masse avec moteurs +RocketInfo.massText2 = Masse sans moteurs +RocketInfo.at = à M= +RocketInfo.cgText = CG: +RocketInfo.cpText = CP: +RocketInfo.stabText = Stabilité: +RocketInfo.Warning = Avertissement: +RocketInfo.Calculating = Calcul en cours... +RocketInfo.Apogee = Apogée: +RocketInfo.Maxvelocity = Vitesse Max.: +RocketInfo.Maxacceleration = Accélération Max.: +RocketInfo.apogeeValue = N/A +RocketInfo.Mach = (Mach +RocketInfo.velocityValue = N/A +RocketInfo.accelerationValue = N/A + +! FinSet +FinSet.CrossSection.SQUARE = Carré +FinSet.CrossSection.ROUNDED = Arondie +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 = Temps +FlightDataType.TYPE_ALTITUDE = Altitude +FlightDataType.TYPE_VELOCITY_Z = Vitesse verticale +FlightDataType.TYPE_ACCELERATION_Z = Accélération verticale +FlightDataType.TYPE_VELOCITY_TOTAL = Vitesse totale +FlightDataType.TYPE_ACCELERATION_TOTAL = Accélération totale +FlightDataType.TYPE_POSITION_X = Position contre le vent +FlightDataType.TYPE_POSITION_Y = Position parallèle au vent +FlightDataType.TYPE_POSITION_XY = Distance latérale +FlightDataType.TYPE_POSITION_DIRECTION = Direction latérale +FlightDataType.TYPE_VELOCITY_XY = Vitesse latérale +FlightDataType.TYPE_ACCELERATION_XY = Accélération latérale +FlightDataType.TYPE_AOA = Angle d'attaque +FlightDataType.TYPE_ROLL_RATE = Taux de roulis +FlightDataType.TYPE_PITCH_RATE = Taux de tangage +FlightDataType.TYPE_YAW_RATE = Taux d'embardée +FlightDataType.TYPE_MASS = Masse +FlightDataType.TYPE_LONGITUDINAL_INERTIA = Moment d'inertie longitudinale +FlightDataType.TYPE_ROTATIONAL_INERTIA = Moment d'inertie rotatif +FlightDataType.TYPE_CP_LOCATION = Emplacement du CP +FlightDataType.TYPE_CG_LOCATION = Emplacement du CG +FlightDataType.TYPE_STABILITY = Calibres marge de stabilité +FlightDataType.TYPE_MACH_NUMBER = Mach number +FlightDataType.TYPE_REYNOLDS_NUMBER = Nombre de Reynolds +FlightDataType.TYPE_THRUST_FORCE = Poussée +FlightDataType.TYPE_DRAG_FORCE = Force de traînée +FlightDataType.TYPE_DRAG_COEFF = Coefficient de traînée +FlightDataType.TYPE_AXIAL_DRAG_COEFF = Coefficient de trainée axiale +FlightDataType.TYPE_FRICTION_DRAG_COEFF = Coefficient de traînée de friction +FlightDataType.TYPE_PRESSURE_DRAG_COEFF = Coefficient de traînée de pression +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 = Longueur de référence +FlightDataType.TYPE_REFERENCE_AREA = Surface de référence +FlightDataType.TYPE_ORIENTATION_THETA = Orientation verticale (zénith) +FlightDataType.TYPE_ORIENTATION_PHI = Orientation latérale (azimut) +FlightDataType.TYPE_WIND_VELOCITY = Vitesse de vent +FlightDataType.TYPE_AIR_TEMPERATURE = Température de l'air +FlightDataType.TYPE_AIR_PRESSURE = Pression atmosphérique +FlightDataType.TYPE_SPEED_OF_SOUND = Vitesse du son +FlightDataType.TYPE_TIME_STEP = Pas de simulation du temps +FlightDataType.TYPE_COMPUTATION_TIME = Temps de calcul + +! PlotConfiguration +PlotConfiguration.Verticalmotion = Mouvement vertical par rapport au temps +PlotConfiguration.Totalmotion = Mouvement total par rapport au temps +PlotConfiguration.Flightside = Flight side profile +PlotConfiguration.Stability = Stabilité par rapport temps +PlotConfiguration.Dragcoef = Coefficients de traînée par rapport au Mach number +PlotConfiguration.Rollcharacteristics = Caractéristiques de roulis +PlotConfiguration.Angleofattack = Angle d'attaque et orientation par rapport au temps +PlotConfiguration.Simulationtime = Pas du temps et temps de calcul + +! Warning +Warning.LargeAOA.str1 = Grand angle d'attaque rencontré. +Warning.LargeAOA.str2 = Grand angle d'attaque rencontré ( +Warning.DISCONTINUITY = Discontinuité dans le diametre du corps de la fusée. +Warning.THICK_FIN = Les ailerons fin ne seront peut etre pas modélisés correctement. +Warning.JAGGED_EDGED_FIN = Jagged-edged fin predictions may be inaccurate. +Warning.LISTENERS_AFFECTED = Listeners modified the flight simulation +Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Le dispositif de récupération s'est ouvert alors que la combustion du moteur n'était pas finie. +Warning.FILE_INVALID_PARAMETER = Parametre invalide rencontré, ignorer. diff --git a/src/net/sf/openrocket/aerodynamics/Warning.java b/src/net/sf/openrocket/aerodynamics/Warning.java index 7981d37a..e44541c0 100644 --- a/src/net/sf/openrocket/aerodynamics/Warning.java +++ b/src/net/sf/openrocket/aerodynamics/Warning.java @@ -1,10 +1,13 @@ package net.sf.openrocket.aerodynamics; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; public abstract class Warning { - + private static final Translator trans = Application.getTranslator(); + /** * Return a Warning with the specific text. */ @@ -69,8 +72,10 @@ public abstract class Warning { @Override public String toString() { if (Double.isNaN(aoa)) - return "Large angle of attack encountered."; - return ("Large angle of attack encountered (" + + //// Large angle of attack encountered. + return trans.get("Warning.LargeAOA.str1"); + //// Large angle of attack encountered ( + return (trans.get("Warning.LargeAOA.str2") + UnitGroup.UNITS_ANGLE.getDefaultUnit().toString(aoa) + ")."); } @@ -129,26 +134,31 @@ public abstract class Warning { /** A Warning 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 Warning 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 Warning 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 Warning 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")); } diff --git a/src/net/sf/openrocket/database/Databases.java b/src/net/sf/openrocket/database/Databases.java index fe6abcbf..fae1eb47 100644 --- a/src/net/sf/openrocket/database/Databases.java +++ b/src/net/sf/openrocket/database/Databases.java @@ -1,5 +1,6 @@ package net.sf.openrocket.database; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.material.Material; import net.sf.openrocket.material.MaterialStorage; @@ -15,6 +16,7 @@ import net.sf.openrocket.util.Prefs; */ public class Databases { private static final LogHelper log = Application.getLogger(); + private static final Translator trans = Application.getTranslator(); /* Static implementations of specific databases: */ @@ -36,48 +38,59 @@ public class Databases { static { // Add default materials - BULK_MATERIAL.add(new Material.Bulk("Acrylic", 1190, false)); - BULK_MATERIAL.add(new Material.Bulk("Balsa", 170, false)); - BULK_MATERIAL.add(new Material.Bulk("Birch", 670, false)); - BULK_MATERIAL.add(new Material.Bulk("Cardboard", 680, false)); - BULK_MATERIAL.add(new Material.Bulk("Carbon fiber", 1780, false)); - BULK_MATERIAL.add(new Material.Bulk("Cork", 240, false)); - BULK_MATERIAL.add(new Material.Bulk("Depron (XPS)", 40, false)); - BULK_MATERIAL.add(new Material.Bulk("Fiberglass", 1850, false)); - BULK_MATERIAL.add(new Material.Bulk("Kraft phenolic", 950, false)); - BULK_MATERIAL.add(new Material.Bulk("Maple", 755, false)); - BULK_MATERIAL.add(new Material.Bulk("Paper (office)", 820, false)); - BULK_MATERIAL.add(new Material.Bulk("Pine", 530, false)); - BULK_MATERIAL.add(new Material.Bulk("Plywood (birch)", 630, false)); - BULK_MATERIAL.add(new Material.Bulk("Polycarbonate (Lexan)", 1200, false)); - BULK_MATERIAL.add(new Material.Bulk("Polystyrene", 1050, false)); - BULK_MATERIAL.add(new Material.Bulk("PVC", 1390, false)); - BULK_MATERIAL.add(new Material.Bulk("Spruce", 450, false)); - BULK_MATERIAL.add(new Material.Bulk("Styrofoam (generic EPS)", 20, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Acrylic"), 1190, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Balsa"), 170, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Birch"), 670, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Cardboard"), 680, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Carbonfiber"), 1780, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Cork"), 240, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.DepronXPS"), 40, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Fiberglass"), 1850, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Kraftphenolic"), 950, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Maple"), 755, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Paperoffice"), 820, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Pine"), 530, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Plywoodbirch"), 630, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.PolycarbonateLexan"), 1200, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Polystyrene"), 1050, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.PVC"), 1390, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Spruce"), 450, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.StyrofoamgenericEPS"), 20, false)); // BULK_MATERIAL.add(new Material.Bulk("Styrofoam (Blue foam, XPS)", 32, false)); - BULK_MATERIAL.add(new Material.Bulk("Styrofoam \"Blue foam\" (XPS)", 32, false)); - BULK_MATERIAL.add(new Material.Bulk("Quantum tubing", 1050, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.StyrofoamBluefoamXPS"), 32, false)); + BULK_MATERIAL.add(new Material.Bulk(trans.get("Databases.materials.Quantumtubing"), 1050, false)); - SURFACE_MATERIAL.add(new Material.Surface("Ripstop nylon", 0.067, false)); - SURFACE_MATERIAL.add(new Material.Surface("Mylar", 0.021, false)); - SURFACE_MATERIAL.add(new Material.Surface("Polyethylene (thin)", 0.015, false)); - SURFACE_MATERIAL.add(new Material.Surface("Polyethylene (heavy)", 0.040, false)); - SURFACE_MATERIAL.add(new Material.Surface("Silk", 0.060, false)); - SURFACE_MATERIAL.add(new Material.Surface("Paper (office)", 0.080, false)); - SURFACE_MATERIAL.add(new Material.Surface("Cellophane", 0.018, false)); - SURFACE_MATERIAL.add(new Material.Surface("Cr\u00eape paper", 0.025, false)); + SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Ripstopnylon"), 0.067, false)); + SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Mylar"), 0.021, false)); + SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Polyethylenethin"), 0.015, false)); + SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Polyethyleneheavy"), 0.040, false)); + SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Silk"), 0.060, false)); + SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Paperoffice"), 0.080, false)); + SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Cellophane"), 0.018, false)); + SURFACE_MATERIAL.add(new Material.Surface(trans.get("Databases.materials.Crepepaper"), 0.025, false)); - LINE_MATERIAL.add(new Material.Line("Thread (heavy-duty)", 0.0003, false)); - LINE_MATERIAL.add(new Material.Line("Elastic cord (round 2mm, 1/16 in)", 0.0018, false)); - LINE_MATERIAL.add(new Material.Line("Elastic cord (flat 6mm, 1/4 in)", 0.0043, false)); - LINE_MATERIAL.add(new Material.Line("Elastic cord (flat 12mm, 1/2 in)", 0.008, false)); - LINE_MATERIAL.add(new Material.Line("Elastic cord (flat 19mm, 3/4 in)", 0.0012, false)); - LINE_MATERIAL.add(new Material.Line("Elastic cord (flat 25mm, 1 in)", 0.0016, false)); - LINE_MATERIAL.add(new Material.Line("Braided nylon (2 mm, 1/16 in)", 0.001, false)); - LINE_MATERIAL.add(new Material.Line("Braided nylon (3 mm, 1/8 in)", 0.0035, false)); - LINE_MATERIAL.add(new Material.Line("Tubular nylon (11 mm, 7/16 in)", 0.013, false)); - LINE_MATERIAL.add(new Material.Line("Tubular nylon (14 mm, 9/16 in)", 0.016, false)); - LINE_MATERIAL.add(new Material.Line("Tubular nylon (25 mm, 1 in)", 0.029, false)); + //// Thread (heavy-duty) + LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Threadheavy-duty"), 0.0003, false)); + //// Elastic cord (round 2mm, 1/16 in) + LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Elasticcordround2mm"), 0.0018, false)); + //// Elastic cord (flat 6mm, 1/4 in) + LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Elasticcordflat6mm"), 0.0043, false)); + //// Elastic cord (flat 12mm, 1/2 in) + LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Elasticcordflat12mm"), 0.008, false)); + //// Elastic cord (flat 19mm, 3/4 in) + LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Elasticcordflat19mm"), 0.0012, false)); + //// Elastic cord (flat 25mm, 1 in) + LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Elasticcordflat25mm"), 0.0016, false)); + //// Braided nylon (2 mm, 1/16 in) + LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Braidednylon2mm"), 0.001, false)); + //// Braided nylon (3 mm, 1/8 in) + LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Braidednylon3mm"), 0.0035, false)); + //// Tubular nylon (11 mm, 7/16 in) + LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Tubularnylon11mm"), 0.013, false)); + //// Tubular nylon (14 mm, 9/16 in) + LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Tubularnylon14mm"), 0.016, false)); + //// Tubular nylon (25 mm, 1 in) + LINE_MATERIAL.add(new Material.Line(trans.get("Databases.materials.Tubularnylon25mm"), 0.029, false)); // Add user-defined materials diff --git a/src/net/sf/openrocket/gui/StorageOptionChooser.java b/src/net/sf/openrocket/gui/StorageOptionChooser.java index dc9901b0..49b21974 100644 --- a/src/net/sf/openrocket/gui/StorageOptionChooser.java +++ b/src/net/sf/openrocket/gui/StorageOptionChooser.java @@ -22,8 +22,10 @@ import net.sf.openrocket.document.Simulation; import net.sf.openrocket.document.StorageOptions; import net.sf.openrocket.file.RocketSaver; import net.sf.openrocket.file.openrocket.OpenRocketSaver; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.simulation.FlightData; import net.sf.openrocket.simulation.FlightDataBranch; +import net.sf.openrocket.startup.Application; public class StorageOptionChooser extends JPanel { @@ -43,6 +45,7 @@ public class StorageOptionChooser extends JPanel { private boolean artificialEvent = false; + private static final Translator trans = Application.getTranslator(); public StorageOptionChooser(OpenRocketDocument doc, StorageOptions opts) { super(new MigLayout()); @@ -67,19 +70,25 @@ public class StorageOptionChooser extends JPanel { ButtonGroup buttonGroup = new ButtonGroup(); String tip; - this.add(new JLabel("Simulated data to store:"), "spanx, wrap unrel"); + //// Simulated data to store: + this.add(new JLabel(trans.get("StorageOptChooser.lbl.Simdatatostore")), "spanx, wrap unrel"); - allButton = new JRadioButton("All simulated data"); - allButton.setToolTipText("Store all simulated data.
" + - "This can result in very large files!"); + //// All simulated data + allButton = new JRadioButton(trans.get("StorageOptChooser.rdbut.Allsimdata")); + //// Store all simulated data.
+ //// 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 = "Store plottable values approximately this far apart.
" + - "Larger values result in smaller files."; + //// Every + someButton = new JRadioButton(trans.get("StorageOptChooser.rdbut.Every")); + //// Store plottable values approximately this far apart.
" + //// Larger values result in smaller files. + tip = trans.get("StorageOptChooser.lbl.longB1") + + trans.get("StorageOptChooser.lbl.longB2"); someButton.setToolTipText(tip); buttonGroup.add(someButton); someButton.addActionListener(actionUpdater); @@ -98,36 +107,42 @@ public class StorageOptionChooser extends JPanel { this.add(timeSpinner, "wmin 55lp"); timeSpinner.addChangeListener(changeUpdater); - JLabel label = new JLabel("seconds"); + //// seconds + JLabel label = new JLabel(trans.get("StorageOptChooser.lbl.seconds")); label.setToolTipText(tip); this.add(label, "wrap rel"); - - noneButton = new JRadioButton("Only primary figures"); - noneButton.setToolTipText("Store only the values shown in the summary table.
" + - "This results in the smallest files."); + //// Only primary figures + noneButton = new JRadioButton(trans.get("StorageOptChooser.rdbut.Onlyprimfig")); + //// Store only the values shown in the summary table.
+ //// This results in the smallest files. + noneButton.setToolTipText(trans.get("StorageOptChooser.lbl.longC1") + + trans.get("StorageOptChooser.lbl.longC2")); buttonGroup.add(noneButton); noneButton.addActionListener(actionUpdater); this.add(noneButton, "spanx, wrap 20lp"); - - compressButton = new JCheckBox("Compress file"); - compressButton.setToolTipText("Using compression reduces the file size significantly."); + //// Compress file + compressButton = new JCheckBox(trans.get("StorageOptChooser.checkbox.Compfile")); + //// Using compression reduces the file size significantly. + compressButton.setToolTipText(trans.get("StorageOptChooser.lbl.UsingComp")); compressButton.addActionListener(actionUpdater); this.add(compressButton, "spanx, wrap para"); // Estimate is updated in loadOptions(opts) estimateLabel = new JLabel(""); - estimateLabel.setToolTipText("An estimate on how large the resulting file would " + - "be with the present options."); + //// An estimate on how large the resulting file would + //// be with the present options. + estimateLabel.setToolTipText(trans.get("StorageOptChooser.lbl.longD1")); this.add(estimateLabel, "spanx"); this.setBorder(BorderFactory.createCompoundBorder( BorderFactory.createEmptyBorder(0, 10, 0, 0), - BorderFactory.createTitledBorder("Save options"))); + //// Save options + BorderFactory.createTitledBorder(trans.get("StorageOptChooser.ttip.Saveopt")))); loadOptions(opts); } @@ -202,7 +217,8 @@ public class StorageOptionChooser extends JPanel { formatted = size + " kB"; } - estimateLabel.setText("Estimated file size: " + formatted); + //// Estimated file size: + estimateLabel.setText(trans.get("StorageOptChooser.lbl.Estfilesize") + " " + formatted); } @@ -256,7 +272,8 @@ public class StorageOptionChooser extends JPanel { StorageOptionChooser chooser = new StorageOptionChooser(document, options); - if (JOptionPane.showConfirmDialog(parent, chooser, "Save options", + //// Save options + if (JOptionPane.showConfirmDialog(parent, chooser, trans.get("StorageOptChooser.lbl.Saveopt"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE) != JOptionPane.OK_OPTION) { // User cancelled diff --git a/src/net/sf/openrocket/gui/adaptors/MaterialModel.java b/src/net/sf/openrocket/gui/adaptors/MaterialModel.java index 1defc447..a914df00 100644 --- a/src/net/sf/openrocket/gui/adaptors/MaterialModel.java +++ b/src/net/sf/openrocket/gui/adaptors/MaterialModel.java @@ -11,10 +11,12 @@ import net.sf.openrocket.database.Database; import net.sf.openrocket.database.DatabaseListener; import net.sf.openrocket.database.Databases; import net.sf.openrocket.gui.dialogs.CustomMaterialDialog; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.ComponentChangeEvent; import net.sf.openrocket.rocketcomponent.ComponentChangeListener; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.Reflection; public class MaterialModel extends AbstractListModel implements @@ -31,9 +33,12 @@ public class MaterialModel extends AbstractListModel implements private final Reflection.Method getMethod; private final Reflection.Method setMethod; + private static final Translator trans = Application.getTranslator(); public MaterialModel(Component parent, RocketComponent component, Material.Type type) { + //// Material + //this(parent, component, type, trans.get("MaterialModel.title.Material")); this(parent, component, type, "Material"); } @@ -94,7 +99,8 @@ public class MaterialModel extends AbstractListModel implements CustomMaterialDialog dialog = new CustomMaterialDialog( SwingUtilities.getWindowAncestor(parentComponent), (Material) getSelectedItem(), true, - "Define custom material"); + //// Define custom material + trans.get("MaterialModel.title.Defcustmat")); dialog.setVisible(true); diff --git a/src/net/sf/openrocket/gui/adaptors/MotorConfigurationModel.java b/src/net/sf/openrocket/gui/adaptors/MotorConfigurationModel.java index 5c013487..d2b2a9fc 100644 --- a/src/net/sf/openrocket/gui/adaptors/MotorConfigurationModel.java +++ b/src/net/sf/openrocket/gui/adaptors/MotorConfigurationModel.java @@ -14,13 +14,16 @@ import javax.swing.event.ListDataListener; import net.sf.openrocket.gui.dialogs.EditMotorConfigurationDialog; import net.sf.openrocket.gui.main.BasicFrame; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.ComponentChangeEvent; import net.sf.openrocket.rocketcomponent.Configuration; import net.sf.openrocket.rocketcomponent.Rocket; +import net.sf.openrocket.startup.Application; public class MotorConfigurationModel implements ComboBoxModel, ChangeListener { + private static final Translator trans = Application.getTranslator(); - private static final String EDIT = "Edit configurations"; + private static final String EDIT = trans.get("MotorCfgModel.Editcfg"); private EventListenerList listenerList = new EventListenerList(); diff --git a/src/net/sf/openrocket/gui/components/SimulationExportPanel.java b/src/net/sf/openrocket/gui/components/SimulationExportPanel.java index f3323114..62f79d6d 100644 --- a/src/net/sf/openrocket/gui/components/SimulationExportPanel.java +++ b/src/net/sf/openrocket/gui/components/SimulationExportPanel.java @@ -25,9 +25,11 @@ import javax.swing.table.TableColumnModel; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.document.Simulation; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.simulation.FlightData; import net.sf.openrocket.simulation.FlightDataBranch; import net.sf.openrocket.simulation.FlightDataType; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.Unit; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.GUIUtil; @@ -38,11 +40,13 @@ public class SimulationExportPanel extends JPanel { private static final String SPACE = "SPACE"; private static final String TAB = "TAB"; + private static final Translator trans = Application.getTranslator(); private static final FileFilter CSV_FILE_FILTER = new FileFilter() { @Override public String getDescription() { - return "Comma Separated Files (*.csv)"; + //// Comma Separated Files (*.csv) + return trans.get("SimExpPan.desc"); } @Override public boolean accept(File f) { @@ -147,12 +151,12 @@ public class SimulationExportPanel extends JPanel { // Add table panel = new JPanel(new MigLayout("fill")); - panel.setBorder(BorderFactory.createTitledBorder("Variables to export")); + panel.setBorder(BorderFactory.createTitledBorder(trans.get("SimExpPan.border.Vartoexport"))); panel.add(new JScrollPane(table), "wmin 300lp, width 300lp, height 1, grow 100, wrap"); // Select all/none buttons - button = new JButton("Select all"); + button = new JButton(trans.get("SimExpPan.but.Selectall")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -161,7 +165,7 @@ public class SimulationExportPanel extends JPanel { }); panel.add(button, "split 2, growx 1, sizegroup selectbutton"); - button = new JButton("Select none"); + button = new JButton(trans.get("SimExpPan.but.Selectnone")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -181,11 +185,13 @@ public class SimulationExportPanel extends JPanel { // Field separator panel panel = new JPanel(new MigLayout("fill")); - panel.setBorder(BorderFactory.createTitledBorder("Field separator")); + panel.setBorder(BorderFactory.createTitledBorder(trans.get("SimExpPan.border.Fieldsep"))); - label = new JLabel("Field separator string:"); - tip = "The string used to separate the fields in the exported file.
" + - "Use ',' for a Comma Separated Values (CSV) file."; + label = new JLabel(trans.get("SimExpPan.lbl.Fieldsepstr")); + //// The string used to separate the fields in the exported file.
+ //// Use ',' for a Comma Separated Values (CSV) file. + tip = trans.get("SimExpPan.lbl.longA1") + + trans.get("SimExpPan.lbl.longA2"); label.setToolTipText(tip); panel.add(label); @@ -203,31 +209,33 @@ public class SimulationExportPanel extends JPanel { // Comments separator panel panel = new JPanel(new MigLayout("fill")); - panel.setBorder(BorderFactory.createTitledBorder("Comments")); + //// Comments + panel.setBorder(BorderFactory.createTitledBorder(trans.get("SimExpPan.border.Comments"))); - simulationComments = new JCheckBox("Include simulation description"); - simulationComments.setToolTipText("Include a comment at the beginning of the file " + - "describing the simulation."); + //// Include simulation description + simulationComments = new JCheckBox(trans.get("SimExpPan.checkbox.Includesimudesc")); + //// Include a comment at the beginning of the file describing the simulation. + simulationComments.setToolTipText(trans.get("SimExpPan.checkbox.ttip.Includesimudesc")); simulationComments.setSelected(Prefs.getBoolean(Prefs.EXPORT_SIMULATION_COMMENT, true)); panel.add(simulationComments, "wrap"); - - fieldNameComments = new JCheckBox("Include field descriptions"); - fieldNameComments.setToolTipText("Include a comment line with the descriptions of " + - "the exported variables."); + //// Include field descriptions + fieldNameComments = new JCheckBox(trans.get("SimExpPan.checkbox.Includefielddesc")); + //// Include a comment line with the descriptions of the exported variables. + fieldNameComments.setToolTipText(trans.get("SimExpPan.checkbox.ttip.Includefielddesc")); fieldNameComments.setSelected(Prefs.getBoolean(Prefs.EXPORT_FIELD_NAME_COMMENT, true)); panel.add(fieldNameComments, "wrap"); - eventComments = new JCheckBox("Include flight events"); - eventComments.setToolTipText("Include a comment line for every flight event."); + eventComments = new JCheckBox(trans.get("SimExpPan.checkbox.Incflightevents")); + eventComments.setToolTipText(trans.get("SimExpPan.checkbox.ttip.Incflightevents")); eventComments.setSelected(Prefs.getBoolean(Prefs.EXPORT_EVENT_COMMENTS, true)); panel.add(eventComments, "wrap"); - label = new JLabel("Comment character:"); - tip = "The character(s) that mark a comment line."; + label = new JLabel(trans.get("SimExpPan.lbl.Commentchar")); + tip = trans.get("SimExpPan.lbl.ttip.Commentchar"); label.setToolTipText(tip); panel.add(label, "split 2"); @@ -246,7 +254,7 @@ public class SimulationExportPanel extends JPanel { // Export button - button = new JButton("Export to file..."); + button = new JButton(trans.get("SimExpPan.but.Exporttofile")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -277,9 +285,13 @@ public class SimulationExportPanel extends JPanel { } if (file.exists()) { - int ret = JOptionPane.showConfirmDialog(this, - "File \"" + file.getName() + "\" exists. Overwrite?", - "File exists", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); + int ret = JOptionPane.showConfirmDialog(this, + //// File + trans.get("SimExpPan.Fileexists.desc1") + file.getName() + + //// \" exists. Overwrite? + trans.get("SimExpPan.Fileexists.desc2"), + //// File exists + trans.get("SimExpPan.Fileexists.title"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if (ret != JOptionPane.YES_OPTION) return; } @@ -340,9 +352,13 @@ public class SimulationExportPanel extends JPanel { } if (n == 1) { - str = "Exporting 1 variable out of " + total + "."; + //// Exporting 1 variable out of + str = trans.get("SimExpPan.ExportingVar.desc1") + " " + total + "."; } else { - str = "Exporting "+n+" variables out of " + total + "."; + //// Exporting + //// variables out of + str = trans.get("SimExpPan.ExportingVar.desc2") + " "+n+" " + + trans.get("SimExpPan.ExportingVar.desc3") + " " + total + "."; } selectedCountLabel.setText(str); @@ -407,9 +423,11 @@ public class SimulationExportPanel extends JPanel { case SELECTED: return ""; case NAME: - return "Variable"; + //// Variable + return trans.get("SimExpPan.Col.Variable"); case UNIT: - return "Unit"; + //// Unit + return trans.get("SimExpPan.Col.Unit"); default: throw new IndexOutOfBoundsException("column=" + column); } diff --git a/src/net/sf/openrocket/gui/components/StageSelector.java b/src/net/sf/openrocket/gui/components/StageSelector.java index 5b5e78ae..13a98890 100644 --- a/src/net/sf/openrocket/gui/components/StageSelector.java +++ b/src/net/sf/openrocket/gui/components/StageSelector.java @@ -11,7 +11,9 @@ import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import net.miginfocom.swing.MigLayout; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.Configuration; +import net.sf.openrocket.startup.Application; public class StageSelector extends JPanel implements ChangeListener { @@ -62,6 +64,7 @@ public class StageSelector extends JPanel implements ChangeListener { private class StageAction extends AbstractAction implements ChangeListener { private final int stage; + private final Translator trans = Application.getTranslator(); public StageAction(final int stage) { this.stage = stage; @@ -72,7 +75,8 @@ public class StageSelector extends JPanel implements ChangeListener { @Override public Object getValue(String key) { if (key.equals(NAME)) { - return "Stage "+(stage+1); + //// Stage + return trans.get("StageAction.Stage") + " " + (stage+1); } return super.getValue(key); } diff --git a/src/net/sf/openrocket/gui/configdialog/BodyTubeConfig.java b/src/net/sf/openrocket/gui/configdialog/BodyTubeConfig.java index ebc490ac..f876d6fa 100644 --- a/src/net/sf/openrocket/gui/configdialog/BodyTubeConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/BodyTubeConfig.java @@ -7,9 +7,11 @@ import net.sf.openrocket.gui.adaptors.BooleanModel; import net.sf.openrocket.gui.adaptors.DoubleModel; import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.UnitSelector; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.BodyTube; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; import javax.swing.JCheckBox; @@ -20,6 +22,7 @@ import javax.swing.JSpinner; public class BodyTubeConfig extends RocketComponentConfig { private MotorConfig motorConfigPane = null; + private static final Translator trans = Application.getTranslator(); public BodyTubeConfig(RocketComponent c) { super(c); @@ -27,7 +30,7 @@ public class BodyTubeConfig extends RocketComponentConfig { JPanel panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::][]","")); //// Body tube length - panel.add(new JLabel("Body tube length:")); + panel.add(new JLabel(trans.get("BodyTubecfg.lbl.Bodytubelength"))); DoubleModel m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0); @@ -40,7 +43,7 @@ public class BodyTubeConfig extends RocketComponentConfig { //// Body tube diameter - panel.add(new JLabel("Outer diameter:")); + panel.add(new JLabel(trans.get("BodyTubecfg.lbl.Outerdiameter"))); DoubleModel od = new DoubleModel(component,"OuterRadius",2,UnitGroup.UNITS_LENGTH,0); // Diameter = 2*Radius @@ -53,12 +56,13 @@ public class BodyTubeConfig extends RocketComponentConfig { panel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)),"w 100lp, wrap 0px"); JCheckBox check = new JCheckBox(od.getAutomaticAction()); - check.setText("Automatic"); + //// Automatic + check.setText(trans.get("BodyTubecfg.checkbox.Automatic")); panel.add(check,"skip, span 2, wrap"); //// Inner diameter - panel.add(new JLabel("Inner diameter:")); + panel.add(new JLabel(trans.get("BodyTubecfg.lbl.Innerdiameter"))); // Diameter = 2*Radius m = new DoubleModel(component,"InnerRadius",2,UnitGroup.UNITS_LENGTH,0); @@ -73,7 +77,7 @@ public class BodyTubeConfig extends RocketComponentConfig { //// Wall thickness - panel.add(new JLabel("Wall thickness:")); + panel.add(new JLabel(trans.get("BodyTubecfg.lbl.Wallthickness"))); m = new DoubleModel(component,"Thickness",UnitGroup.UNITS_LENGTH,0); @@ -84,9 +88,9 @@ public class BodyTubeConfig extends RocketComponentConfig { panel.add(new UnitSelector(m),"growx"); panel.add(new BasicSlider(m.getSliderModel(0,0.01)),"w 100lp, wrap 0px"); - + //// Filled check = new JCheckBox(new BooleanModel(component,"Filled")); - check.setText("Filled"); + check.setText(trans.get("BodyTubecfg.checkbox.Filled")); panel.add(check,"skip, span 2, wrap"); @@ -94,10 +98,13 @@ public class BodyTubeConfig extends RocketComponentConfig { panel.add(materialPanel(new JPanel(new MigLayout()), Material.Type.BULK), "cell 4 0, gapleft paragraph, aligny 0%, spany"); - - tabbedPane.insertTab("General", null, panel, "General properties", 0); + //// General and General properties + tabbedPane.insertTab(trans.get("BodyTubecfg.tab.General"), null, panel, + trans.get("BodyTubecfg.tab.Generalproperties"), 0); motorConfigPane = new MotorConfig((BodyTube)c); - tabbedPane.insertTab("Motor", null, motorConfigPane, "Motor mount configuration", 1); + //// Motor and Motor mount configuration + tabbedPane.insertTab(trans.get("BodyTubecfg.tab.Motor"), null, motorConfigPane, + trans.get("BodyTubecfg.tab.Motormountconf"), 1); tabbedPane.setSelectedIndex(0); } diff --git a/src/net/sf/openrocket/gui/configdialog/BulkheadConfig.java b/src/net/sf/openrocket/gui/configdialog/BulkheadConfig.java index c8130421..a8b9dec4 100644 --- a/src/net/sf/openrocket/gui/configdialog/BulkheadConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/BulkheadConfig.java @@ -3,19 +3,26 @@ package net.sf.openrocket.gui.configdialog; import javax.swing.JPanel; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; public class BulkheadConfig extends RingComponentConfig { + private static final Translator trans = Application.getTranslator(); public BulkheadConfig(RocketComponent c) { super(c); JPanel tab; - tab = generalTab("Radius:", null, null, "Thickness:"); - tabbedPane.insertTab("General", null, tab, "General properties", 0); + //// Radius: and "Thickness: + tab = generalTab(trans.get("BulkheadCfg.tab.Radius"), null, null, + trans.get("BulkheadCfg.tab.Thickness")); + //// General and General properties + tabbedPane.insertTab(trans.get("BulkheadCfg.tab.General"), null, tab, + trans.get("BulkheadCfg.tab.Generalproperties"), 0); tabbedPane.setSelectedIndex(0); } diff --git a/src/net/sf/openrocket/gui/configdialog/CenteringRingConfig.java b/src/net/sf/openrocket/gui/configdialog/CenteringRingConfig.java index 7abedfae..7d336b88 100644 --- a/src/net/sf/openrocket/gui/configdialog/CenteringRingConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/CenteringRingConfig.java @@ -3,19 +3,27 @@ package net.sf.openrocket.gui.configdialog; import javax.swing.JPanel; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; public class CenteringRingConfig extends RingComponentConfig { + private static final Translator trans = Application.getTranslator(); public CenteringRingConfig(RocketComponent c) { super(c); JPanel tab; - tab = generalTab("Outer diameter:", "Inner diameter:", null, "Thickness:"); - tabbedPane.insertTab("General", null, tab, "General properties", 0); + //// Outer diameter: and Inner diameter: and Thickness: + tab = generalTab(trans.get("CenteringRingCfg.tab.Outerdiam"), + trans.get("CenteringRingCfg.tab.Innerdiam"), null, + trans.get("CenteringRingCfg.tab.Thickness")); + //// General and General properties + tabbedPane.insertTab(trans.get("CenteringRingCfg.tab.General"), null, tab, + trans.get("CenteringRingCfg.tab.Generalproperties"), 0); tabbedPane.setSelectedIndex(0); } diff --git a/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java b/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java index 4b4db2d8..7e526ee5 100644 --- a/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java +++ b/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java @@ -11,9 +11,11 @@ import java.lang.reflect.InvocationTargetException; import javax.swing.JDialog; import net.sf.openrocket.document.OpenRocketDocument; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.ComponentChangeEvent; import net.sf.openrocket.rocketcomponent.ComponentChangeListener; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.BugException; import net.sf.openrocket.util.GUIUtil; import net.sf.openrocket.util.Prefs; @@ -41,7 +43,8 @@ public class ComponentConfigDialog extends JDialog implements ComponentChangeLis private RocketComponentConfig configurator = null; private final Window parent; - + private static final Translator trans = Application.getTranslator(); + private ComponentConfigDialog(Window parent, OpenRocketDocument document, RocketComponent component) { super(parent); @@ -93,7 +96,8 @@ public class ComponentConfigDialog extends JDialog implements ComponentChangeLis this.setContentPane(configurator); configurator.updateFields(); - setTitle(component.getComponentName() + " configuration"); + //// configuration + setTitle(component.getComponentName() + " " + trans.get("ComponentCfgDlg.configuration")); // Dimension pref = getPreferredSize(); // Dimension real = getSize(); @@ -207,7 +211,8 @@ public class ComponentConfigDialog extends JDialog implements ComponentChangeLis dialog = new ComponentConfigDialog(parent, document, component); dialog.setVisible(true); - document.addUndoPosition("Modify " + component.getComponentName()); + ////Modify + document.addUndoPosition(trans.get("ComponentCfgDlg.Modify") + " " + component.getComponentName()); } diff --git a/src/net/sf/openrocket/gui/configdialog/EllipticalFinSetConfig.java b/src/net/sf/openrocket/gui/configdialog/EllipticalFinSetConfig.java index e0939146..cfb70b35 100644 --- a/src/net/sf/openrocket/gui/configdialog/EllipticalFinSetConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/EllipticalFinSetConfig.java @@ -15,12 +15,15 @@ import net.sf.openrocket.gui.adaptors.EnumModel; import net.sf.openrocket.gui.adaptors.IntegerModel; import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.UnitSelector; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.FinSet; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; public class EllipticalFinSetConfig extends FinSetConfig { + private static final Translator trans = Application.getTranslator(); public EllipticalFinSetConfig(final RocketComponent component) { super(component); @@ -36,7 +39,7 @@ public class EllipticalFinSetConfig extends FinSetConfig { JPanel panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::]","")); //// Number of fins - panel.add(new JLabel("Number of fins:")); + panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Nbroffins"))); IntegerModel im = new IntegerModel(component,"FinCount",1,8); @@ -46,7 +49,7 @@ public class EllipticalFinSetConfig extends FinSetConfig { //// Base rotation - panel.add(new JLabel("Rotation:")); + panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Rotation"))); m = new DoubleModel(component, "BaseRotation", UnitGroup.UNITS_ANGLE,-Math.PI,Math.PI); @@ -59,9 +62,9 @@ public class EllipticalFinSetConfig extends FinSetConfig { //// Fin cant - JLabel label = new JLabel("Fin cant:"); - label.setToolTipText("The angle that the fins are canted with respect to the rocket " + - "body."); + JLabel label = new JLabel(trans.get("EllipticalFinSetCfg.Fincant")); + //// "The angle that the fins are canted with respect to the rocket + label.setToolTipText(trans.get("EllipticalFinSetCfg.ttip.Fincant")); panel.add(label); m = new DoubleModel(component, "CantAngle", UnitGroup.UNITS_ANGLE, @@ -78,7 +81,7 @@ public class EllipticalFinSetConfig extends FinSetConfig { //// Root chord - panel.add(new JLabel("Root chord:")); + panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Rootchord"))); m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0); @@ -91,7 +94,7 @@ public class EllipticalFinSetConfig extends FinSetConfig { //// Height - panel.add(new JLabel("Height:")); + panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Height"))); m = new DoubleModel(component,"Height",UnitGroup.UNITS_LENGTH,0); @@ -104,8 +107,8 @@ public class EllipticalFinSetConfig extends FinSetConfig { //// Position - - panel.add(new JLabel("Position relative to:")); + //// Position relative to: + panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Positionrelativeto"))); combo = new JComboBox( new EnumModel(component, "RelativePosition", @@ -117,7 +120,8 @@ public class EllipticalFinSetConfig extends FinSetConfig { })); panel.add(combo,"spanx, growx, wrap"); - panel.add(new JLabel("plus"),"right"); + //// plus + panel.add(new JLabel(trans.get("EllipticalFinSetCfg.plus")),"right"); m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH); spin = new JSpinner(m.getSpinnerModel()); @@ -143,14 +147,15 @@ public class EllipticalFinSetConfig extends FinSetConfig { //// Cross section - panel.add(new JLabel("Fin cross section:"),"span, split"); + //// Fin cross section: + panel.add(new JLabel(trans.get("EllipticalFinSetCfg.FincrossSection")),"span, split"); combo = new JComboBox( new EnumModel(component,"CrossSection")); panel.add(combo,"growx, wrap unrel"); - //// Thickness - panel.add(new JLabel("Thickness:")); + //// Thickness: + panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Thickness"))); m = new DoubleModel(component,"Thickness",UnitGroup.UNITS_LENGTH,0); @@ -174,8 +179,9 @@ public class EllipticalFinSetConfig extends FinSetConfig { addFinSetButtons(); - - tabbedPane.insertTab("General", null, mainPanel, "General properties", 0); + //// General and General properties + tabbedPane.insertTab(trans.get("EllipticalFinSetCfg.General"), null, mainPanel, + trans.get("EllipticalFinSetCfg.Generalproperties"), 0); tabbedPane.setSelectedIndex(0); } diff --git a/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java b/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java index c4e85985..da124327 100644 --- a/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java @@ -18,6 +18,7 @@ import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.StyledLabel; import net.sf.openrocket.gui.components.StyledLabel.Style; import net.sf.openrocket.gui.components.UnitSelector; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.rocketcomponent.FinSet; import net.sf.openrocket.rocketcomponent.FreeformFinSet; @@ -28,13 +29,16 @@ import net.sf.openrocket.unit.UnitGroup; public abstract class FinSetConfig extends RocketComponentConfig { private static final LogHelper log = Application.getLogger(); - + private static final Translator trans = Application.getTranslator(); + private JButton split = null; public FinSetConfig(RocketComponent component) { super(component); - tabbedPane.insertTab("Fin tabs", null, finTabPanel(), "Through-the-wall fin tabs", 0); + //// Fin tabs and Through-the-wall fin tabs + tabbedPane.insertTab(trans.get("FinSetConfig.tab.Fintabs"), null, finTabPanel(), + trans.get("FinSetConfig.tab.Through-the-wall"), 0); } @@ -44,8 +48,10 @@ public abstract class FinSetConfig extends RocketComponentConfig { //// Convert buttons if (!(component instanceof FreeformFinSet)) { - convert = new JButton("Convert to freeform"); - convert.setToolTipText("Convert this fin set into a freeform fin set"); + //// Convert to freeform + convert = new JButton(trans.get("FinSetConfig.but.Converttofreeform")); + //// Convert this fin set into a freeform fin set + convert.setToolTipText(trans.get("FinSetConfig.but.Converttofreeform.ttip")); convert.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -55,7 +61,8 @@ public abstract class FinSetConfig extends RocketComponentConfig { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { - ComponentConfigDialog.addUndoPosition("Convert fin set"); + //// Convert fin set + ComponentConfigDialog.addUndoPosition(trans.get("FinSetConfig.Convertfinset")); RocketComponent freeform = FreeformFinSet.convertFinSet((FinSet) component); ComponentConfigDialog.showDialog(freeform); @@ -67,8 +74,10 @@ public abstract class FinSetConfig extends RocketComponentConfig { }); } - split = new JButton("Split fins"); - split.setToolTipText("Split the fin set into separate fins"); + //// Split fins + split = new JButton(trans.get("FinSetConfig.but.Splitfins")); + //// Split the fin set into separate fins + split.setToolTipText(trans.get("FinSetConfig.but.Splitfins.ttip")); split.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -117,7 +126,8 @@ public abstract class FinSetConfig extends RocketComponentConfig { // JPanel panel = new JPanel(new MigLayout("fillx, align 20% 20%, gap rel unrel", // "[40lp][80lp::][30lp::][100lp::]","")); - panel.add(new StyledLabel("Through-the-wall fin tabs:", Style.BOLD), + //// Through-the-wall fin tabs: + panel.add(new StyledLabel(trans.get("FinSetConfig.lbl.Through-the-wall"), Style.BOLD), "spanx, wrap 30lp"); JLabel label; @@ -136,8 +146,10 @@ public abstract class FinSetConfig extends RocketComponentConfig { register(length_2); //// Tab length - label = new JLabel("Tab length:"); - label.setToolTipText("The length of the fin tab."); + //// Tab length: + label = new JLabel(trans.get("FinSetConfig.lbl.Tablength")); + //// The length of the fin tab. + label.setToolTipText(trans.get("FinSetConfig.ttip.Tablength")); panel.add(label, "gapleft para, gapright 40lp, growx 1"); m = new DoubleModel(component, "TabLength", UnitGroup.UNITS_LENGTH, 0); @@ -152,8 +164,10 @@ public abstract class FinSetConfig extends RocketComponentConfig { //// Tab length - label = new JLabel("Tab height:"); - label.setToolTipText("The spanwise height of the fin tab."); + //// Tab height: + label = new JLabel(trans.get("FinSetConfig.lbl.Tabheight")); + //// The spanwise height of the fin tab. + label.setToolTipText(trans.get("FinSetConfig.ttip.Tabheight")); panel.add(label, "gapleft para"); m = new DoubleModel(component, "TabHeight", UnitGroup.UNITS_LENGTH, 0); @@ -167,9 +181,10 @@ public abstract class FinSetConfig extends RocketComponentConfig { "w 100lp, growx 5, wrap para"); - //// Tab position - label = new JLabel("Tab position:"); - label.setToolTipText("The position of the fin tab."); + //// Tab position: + label = new JLabel(trans.get("FinSetConfig.lbl.Tabposition")); + //// The position of the fin tab. + label.setToolTipText(trans.get("FinSetConfig.ttip.Tabposition")); panel.add(label, "gapleft para"); m = new DoubleModel(component, "TabShift", UnitGroup.UNITS_LENGTH); @@ -182,8 +197,8 @@ public abstract class FinSetConfig extends RocketComponentConfig { panel.add(new BasicSlider(m.getSliderModel(length_2, length2)), "w 100lp, growx 5, wrap"); - - label = new JLabel("relative to"); + //// relative to + label = new JLabel(trans.get("FinSetConfig.lbl.relativeto")); panel.add(label, "right, gapright unrel"); EnumModel em = diff --git a/src/net/sf/openrocket/gui/configdialog/FreeformFinSetConfig.java b/src/net/sf/openrocket/gui/configdialog/FreeformFinSetConfig.java index 369b09b6..87be5fb4 100644 --- a/src/net/sf/openrocket/gui/configdialog/FreeformFinSetConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/FreeformFinSetConfig.java @@ -27,11 +27,13 @@ import net.sf.openrocket.gui.components.UnitSelector; import net.sf.openrocket.gui.scalefigure.FinPointFigure; import net.sf.openrocket.gui.scalefigure.ScaleScrollPane; import net.sf.openrocket.gui.scalefigure.ScaleSelector; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.FinSet; import net.sf.openrocket.rocketcomponent.FreeformFinSet; import net.sf.openrocket.rocketcomponent.IllegalFinPointException; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.Coordinate; @@ -42,15 +44,19 @@ public class FreeformFinSetConfig extends FinSetConfig { private FinPointTableModel tableModel = null; private FinPointFigure figure = null; - + private static final Translator trans = Application.getTranslator(); + public FreeformFinSetConfig(RocketComponent component) { super(component); this.finset = (FreeformFinSet)component; - - tabbedPane.insertTab("General", null, generalPane(), "General properties", 0); - tabbedPane.insertTab("Shape", null, shapePane(), "Fin shape", 1); + //// General and General properties + tabbedPane.insertTab(trans.get("FreeformFinSetCfg.tab.General"), null, generalPane(), + trans.get("FreeformFinSetCfg.tab.ttip.General"), 0); + //// Shape and Fin shape + tabbedPane.insertTab(trans.get("FreeformFinSetCfg.tab.Shape"), null, shapePane(), + trans.get("FreeformFinSetCfg.tab.ttip.Finshape"), 1); tabbedPane.setSelectedIndex(0); addFinSetButtons(); @@ -70,8 +76,8 @@ public class FreeformFinSetConfig extends FinSetConfig { - //// Number of fins - panel.add(new JLabel("Number of fins:")); + //// Number of fins: + panel.add(new JLabel(trans.get("FreeformFinSetCfg.lbl.Numberoffins"))); IntegerModel im = new IntegerModel(component,"FinCount",1,8); @@ -81,7 +87,7 @@ public class FreeformFinSetConfig extends FinSetConfig { //// Base rotation - panel.add(new JLabel("Fin rotation:")); + panel.add(new JLabel(trans.get("FreeformFinSetCfg.lbl.Finrotation"))); m = new DoubleModel(component, "BaseRotation", UnitGroup.UNITS_ANGLE,-Math.PI,Math.PI); @@ -95,9 +101,9 @@ public class FreeformFinSetConfig extends FinSetConfig { //// Fin cant - JLabel label = new JLabel("Fin cant:"); - label.setToolTipText("The angle that the fins are canted with respect to the rocket " + - "body."); + JLabel label = new JLabel(trans.get("FreeformFinSetCfg.lbl.Fincant")); + //// The angle that the fins are canted with respect to the rocket body. + label.setToolTipText(trans.get("FreeformFinSetCfg.lbl.ttip.Fincant")); panel.add(label); m = new DoubleModel(component, "CantAngle", UnitGroup.UNITS_ANGLE, @@ -114,7 +120,8 @@ public class FreeformFinSetConfig extends FinSetConfig { //// Position - panel.add(new JLabel("Position relative to:")); + //// Position relative to: + panel.add(new JLabel("FreeformFinSetCfg.lbl.Posrelativeto")); combo = new JComboBox( new EnumModel(component, "RelativePosition", @@ -125,8 +132,8 @@ public class FreeformFinSetConfig extends FinSetConfig { RocketComponent.Position.ABSOLUTE })); panel.add(combo,"spanx 3, growx, wrap"); - - panel.add(new JLabel("plus"),"right"); + //// plus + panel.add(new JLabel("FreeformFinSetCfg.lbl.plus"),"right"); m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH); spin = new JSpinner(m.getSpinnerModel()); @@ -153,14 +160,15 @@ public class FreeformFinSetConfig extends FinSetConfig { //// Cross section - panel.add(new JLabel("Fin cross section:"),"span, split"); + //// Fin cross section: + panel.add(new JLabel(trans.get("FreeformFinSetCfg.lbl.FincrossSection")),"span, split"); combo = new JComboBox( new EnumModel(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); diff --git a/src/net/sf/openrocket/gui/configdialog/InnerTubeConfig.java b/src/net/sf/openrocket/gui/configdialog/InnerTubeConfig.java index 751aa86b..35347fd3 100644 --- a/src/net/sf/openrocket/gui/configdialog/InnerTubeConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/InnerTubeConfig.java @@ -32,17 +32,20 @@ import net.sf.openrocket.gui.SpinnerEditor; import net.sf.openrocket.gui.adaptors.DoubleModel; import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.UnitSelector; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.ClusterConfiguration; import net.sf.openrocket.rocketcomponent.Clusterable; import net.sf.openrocket.rocketcomponent.InnerTube; import net.sf.openrocket.rocketcomponent.MotorMount; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.BugException; import net.sf.openrocket.util.Coordinate; public class InnerTubeConfig extends ThicknessRingComponentConfig { + private static final Translator trans = Application.getTranslator(); public InnerTubeConfig(RocketComponent c) { @@ -51,13 +54,19 @@ public class InnerTubeConfig extends ThicknessRingComponentConfig { JPanel tab; tab = new MotorConfig((MotorMount) c); - tabbedPane.insertTab("Motor", null, tab, "Motor mount configuration", 1); + //// Motor and Motor mount configuration + tabbedPane.insertTab(trans.get("InnerTubeCfg.tab.Motor"), null, tab, + trans.get("InnerTubeCfg.tab.ttip.Motor"), 1); tab = clusterTab(); - tabbedPane.insertTab("Cluster", null, tab, "Cluster configuration", 2); + //// Cluster and Cluster configuration + tabbedPane.insertTab(trans.get("InnerTubeCfg.tab.Cluster"), null, tab, + trans.get("InnerTubeCfg.tab.ttip.Cluster"), 2); tab = positionTab(); - tabbedPane.insertTab("Radial position", null, tab, "Radial position", 3); + //// Radial position + tabbedPane.insertTab(trans.get("InnerTubeCfg.tab.Radialpos"), null, tab, + trans.get("InnerTubeCfg.tab.ttip.Radialpos"), 3); tabbedPane.setSelectedIndex(0); } @@ -69,7 +78,8 @@ public class InnerTubeConfig extends ThicknessRingComponentConfig { JPanel subPanel = new JPanel(new MigLayout()); // Cluster type selection - subPanel.add(new JLabel("Select cluster configuration:"), "spanx, wrap"); + //// Select cluster configuration: + subPanel.add(new JLabel(trans.get("InnerTubeCfg.lbl.Selectclustercfg")), "spanx, wrap"); subPanel.add(new ClusterSelectionPanel((InnerTube) component), "spanx, wrap"); // JPanel clusterSelection = new ClusterSelectionPanel((InnerTube)component); // clusterSelection.setBackground(Color.blue); @@ -81,43 +91,53 @@ public class InnerTubeConfig extends ThicknessRingComponentConfig { subPanel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]")); // Tube separation scale - JLabel l = new JLabel("Tube separation:"); - l.setToolTipText("The separation of the tubes, 1.0 = touching each other"); + //// Tube separation: + JLabel l = new JLabel(trans.get("InnerTubeCfg.lbl.TubeSep")); + //// The separation of the tubes, 1.0 = touching each other + l.setToolTipText(trans.get("InnerTubeCfg.lbl.ttip.TubeSep")); subPanel.add(l); DoubleModel dm = new DoubleModel(component, "ClusterScale", 1, UnitGroup.UNITS_NONE, 0); JSpinner spin = new JSpinner(dm.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); - spin.setToolTipText("The separation of the tubes, 1.0 = touching each other"); + //// The separation of the tubes, 1.0 = touching each other + spin.setToolTipText(trans.get("InnerTubeCfg.lbl.ttip.TubeSep")); subPanel.add(spin, "growx"); BasicSlider bs = new BasicSlider(dm.getSliderModel(0, 1, 4)); - bs.setToolTipText("The separation of the tubes, 1.0 = touching each other"); + //// The separation of the tubes, 1.0 = touching each other + bs.setToolTipText(trans.get("InnerTubeCfg.lbl.ttip.TubeSep")); subPanel.add(bs, "skip,w 100lp, wrap"); - // Rotation - l = new JLabel("Rotation:"); - l.setToolTipText("Rotation angle of the cluster configuration"); + // Rotation: + l = new JLabel(trans.get("InnerTubeCfg.lbl.Rotation")); + //// Rotation angle of the cluster configuration + l.setToolTipText(trans.get("InnerTubeCfg.lbl.ttip.Rotation")); subPanel.add(l); dm = new DoubleModel(component, "ClusterRotation", 1, UnitGroup.UNITS_ANGLE, -Math.PI, Math.PI); spin = new JSpinner(dm.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); - spin.setToolTipText("Rotation angle of the cluster configuration"); + //// Rotation angle of the cluster configuration + spin.setToolTipText(trans.get("InnerTubeCfg.lbl.ttip.Rotation")); subPanel.add(spin, "growx"); subPanel.add(new UnitSelector(dm), "growx"); bs = new BasicSlider(dm.getSliderModel(-Math.PI, 0, Math.PI)); - bs.setToolTipText("Rotation angle of the cluster configuration"); + //// Rotation angle of the cluster configuration + bs.setToolTipText(trans.get("InnerTubeCfg.lbl.ttip.Rotation")); subPanel.add(bs, "w 100lp, wrap para"); // Split button - JButton split = new JButton("Split cluster"); - split.setToolTipText("Split the cluster into separate components.
" + - "This also duplicates all components attached to this inner tube."); + //// Split cluster + JButton split = new JButton(trans.get("InnerTubeCfg.but.Splitcluster")); + //// Split the cluster into separate components.
+ //// This also duplicates all components attached to this inner tube. + split.setToolTipText(trans.get("InnerTubeCfg.lbl.longA1") + + trans.get("InnerTubeCfg.lbl.longA2")); split.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -159,8 +179,10 @@ public class InnerTubeConfig extends ThicknessRingComponentConfig { // Reset button - JButton reset = new JButton("Reset settings"); - reset.setToolTipText("Reset the separation and rotation to the default values"); + ///// Reset settings + JButton reset = new JButton(trans.get("InnerTubeCfg.but.Resetsettings")); + //// Reset the separation and rotation to the default values + reset.setToolTipText(trans.get("InnerTubeCfg.but.ttip.Resetsettings")); reset.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { diff --git a/src/net/sf/openrocket/gui/configdialog/LaunchLugConfig.java b/src/net/sf/openrocket/gui/configdialog/LaunchLugConfig.java index 893917a6..56f1231f 100644 --- a/src/net/sf/openrocket/gui/configdialog/LaunchLugConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/LaunchLugConfig.java @@ -7,8 +7,10 @@ import net.sf.openrocket.gui.adaptors.DoubleModel; import net.sf.openrocket.gui.adaptors.EnumModel; import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.UnitSelector; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; import javax.swing.JComboBox; @@ -19,6 +21,7 @@ import javax.swing.JSpinner; public class LaunchLugConfig extends RocketComponentConfig { private MotorConfig motorConfigPane = null; + private static final Translator trans = Application.getTranslator(); public LaunchLugConfig(RocketComponent c) { super(c); @@ -29,7 +32,8 @@ public class LaunchLugConfig extends RocketComponentConfig { JPanel panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::][]","")); //// Body tube length - panel.add(new JLabel("Length:")); + //// Length: + panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Length"))); DoubleModel m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0); @@ -42,7 +46,8 @@ public class LaunchLugConfig extends RocketComponentConfig { //// Body tube diameter - panel.add(new JLabel("Outer diameter:")); + //// Outer diameter: + panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Outerdiam"))); DoubleModel od = new DoubleModel(component,"OuterRadius",2,UnitGroup.UNITS_LENGTH,0); // Diameter = 2*Radius @@ -55,8 +60,8 @@ public class LaunchLugConfig extends RocketComponentConfig { panel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)),"w 100lp, wrap rel"); - //// Inner diameter - panel.add(new JLabel("Inner diameter:")); + //// Inner diameter: + panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Innerdiam"))); // Diameter = 2*Radius m = new DoubleModel(component,"InnerRadius",2,UnitGroup.UNITS_LENGTH,0); @@ -71,7 +76,8 @@ public class LaunchLugConfig extends RocketComponentConfig { //// Wall thickness - panel.add(new JLabel("Thickness:")); + //// Thickness: + panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Thickness"))); m = new DoubleModel(component,"Thickness",UnitGroup.UNITS_LENGTH,0); @@ -83,8 +89,8 @@ public class LaunchLugConfig extends RocketComponentConfig { panel.add(new BasicSlider(m.getSliderModel(0,0.01)),"w 100lp, wrap 20lp"); - //// Radial direction - panel.add(new JLabel("Radial position:")); + //// Radial position: + panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Radialpos"))); m = new DoubleModel(component,"RadialDirection",UnitGroup.UNITS_ANGLE, -Math.PI, Math.PI); @@ -104,8 +110,8 @@ public class LaunchLugConfig extends RocketComponentConfig { - - panel.add(new JLabel("Position relative to:")); + //// Position relative to: + panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Posrelativeto"))); JComboBox combo = new JComboBox( new EnumModel(component, "RelativePosition", @@ -117,7 +123,8 @@ public class LaunchLugConfig extends RocketComponentConfig { })); panel.add(combo,"spanx, growx, wrap"); - panel.add(new JLabel("plus"),"right"); + //// plus + panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.plus")),"right"); m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH); spin = new JSpinner(m.getSpinnerModel()); @@ -138,8 +145,9 @@ public class LaunchLugConfig extends RocketComponentConfig { primary.add(panel,"grow"); - - tabbedPane.insertTab("General", null, primary, "General properties", 0); + //// General and General properties + tabbedPane.insertTab(trans.get("LaunchLugCfg.tab.General"), null, primary, + trans.get("LaunchLugCfg.tab.Generalprop"), 0); tabbedPane.setSelectedIndex(0); } diff --git a/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java b/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java index 5bff03a0..659714f4 100644 --- a/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java @@ -16,12 +16,15 @@ import net.sf.openrocket.gui.adaptors.DoubleModel; import net.sf.openrocket.gui.adaptors.EnumModel; import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.UnitSelector; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.MassComponent; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; public class MassComponentConfig extends RocketComponentConfig { + private static final Translator trans = Application.getTranslator(); public MassComponentConfig(RocketComponent component) { super(component); @@ -32,7 +35,7 @@ public class MassComponentConfig extends RocketComponentConfig { //// Mass - panel.add(new JLabel("Mass")); + panel.add(new JLabel(trans.get("MassComponentCfg.lbl.Mass"))); DoubleModel m = new DoubleModel(component,"ComponentMass",UnitGroup.UNITS_MASS,0); @@ -46,7 +49,8 @@ public class MassComponentConfig extends RocketComponentConfig { //// Mass length - panel.add(new JLabel("Length")); + //// Length + panel.add(new JLabel(trans.get("MassComponentCfg.lbl.Length"))); m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0); @@ -59,7 +63,8 @@ public class MassComponentConfig extends RocketComponentConfig { //// Tube diameter - panel.add(new JLabel("Diameter:")); + //// Diameter: + panel.add(new JLabel(trans.get("MassComponentCfg.lbl.Diameter"))); DoubleModel od = new DoubleModel(component,"Radius",2,UnitGroup.UNITS_LENGTH,0); // Diameter = 2*Radius @@ -73,8 +78,8 @@ public class MassComponentConfig extends RocketComponentConfig { //// Position - - panel.add(new JLabel("Position relative to:")); + //// Position relative to: + panel.add(new JLabel(trans.get("MassComponentCfg.lbl.PosRelativeto"))); JComboBox combo = new JComboBox( new EnumModel(component, "RelativePosition", @@ -85,8 +90,8 @@ public class MassComponentConfig extends RocketComponentConfig { RocketComponent.Position.ABSOLUTE })); panel.add(combo,"spanx, growx, wrap"); - - panel.add(new JLabel("plus"),"right"); + //// plus + panel.add(new JLabel(trans.get("MassComponentCfg.lbl.plus")),"right"); m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH); spin = new JSpinner(m.getSpinnerModel()); @@ -99,10 +104,12 @@ public class MassComponentConfig extends RocketComponentConfig { new DoubleModel(component.getParent(), "Length"))), "w 100lp, wrap"); - - tabbedPane.insertTab("General", null, panel, "General properties", 0); - tabbedPane.insertTab("Radial position", null, positionTab(), - "Radial position configuration", 1); + //// General and General properties + tabbedPane.insertTab(trans.get("MassComponentCfg.tab.General"), null, panel, + trans.get("MassComponentCfg.tab.ttip.General"), 0); + //// Radial position and Radial position configuration + tabbedPane.insertTab(trans.get("MassComponentCfg.tab.Radialpos"), null, positionTab(), + trans.get("MassComponentCfg.tab.ttip.Radialpos"), 1); tabbedPane.setSelectedIndex(0); } @@ -111,7 +118,8 @@ public class MassComponentConfig extends RocketComponentConfig { JPanel panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::]","")); //// Radial position - panel.add(new JLabel("Radial distance:")); + //// Radial distance: + panel.add(new JLabel(trans.get("MassComponentCfg.lbl.Radialdistance"))); DoubleModel m = new DoubleModel(component,"RadialPosition",UnitGroup.UNITS_LENGTH,0); @@ -123,8 +131,8 @@ public class MassComponentConfig extends RocketComponentConfig { panel.add(new BasicSlider(m.getSliderModel(0, 0.1, 1.0)),"w 100lp, wrap"); - //// Radial direction - panel.add(new JLabel("Radial direction:")); + //// Radial direction: + panel.add(new JLabel(trans.get("MassComponentCfg.lbl.Radialdirection"))); m = new DoubleModel(component,"RadialDirection",UnitGroup.UNITS_ANGLE,0); @@ -137,7 +145,7 @@ public class MassComponentConfig extends RocketComponentConfig { //// Reset button - JButton button = new JButton("Reset"); + JButton button = new JButton(trans.get("MassComponentCfg.but.Reset")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { diff --git a/src/net/sf/openrocket/gui/configdialog/MotorConfig.java b/src/net/sf/openrocket/gui/configdialog/MotorConfig.java index 45a134a2..8ac39d44 100644 --- a/src/net/sf/openrocket/gui/configdialog/MotorConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/MotorConfig.java @@ -27,6 +27,7 @@ import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.StyledLabel; import net.sf.openrocket.gui.components.UnitSelector; import net.sf.openrocket.gui.dialogs.motor.MotorChooserDialog; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.motor.Motor; import net.sf.openrocket.motor.ThrustCurveMotor; import net.sf.openrocket.rocketcomponent.Configuration; @@ -34,6 +35,7 @@ import net.sf.openrocket.rocketcomponent.MotorMount; import net.sf.openrocket.rocketcomponent.Rocket; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.MotorMount.IgnitionEvent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; public class MotorConfig extends JPanel { @@ -43,7 +45,8 @@ public class MotorConfig extends JPanel { private final Configuration configuration; private JPanel panel; private JLabel motorLabel; - + private static final Translator trans = Application.getTranslator(); + public MotorConfig(MotorMount motorMount) { super(new MigLayout("fill")); @@ -55,7 +58,8 @@ public class MotorConfig extends JPanel { model = new BooleanModel(motorMount, "MotorMount"); JCheckBox check = new JCheckBox(model); - check.setText("This component is a motor mount"); + ////This component is a motor mount + check.setText(trans.get("MotorCfg.checkbox.compmotormount")); this.add(check, "wrap"); @@ -64,7 +68,8 @@ public class MotorConfig extends JPanel { // Motor configuration selector - panel.add(new JLabel("Motor configuration:"), "shrink"); + //// Motor configuration: + panel.add(new JLabel(trans.get("MotorCfg.lbl.Motorcfg")), "shrink"); JComboBox combo = new JComboBox(new MotorConfigurationModel(configuration)); panel.add(combo, "growx"); @@ -76,7 +81,8 @@ public class MotorConfig extends JPanel { } }); - JButton button = new JButton("New"); + //// New button + JButton button = new JButton(trans.get("MotorCfg.but.New")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -87,8 +93,8 @@ public class MotorConfig extends JPanel { panel.add(button, "wrap unrel"); - // Current motor - panel.add(new JLabel("Current motor:"), "shrink"); + // Current motor: + panel.add(new JLabel(trans.get("MotorCfg.lbl.Currentmotor")), "shrink"); motorLabel = new JLabel(); motorLabel.setFont(motorLabel.getFont().deriveFont(Font.BOLD)); @@ -98,7 +104,8 @@ public class MotorConfig extends JPanel { // Overhang - panel.add(new JLabel("Motor overhang:")); + //// Motor overhang: + panel.add(new JLabel(trans.get("MotorCfg.lbl.Motoroverhang"))); DoubleModel dm = new DoubleModel(motorMount, "MotorOverhang", UnitGroup.UNITS_LENGTH); @@ -112,20 +119,23 @@ public class MotorConfig extends JPanel { // Select ignition event - panel.add(new JLabel("Ignition at:"), ""); + //// Ignition at: + panel.add(new JLabel(trans.get("MotorCfg.lbl.Ignitionat")), ""); combo = new JComboBox(new EnumModel(mount, "IgnitionEvent")); panel.add(combo, "growx, wrap"); // ... and delay - panel.add(new JLabel("plus"), "gap indent, skip 1, span, split"); + //// plus + panel.add(new JLabel(trans.get("MotorCfg.lbl.plus")), "gap indent, skip 1, span, split"); dm = new DoubleModel(mount, "IgnitionDelay", 0); spin = new JSpinner(dm.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); panel.add(spin, "gap rel rel"); - panel.add(new JLabel("seconds"), "wrap unrel"); + //// seconds + panel.add(new JLabel(trans.get("MotorCfg.lbl.seconds")), "wrap unrel"); @@ -135,17 +145,24 @@ public class MotorConfig extends JPanel { int stages = c.getChildCount(); if (stages == 1) { - panel.add(new StyledLabel("The current design has only one stage. " + - "Stages can be added by clicking \"New stage\".", -1), + //// The current design has only one stage. + //// Stages can be added by clicking \"New stage\". + + panel.add(new StyledLabel(trans.get("MotorCfg.lbl.longA1") + + trans.get("MotorCfg.lbl.longA2"), -1), "spanx, right, wrap para"); } else { - panel.add(new StyledLabel("The current design has " + stages + " stages.", -1), + //// The current design has + //// stages. + panel.add(new StyledLabel(trans.get("MotorCfg.lbl.longB1") + " " + stages +" " + + trans.get("MotorCfg.lbl.longB2"), -1), "skip 1, spanx, wrap para"); } // Select etc. buttons - button = new JButton("Select motor"); + //// Select motor + button = new JButton(trans.get("MotorCfg.but.Selectmotor")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -171,7 +188,8 @@ public class MotorConfig extends JPanel { }); panel.add(button, "span, split, growx"); - button = new JButton("Remove motor"); + //// Remove motor + button = new JButton(trans.get("MotorCfg.but.Removemotor")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -201,7 +219,8 @@ public class MotorConfig extends JPanel { String id = configuration.getMotorConfigurationID(); Motor m = mount.getMotor(id); if (m == null) { - motorLabel.setText("None"); + //// None + motorLabel.setText(trans.get("MotorCfg.lbl.motorLabel")); } else { String str = ""; if (m instanceof ThrustCurveMotor) diff --git a/src/net/sf/openrocket/gui/configdialog/NoseConeConfig.java b/src/net/sf/openrocket/gui/configdialog/NoseConeConfig.java index 14ccb9e4..a9d4f61a 100644 --- a/src/net/sf/openrocket/gui/configdialog/NoseConeConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/NoseConeConfig.java @@ -18,10 +18,12 @@ import net.sf.openrocket.gui.adaptors.DoubleModel; import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.DescriptionArea; import net.sf.openrocket.gui.components.UnitSelector; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.NoseCone; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.Transition; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; public class NoseConeConfig extends RocketComponentConfig { @@ -33,7 +35,8 @@ public class NoseConeConfig extends RocketComponentConfig { private JLabel shapeLabel; private JSpinner shapeSpinner; private JSlider shapeSlider; - + private static final Translator trans = Application.getTranslator(); + // Prepended to the description from NoseCone.DESCRIPTIONS private static final String PREDESC = ""; @@ -47,8 +50,8 @@ public class NoseConeConfig extends RocketComponentConfig { //// Shape selection - - panel.add(new JLabel("Nose cone shape:")); + //// Nose cone shape: + panel.add(new JLabel(trans.get("NoseConeCfg.lbl.Noseconeshape"))); Transition.Shape selected = ((NoseCone)component).getType(); Transition.Shape[] typeList = Transition.Shape.values(); @@ -70,7 +73,8 @@ public class NoseConeConfig extends RocketComponentConfig { //// Shape parameter - shapeLabel = new JLabel("Shape parameter:"); + //// Shape parameter: + shapeLabel = new JLabel(trans.get("NoseConeCfg.lbl.Shapeparam")); panel.add(shapeLabel); m = new DoubleModel(component,"ShapeParameter"); @@ -88,8 +92,8 @@ public class NoseConeConfig extends RocketComponentConfig { //// Length - - panel.add(new JLabel("Nose cone length:")); + //// Nose cone length: + panel.add(new JLabel(trans.get("NoseConeCfg.lbl.Noseconelength"))); m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0); JSpinner spin = new JSpinner(m.getSpinnerModel()); @@ -100,8 +104,8 @@ public class NoseConeConfig extends RocketComponentConfig { panel.add(new BasicSlider(m.getSliderModel(0, 0.1, 0.7)),"w 100lp, wrap"); //// Diameter - - panel.add(new JLabel("Base diameter:")); + //// Base diameter: + panel.add(new JLabel(trans.get("NoseConeCfg.lbl.Basediam"))); m = new DoubleModel(component,"AftRadius",2.0,UnitGroup.UNITS_LENGTH,0); // Diameter = 2*Radius spin = new JSpinner(m.getSpinnerModel()); @@ -112,12 +116,13 @@ public class NoseConeConfig extends RocketComponentConfig { panel.add(new BasicSlider(m.getSliderModel(0, 0.04, 0.2)),"w 100lp, wrap 0px"); JCheckBox check = new JCheckBox(m.getAutomaticAction()); - check.setText("Automatic"); + //// Automatic + check.setText(trans.get("NoseConeCfg.checkbox.Automatic")); panel.add(check,"skip, span 2, wrap"); - //// Wall thickness - panel.add(new JLabel("Wall thickness:")); + //// Wall thickness: + panel.add(new JLabel(trans.get("NoseConeCfg.lbl.Wallthickness"))); m = new DoubleModel(component,"Thickness",UnitGroup.UNITS_LENGTH,0); @@ -130,7 +135,8 @@ public class NoseConeConfig extends RocketComponentConfig { check = new JCheckBox(new BooleanModel(component,"Filled")); - check.setText("Filled"); + //// Filled + check.setText(trans.get("NoseConeCfg.checkbox.Filled")); panel.add(check,"skip, span 2, wrap"); @@ -154,9 +160,12 @@ public class NoseConeConfig extends RocketComponentConfig { panel.add(panel2, "cell 4 0, gapleft paragraph, aligny 0%, spany"); - - tabbedPane.insertTab("General", null, panel, "General properties", 0); - tabbedPane.insertTab("Shoulder", null, shoulderTab(), "Shoulder properties", 1); + //// General and General properties + tabbedPane.insertTab(trans.get("NoseConeCfg.tab.General"), null, panel, + trans.get("NoseConeCfg.tab.ttip.General"), 0); + //// Shoulder and Shoulder properties + tabbedPane.insertTab(trans.get("NoseConeCfg.tab.Shoulder"), null, shoulderTab(), + trans.get("NoseConeCfg.tab.ttip.Shoulder"), 1); tabbedPane.setSelectedIndex(0); } diff --git a/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java b/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java index d498d827..4536288e 100644 --- a/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java @@ -21,14 +21,17 @@ import net.sf.openrocket.gui.components.HtmlLabel; import net.sf.openrocket.gui.components.StyledLabel; import net.sf.openrocket.gui.components.UnitSelector; import net.sf.openrocket.gui.components.StyledLabel.Style; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.MassObject; import net.sf.openrocket.rocketcomponent.Parachute; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.MotorMount.IgnitionEvent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; public class ParachuteConfig extends RecoveryDeviceConfig { + private static final Translator trans = Application.getTranslator(); public ParachuteConfig(final RocketComponent component) { super(component); @@ -39,10 +42,10 @@ public class ParachuteConfig extends RecoveryDeviceConfig { //// Canopy - panel.add(new StyledLabel("Canopy:", Style.BOLD), "wrap unrel"); + panel.add(new StyledLabel(trans.get("ParachuteCfg.lbl.Canopy"), Style.BOLD), "wrap unrel"); - - panel.add(new JLabel("Diameter:")); + //// Diameter: + panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Diameter"))); DoubleModel m = new DoubleModel(component,"Diameter",UnitGroup.UNITS_LENGTH,0); @@ -52,12 +55,13 @@ public class ParachuteConfig extends RecoveryDeviceConfig { panel.add(new UnitSelector(m),"growx"); panel.add(new BasicSlider(m.getSliderModel(0, 0.4, 1.5)),"w 100lp, wrap"); - - panel.add(new JLabel("Material:")); + //// Material: + panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Material"))); JComboBox combo = new JComboBox(new MaterialModel(panel, component, Material.Type.SURFACE)); - combo.setToolTipText("The component material affects the weight of the component."); + //// The component material affects the weight of the component. + combo.setToolTipText(trans.get("ParachuteCfg.combo.MaterialModel")); panel.add(combo,"spanx 3, growx, wrap paragraph"); // materialPanel(panel, Material.Type.SURFACE, "Material:", null); @@ -65,10 +69,11 @@ public class ParachuteConfig extends RecoveryDeviceConfig { // CD - JLabel label = new HtmlLabel("Drag coefficient CD:"); - String tip = "The drag coefficient relative to the total area of the parachute.
" + - "A larger drag coefficient yields a slowed descent rate. " + - "A typical value for parachutes is 0.8."; + //// Drag coefficient CD: + JLabel label = new HtmlLabel(trans.get("ParachuteCfg.lbl.longA1")); + String tip = trans.get("ParachuteCfg.lbl.longB1") + + trans.get("ParachuteCfg.lbl.longB2") + " " + + trans.get("ParachuteCfg.lbl.longB3"); label.setToolTipText(tip); panel.add(label); @@ -79,7 +84,8 @@ public class ParachuteConfig extends RecoveryDeviceConfig { spin.setEditor(new SpinnerEditor(spin)); panel.add(spin,"growx"); - JButton button = new JButton("Reset"); + //// Reset button + JButton button = new JButton(trans.get("ParachuteCfg.but.Reset")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -92,18 +98,18 @@ public class ParachuteConfig extends RecoveryDeviceConfig { //// Shroud lines - panel.add(new StyledLabel("Shroud lines:", Style.BOLD), "wrap unrel"); - + panel.add(new StyledLabel(trans.get("ParachuteCfg.lbl.Shroudlines"), Style.BOLD), "wrap unrel"); - panel.add(new JLabel("Number of lines:")); + //// Number of lines: + panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Numberoflines"))); IntegerModel im = new IntegerModel(component,"LineCount",0); spin = new JSpinner(im.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); panel.add(spin,"growx, wrap"); - - panel.add(new JLabel("Line length:")); + //// Line length: + panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Linelength"))); m = new DoubleModel(component,"LineLength",UnitGroup.UNITS_LENGTH,0); @@ -113,8 +119,8 @@ public class ParachuteConfig extends RecoveryDeviceConfig { panel.add(new UnitSelector(m),"growx"); panel.add(new BasicSlider(m.getSliderModel(0, 0.4, 1.5)),"w 100lp, wrap"); - - panel.add(new JLabel("Material:")); + //// Material: + panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Material"))); combo = new JComboBox(new MaterialModel(panel, component, Material.Type.LINE, "LineMaterial")); @@ -129,8 +135,8 @@ public class ParachuteConfig extends RecoveryDeviceConfig { //// Position - - panel.add(new JLabel("Position relative to:")); + //// Position relative to: + panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Posrelativeto"))); combo = new JComboBox( new EnumModel(component, "RelativePosition", @@ -142,7 +148,8 @@ public class ParachuteConfig extends RecoveryDeviceConfig { })); panel.add(combo,"spanx, growx, wrap"); - panel.add(new JLabel("plus"),"right"); + //// plus + panel.add(new JLabel(trans.get("ParachuteCfg.lbl.plus")),"right"); m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH); spin = new JSpinner(m.getSpinnerModel()); @@ -157,7 +164,8 @@ public class ParachuteConfig extends RecoveryDeviceConfig { //// Spatial length - panel.add(new JLabel("Packed length:")); + //// Packed length: + panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Packedlength"))); m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0); @@ -170,7 +178,8 @@ public class ParachuteConfig extends RecoveryDeviceConfig { //// Tube diameter - panel.add(new JLabel("Packed diameter:")); + //// Packed diameter: + panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Packeddiam"))); DoubleModel od = new DoubleModel(component,"Radius",2,UnitGroup.UNITS_LENGTH,0); // Diameter = 2*Radius @@ -184,24 +193,26 @@ public class ParachuteConfig extends RecoveryDeviceConfig { //// Deployment - - panel.add(new JLabel("Deploys at:"),""); + //// Deploys at: + panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Deploysat")),""); combo = new JComboBox(new EnumModel(component, "DeployEvent")); panel.add(combo,"spanx 3, growx, wrap"); // ... and delay - panel.add(new JLabel("plus"),"right"); + //// plus + panel.add(new JLabel(trans.get("ParachuteCfg.lbl.plus")),"right"); m = new DoubleModel(component,"DeployDelay",0); spin = new JSpinner(m.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); panel.add(spin,"spanx, split"); - panel.add(new JLabel("seconds"),"wrap paragraph"); + //// seconds + panel.add(new JLabel(trans.get("ParachuteCfg.lbl.seconds")),"wrap paragraph"); - // Altitude - label = new JLabel("Altitude:"); + // Altitude: + label = new JLabel(trans.get("ParachuteCfg.lbl.Altitude")); altitudeComponents.add(label); panel.add(label); @@ -223,9 +234,11 @@ public class ParachuteConfig extends RecoveryDeviceConfig { updateFields(); - tabbedPane.insertTab("General", null, primary, "General properties", 0); - tabbedPane.insertTab("Radial position", null, positionTab(), - "Radial position configuration", 1); + //// General and General properties + tabbedPane.insertTab(trans.get("ParachuteCfg.tab.General"), null, primary, trans.get("ParachuteCfg.tab.ttip.General"), 0); + //// Radial position and Radial position configuration + tabbedPane.insertTab(trans.get("ParachuteCfg.tab.Radialpos"), null, positionTab(), + trans.get("ParachuteCfg.tab.ttip.Radialpos"), 1); tabbedPane.setSelectedIndex(0); } @@ -237,7 +250,8 @@ public class ParachuteConfig extends RecoveryDeviceConfig { JPanel panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::]","")); //// Radial position - panel.add(new JLabel("Radial distance:")); + //// Radial distance: + panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Radialdistance"))); DoubleModel m = new DoubleModel(component,"RadialPosition",UnitGroup.UNITS_LENGTH,0); @@ -249,8 +263,8 @@ public class ParachuteConfig extends RecoveryDeviceConfig { panel.add(new BasicSlider(m.getSliderModel(0, 0.1, 1.0)),"w 100lp, wrap"); - //// Radial direction - panel.add(new JLabel("Radial direction:")); + //// Radial direction: + panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Radialdirection"))); m = new DoubleModel(component,"RadialDirection",UnitGroup.UNITS_ANGLE,0); @@ -263,7 +277,7 @@ public class ParachuteConfig extends RecoveryDeviceConfig { //// Reset button - JButton button = new JButton("Reset"); + JButton button = new JButton(trans.get("ParachuteCfg.but.Reset")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { diff --git a/src/net/sf/openrocket/gui/configdialog/RingComponentConfig.java b/src/net/sf/openrocket/gui/configdialog/RingComponentConfig.java index 3a11c74b..a1c49ef6 100644 --- a/src/net/sf/openrocket/gui/configdialog/RingComponentConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/RingComponentConfig.java @@ -18,13 +18,16 @@ import net.sf.openrocket.gui.adaptors.EnumModel; import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.DescriptionArea; import net.sf.openrocket.gui.components.UnitSelector; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.EngineBlock; import net.sf.openrocket.rocketcomponent.RingComponent; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; public class RingComponentConfig extends RocketComponentConfig { + private static final Translator trans = Application.getTranslator(); public RingComponentConfig(RocketComponent component) { super(component); @@ -42,6 +45,7 @@ public class RingComponentConfig extends RocketComponentConfig { if (outer != null) { panel.add(new JLabel(outer)); + //// OuterRadius od = new DoubleModel(component,"OuterRadius",2,UnitGroup.UNITS_LENGTH,0); // Diameter = 2*Radius @@ -54,7 +58,8 @@ public class RingComponentConfig extends RocketComponentConfig { if (od.isAutomaticAvailable()) { JCheckBox check = new JCheckBox(od.getAutomaticAction()); - check.setText("Automatic"); + //// Automatic + check.setText(trans.get("ringcompcfg.Automatic")); panel.add(check,"skip, span 2, wrap"); } } @@ -64,6 +69,7 @@ public class RingComponentConfig extends RocketComponentConfig { if (inner != null) { panel.add(new JLabel(inner)); + //// InnerRadius m = new DoubleModel(component,"InnerRadius",2,UnitGroup.UNITS_LENGTH,0); spin = new JSpinner(m.getSpinnerModel()); @@ -79,7 +85,8 @@ public class RingComponentConfig extends RocketComponentConfig { if (m.isAutomaticAvailable()) { JCheckBox check = new JCheckBox(m.getAutomaticAction()); - check.setText("Automatic"); + //// Automatic + check.setText(trans.get("ringcompcfg.Automatic")); panel.add(check,"skip, span 2, wrap"); } } @@ -89,6 +96,7 @@ public class RingComponentConfig extends RocketComponentConfig { if (thickness != null) { panel.add(new JLabel(thickness)); + //// Thickness m = new DoubleModel(component,"Thickness",UnitGroup.UNITS_LENGTH,0); spin = new JSpinner(m.getSpinnerModel()); @@ -104,6 +112,7 @@ public class RingComponentConfig extends RocketComponentConfig { if (length != null) { panel.add(new JLabel(length)); + //// Length m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0); spin = new JSpinner(m.getSpinnerModel()); @@ -117,7 +126,8 @@ public class RingComponentConfig extends RocketComponentConfig { //// Position - panel.add(new JLabel("Position relative to:")); + //// Position relative to: + panel.add(new JLabel(trans.get("ringcompcfg.Positionrelativeto"))); JComboBox combo = new JComboBox( new EnumModel(component, "RelativePosition", @@ -129,8 +139,10 @@ public class RingComponentConfig extends RocketComponentConfig { })); panel.add(combo,"spanx 3, growx, wrap"); - panel.add(new JLabel("plus"),"right"); + //// plus + panel.add(new JLabel(trans.get("ringcompcfg.plus")),"right"); + //// PositionValue m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH); spin = new JSpinner(m.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); @@ -148,10 +160,8 @@ public class RingComponentConfig extends RocketComponentConfig { if (component instanceof EngineBlock) { final DescriptionArea desc = new DescriptionArea(6); - desc.setText("An engine block stops the motor from moving forwards " + - "in the motor mount tube.

In order to add a motor, create a " + - "body tube or inner tube and mark it as a motor mount in " + - "the Motor tab."); + //// An engine block stops the motor from moving forwards in the motor mount tube.

In order to add a motor, create a body tube or inner tube and mark it as a motor mount in the Motor tab. + desc.setText(trans.get("ringcompcfg.EngineBlock.desc")); sub.add(desc, "width 1px, growx, wrap"); } panel.add(sub,"cell 4 0, gapleft paragraph, aligny 0%, spany"); @@ -165,44 +175,51 @@ public class RingComponentConfig extends RocketComponentConfig { "[][65lp::][30lp::]","")); //// Radial position - JLabel l = new JLabel("Radial distance:"); - l.setToolTipText("Distance from the rocket centerline"); + JLabel l = new JLabel(trans.get("ringcompcfg.Radialdistance")); + //// Distance from the rocket centerline + l.setToolTipText(trans.get("ringcompcfg.Distancefrom")); panel.add(l); DoubleModel m = new DoubleModel(component,"RadialPosition",UnitGroup.UNITS_LENGTH,0); JSpinner spin = new JSpinner(m.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); - spin.setToolTipText("Distance from the rocket centerline"); + //// Distance from the rocket centerline + spin.setToolTipText(trans.get("ringcompcfg.Distancefrom")); panel.add(spin,"growx"); panel.add(new UnitSelector(m),"growx"); BasicSlider bs = new BasicSlider(m.getSliderModel(0, 0.1, 1.0)); - bs.setToolTipText("Distance from the rocket centerline"); + //// Distance from the rocket centerline + bs.setToolTipText(trans.get("ringcompcfg.Distancefrom")); panel.add(bs,"w 100lp, wrap"); //// Radial direction - l = new JLabel("Radial direction:"); - l.setToolTipText("The radial direction from the rocket centerline"); + l = new JLabel(trans.get("ringcompcfg.Radialdirection")); + //// The radial direction from the rocket centerline + l.setToolTipText(trans.get("ringcompcfg.radialdirectionfrom")); panel.add(l); m = new DoubleModel(component,"RadialDirection",UnitGroup.UNITS_ANGLE,0); spin = new JSpinner(m.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); - spin.setToolTipText("The radial direction from the rocket centerline"); + //// The radial direction from the rocket centerline + spin.setToolTipText(trans.get("ringcompcfg.radialdirectionfrom")); panel.add(spin,"growx"); panel.add(new UnitSelector(m),"growx"); bs = new BasicSlider(m.getSliderModel(-Math.PI, Math.PI)); - bs.setToolTipText("The radial direction from the rocket centerline"); + //// The radial direction from the rocket centerline + bs.setToolTipText(trans.get("ringcompcfg.radialdirectionfrom")); panel.add(bs,"w 100lp, wrap"); //// Reset button - JButton button = new JButton("Reset"); - button.setToolTipText("Reset the component to the rocket centerline"); + JButton button = new JButton(trans.get("ringcompcfg.but.Reset")); + //// Reset the component to the rocket centerline + button.setToolTipText(trans.get("ringcompcfg.but.Resetcomponant")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -214,8 +231,8 @@ public class RingComponentConfig extends RocketComponentConfig { DescriptionArea note = new DescriptionArea(2); - note.setText("Note: An inner tube will not affect the aerodynamics" + - " of the rocket even if it is located outside of the body tube."); + //// Note: An inner tube will not affect the aerodynamics of the rocket even if it is located outside of the body tube. + note.setText(trans.get("ringcompcfg.note.desc")); panel.add(note, "spanx, growx"); diff --git a/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java b/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java index 44925a35..3779f548 100644 --- a/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java @@ -34,6 +34,7 @@ import net.sf.openrocket.gui.components.ColorIcon; import net.sf.openrocket.gui.components.StyledLabel; import net.sf.openrocket.gui.components.StyledLabel.Style; import net.sf.openrocket.gui.components.UnitSelector; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.ComponentAssembly; import net.sf.openrocket.rocketcomponent.ExternalComponent; @@ -41,6 +42,7 @@ import net.sf.openrocket.rocketcomponent.ExternalComponent.Finish; import net.sf.openrocket.rocketcomponent.NoseCone; import net.sf.openrocket.rocketcomponent.Rocket; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.GUIUtil; import net.sf.openrocket.util.Invalidatable; @@ -49,6 +51,8 @@ import net.sf.openrocket.util.Prefs; public class RocketComponentConfig extends JPanel { + private static final Translator trans = Application.getTranslator(); + protected final RocketComponent component; protected final JTabbedPane tabbedPane; @@ -69,25 +73,34 @@ public class RocketComponentConfig extends JPanel { setLayout(new MigLayout("fill", "[grow, fill]")); this.component = component; - JLabel label = new JLabel("Component name:"); - label.setToolTipText("The component name."); + //// Component name: + JLabel label = new JLabel(trans.get("RocketCompCfg.lbl.Componentname")); + //// The component name. + label.setToolTipText(trans.get("RocketCompCfg.ttip.Thecomponentname")); this.add(label, "split, gapright 10"); componentNameField = new JTextField(15); textFieldListener = new TextFieldListener(); componentNameField.addActionListener(textFieldListener); componentNameField.addFocusListener(textFieldListener); - componentNameField.setToolTipText("The component name."); + //// The component name. + componentNameField.setToolTipText(trans.get("RocketCompCfg.ttip.Thecomponentname")); this.add(componentNameField, "growx, growy 0, wrap"); tabbedPane = new JTabbedPane(); this.add(tabbedPane, "growx, growy 1, wrap"); - tabbedPane.addTab("Override", null, overrideTab(), "Mass and CG override options"); + //// Override and Mass and CG override options + tabbedPane.addTab(trans.get("RocketCompCfg.tab.Override"), null, overrideTab(), + trans.get("RocketCompCfg.tab.MassandCGoverride")); if (component.isMassive()) - tabbedPane.addTab("Figure", null, figureTab(), "Figure style options"); - tabbedPane.addTab("Comment", null, commentTab(), "Specify a comment for the component"); + //// Figure and Figure style options + tabbedPane.addTab(trans.get("RocketCompCfg.tab.Figure"), null, figureTab(), + trans.get("RocketCompCfg.tab.Figstyleopt")); + //// Comment and Specify a comment for the component + tabbedPane.addTab(trans.get("RocketCompCfg.tab.Comment"), null, commentTab(), + trans.get("RocketCompCfg.tab.Specifyacomment")); addButtons(); @@ -102,14 +115,16 @@ public class RocketComponentConfig extends JPanel { buttonPanel = new JPanel(new MigLayout("fill, ins 0")); - massLabel = new StyledLabel("Mass: ", -1); + //// Mass: + massLabel = new StyledLabel(trans.get("RocketCompCfg.lbl.Mass") + " ", -1); buttonPanel.add(massLabel, "growx"); for (JButton b : buttons) { buttonPanel.add(b, "right, gap para"); } - JButton closeButton = new JButton("Close"); + //// Close button + JButton closeButton = new JButton(trans.get("dlg.but.close")); closeButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { @@ -142,19 +157,22 @@ public class RocketComponentConfig extends JPanel { // Mass label if (component.isMassive()) { - String text = "Component mass: "; + //// Component mass: + String text = trans.get("RocketCompCfg.lbl.Componentmass") + " "; text += UnitGroup.UNITS_MASS.getDefaultUnit().toStringUnit( component.getComponentMass()); String overridetext = null; if (component.isMassOverridden()) { - overridetext = "(overridden to " + UnitGroup.UNITS_MASS.getDefaultUnit(). + //// (overridden to + overridetext = trans.get("RocketCompCfg.lbl.overriddento")+" " + UnitGroup.UNITS_MASS.getDefaultUnit(). toStringUnit(component.getOverrideMass()) + ")"; } for (RocketComponent c = component.getParent(); c != null; c = c.getParent()) { if (c.isMassOverridden() && c.getOverrideSubcomponents()) { - overridetext = "(overridden by " + c.getName() + ")"; + ///// (overridden by + overridetext = trans.get("RocketCompCfg.lbl.overriddenby")+" " + c.getName() + ")"; } } @@ -169,25 +187,30 @@ public class RocketComponentConfig extends JPanel { protected JPanel materialPanel(JPanel panel, Material.Type type) { - return materialPanel(panel, type, "Component material:", "Component finish:"); + ////Component material: and Component finish: + return materialPanel(panel, type, trans.get("RocketCompCfg.lbl.Componentmaterial"), + trans.get("RocketCompCfg.lbl.Componentfinish")); } protected JPanel materialPanel(JPanel panel, Material.Type type, String materialString, String finishString) { JLabel label = new JLabel(materialString); - label.setToolTipText("The component material affects the weight of the component."); + //// The component material affects the weight of the component. + label.setToolTipText(trans.get("RocketCompCfg.lbl.ttip.componentmaterialaffects")); panel.add(label, "spanx 4, wrap rel"); JComboBox combo = new JComboBox(new MaterialModel(panel, component, type)); - combo.setToolTipText("The component material affects the weight of the component."); + //// The component material affects the weight of the component. + combo.setToolTipText(trans.get("RocketCompCfg.combo.ttip.componentmaterialaffects")); panel.add(combo, "spanx 4, growx, wrap paragraph"); if (component instanceof ExternalComponent) { label = new JLabel(finishString); - String tip = "The component finish affects the aerodynamic drag of the " - + "component.
" - + "The value indicated is the average roughness height of the surface."; + ////The component finish affects the aerodynamic drag of the component.
+ String tip = trans.get("RocketCompCfg.lbl.longA1") + //// The value indicated is the average roughness height of the surface. + + trans.get("RocketCompCfg.lbl.longA2"); label.setToolTipText(tip); panel.add(label, "spanx 4, wmin 220lp, wrap rel"); @@ -195,8 +218,10 @@ public class RocketComponentConfig extends JPanel { combo.setToolTipText(tip); panel.add(combo, "spanx 4, growx, split"); - JButton button = new JButton("Set for all"); - button.setToolTipText("Set this finish for all components of the rocket."); + //// Set for all + JButton button = new JButton(trans.get("RocketCompCfg.but.Setforall")); + //// Set this finish for all components of the rocket. + button.setToolTipText(trans.get("RocketCompCfg.but.ttip.Setforall")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -232,8 +257,8 @@ public class RocketComponentConfig extends JPanel { private JPanel overrideTab() { JPanel panel = new JPanel(new MigLayout("align 50% 20%, fillx, gap rel unrel", "[][65lp::][30lp::][]", "")); - - panel.add(new StyledLabel("Override the mass or center of gravity of the " + + //// Override the mass or center of gravity of the + panel.add(new StyledLabel(trans.get("RocketCompCfg.lbl.Overridemassorcenter") + " " + component.getComponentName() + ":", Style.BOLD), "spanx, wrap 20lp"); JCheckBox check; @@ -244,7 +269,8 @@ public class RocketComponentConfig extends JPanel { //// Mass bm = new BooleanModel(component, "MassOverridden"); check = new JCheckBox(bm); - check.setText("Override mass:"); + //// Override mass: + check.setText(trans.get("RocketCompCfg.checkbox.Overridemass")); panel.add(check, "growx 1, gapright 20lp"); DoubleModel m = new DoubleModel(component, "OverrideMass", UnitGroup.UNITS_MASS, 0); @@ -266,7 +292,8 @@ public class RocketComponentConfig extends JPanel { //// CG override bm = new BooleanModel(component, "CGOverridden"); check = new JCheckBox(bm); - check.setText("Override center of gravity:"); + //// Override center of gravity:" + check.setText(trans.get("RocketCompCfg.checkbox.Overridecenterofgrav")); panel.add(check, "growx 1, gapright 20lp"); m = new DoubleModel(component, "OverrideCGX", UnitGroup.UNITS_LENGTH, 0); @@ -303,12 +330,14 @@ public class RocketComponentConfig extends JPanel { // Override subcomponents checkbox bm = new BooleanModel(component, "OverrideSubcomponents"); check = new JCheckBox(bm); - check.setText("Override mass and CG of all subcomponents"); + //// Override mass and CG of all subcomponents + check.setText(trans.get("RocketCompCfg.checkbox.OverridemassandCG")); panel.add(check, "gap para, spanx, wrap para"); - - panel.add(new StyledLabel("The overridden mass does not include motors.
" + - "The center of gravity is measured from the front end of the " + + //// The overridden mass does not include motors.
+ panel.add(new StyledLabel(trans.get("RocketCompCfg.lbl.longB1") + + //// The center of gravity is measured from the front end of the + trans.get("RocketCompCfg.lbl.longB2") +" " + component.getComponentName().toLowerCase() + ".", -1), "spanx, wrap, gap para, height 0::30lp"); @@ -319,7 +348,8 @@ public class RocketComponentConfig extends JPanel { private JPanel commentTab() { JPanel panel = new JPanel(new MigLayout("fill")); - panel.add(new StyledLabel("Comments on the " + component.getComponentName() + ":", + //// Comments on the + panel.add(new StyledLabel(trans.get("RocketCompCfg.lbl.Commentsonthe") +" " + component.getComponentName() + ":", Style.BOLD), "wrap"); // TODO: LOW: Changes in comment from other sources not reflected in component @@ -340,10 +370,11 @@ public class RocketComponentConfig extends JPanel { private JPanel figureTab() { JPanel panel = new JPanel(new MigLayout("align 20% 20%")); - panel.add(new StyledLabel("Figure style:", Style.BOLD), "wrap para"); + //// Figure style: + panel.add(new StyledLabel(trans.get("RocketCompCfg.lbl.Figurestyle"), Style.BOLD), "wrap para"); - - panel.add(new JLabel("Component color:"), "gapleft para, gapright 10lp"); + //// Component color: + panel.add(new JLabel(trans.get("RocketCompCfg.lbl.Componentcolor")), "gapleft para, gapright 10lp"); colorButton = new JButton(new ColorIcon(getColor())); colorButton.addActionListener(new ActionListener() { @@ -354,7 +385,8 @@ public class RocketComponentConfig extends JPanel { c = Prefs.getDefaultColor(component.getClass()); } - c = JColorChooser.showDialog(tabbedPane, "Choose color", c); + //// Choose color + c = JColorChooser.showDialog(tabbedPane, trans.get("RocketCompCfg.lbl.Choosecolor"), c); if (c != null) { component.setColor(c); } @@ -362,7 +394,8 @@ public class RocketComponentConfig extends JPanel { }); panel.add(colorButton, "gapright 10lp"); - colorDefault = new JCheckBox("Use default color"); + //// Use default color + colorDefault = new JCheckBox(trans.get("RocketCompCfg.checkbox.Usedefaultcolor")); if (component.getColor() == null) colorDefault.setSelected(true); colorDefault.addActionListener(new ActionListener() { @@ -376,18 +409,19 @@ public class RocketComponentConfig extends JPanel { }); panel.add(colorDefault, "wrap para"); - - panel.add(new JLabel("Component line style:"), "gapleft para, gapright 10lp"); + //// Component line style: + panel.add(new JLabel(trans.get("RocketCompCfg.lbl.Complinestyle")), "gapleft para, gapright 10lp"); LineStyle[] list = new LineStyle[LineStyle.values().length + 1]; System.arraycopy(LineStyle.values(), 0, list, 1, LineStyle.values().length); JComboBox combo = new JComboBox(new EnumModel(component, "LineStyle", - list, "Default style")); + //// Default style + list, trans.get("LineStyle.Defaultstyle"))); panel.add(combo, "spanx 2, growx, wrap 50lp"); - - JButton button = new JButton("Save as default style"); + //// Save as default style + JButton button = new JButton(trans.get("RocketCompCfg.but.Saveasdefstyle")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -432,11 +466,13 @@ public class RocketComponentConfig extends JPanel { if (!(component instanceof NoseCone)) { sub = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", "")); - sub.setBorder(BorderFactory.createTitledBorder("Fore shoulder")); + //// Fore shoulder + sub.setBorder(BorderFactory.createTitledBorder(trans.get("RocketCompCfg.border.Foreshoulder"))); //// Radius - sub.add(new JLabel("Diameter:")); + //// Diameter: + sub.add(new JLabel(trans.get("RocketCompCfg.lbl.Diameter"))); m = new DoubleModel(component, "ForeShoulderRadius", 2, UnitGroup.UNITS_LENGTH, 0); m2 = new DoubleModel(component, "ForeRadius", 2, UnitGroup.UNITS_LENGTH); @@ -449,8 +485,8 @@ public class RocketComponentConfig extends JPanel { sub.add(new BasicSlider(m.getSliderModel(m0, m2)), "w 100lp, wrap"); - //// Length - sub.add(new JLabel("Length:")); + //// Length: + sub.add(new JLabel(trans.get("RocketCompCfg.lbl.Length"))); m = new DoubleModel(component, "ForeShoulderLength", UnitGroup.UNITS_LENGTH, 0); @@ -462,8 +498,8 @@ public class RocketComponentConfig extends JPanel { sub.add(new BasicSlider(m.getSliderModel(0, 0.02, 0.2)), "w 100lp, wrap"); - //// Thickness - sub.add(new JLabel("Thickness:")); + //// Thickness: + sub.add(new JLabel(trans.get("RocketCompCfg.lbl.Thickness"))); m = new DoubleModel(component, "ForeShoulderThickness", UnitGroup.UNITS_LENGTH, 0); m2 = new DoubleModel(component, "ForeShoulderRadius", UnitGroup.UNITS_LENGTH); @@ -479,8 +515,10 @@ public class RocketComponentConfig extends JPanel { //// Capped bm = new BooleanModel(component, "ForeShoulderCapped"); check = new JCheckBox(bm); - check.setText("End capped"); - check.setToolTipText("Whether the end of the shoulder is capped."); + //// End capped + check.setText(trans.get("RocketCompCfg.checkbox.Endcapped")); + //// Whether the end of the shoulder is capped. + check.setToolTipText(trans.get("RocketCompCfg.ttip.Endcapped")); sub.add(check, "spanx"); @@ -492,13 +530,16 @@ public class RocketComponentConfig extends JPanel { sub = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", "")); if (component instanceof NoseCone) - sub.setBorder(BorderFactory.createTitledBorder("Nose cone shoulder")); + //// Nose cone shoulder + sub.setBorder(BorderFactory.createTitledBorder(trans.get("RocketCompCfg.title.Noseconeshoulder"))); else - sub.setBorder(BorderFactory.createTitledBorder("Aft shoulder")); + //// Aft shoulder + sub.setBorder(BorderFactory.createTitledBorder(trans.get("RocketCompCfg.title.Aftshoulder"))); //// Radius - sub.add(new JLabel("Diameter:")); + //// Diameter: + sub.add(new JLabel(trans.get("RocketCompCfg.lbl.Diameter"))); m = new DoubleModel(component, "AftShoulderRadius", 2, UnitGroup.UNITS_LENGTH, 0); m2 = new DoubleModel(component, "AftRadius", 2, UnitGroup.UNITS_LENGTH); @@ -511,8 +552,8 @@ public class RocketComponentConfig extends JPanel { sub.add(new BasicSlider(m.getSliderModel(m0, m2)), "w 100lp, wrap"); - //// Length - sub.add(new JLabel("Length:")); + //// Length: + sub.add(new JLabel(trans.get("RocketCompCfg.lbl.Length"))); m = new DoubleModel(component, "AftShoulderLength", UnitGroup.UNITS_LENGTH, 0); @@ -524,8 +565,8 @@ public class RocketComponentConfig extends JPanel { sub.add(new BasicSlider(m.getSliderModel(0, 0.02, 0.2)), "w 100lp, wrap"); - //// Thickness - sub.add(new JLabel("Thickness:")); + //// Thickness: + sub.add(new JLabel(trans.get("RocketCompCfg.lbl.Thickness"))); m = new DoubleModel(component, "AftShoulderThickness", UnitGroup.UNITS_LENGTH, 0); m2 = new DoubleModel(component, "AftShoulderRadius", UnitGroup.UNITS_LENGTH); @@ -541,8 +582,10 @@ public class RocketComponentConfig extends JPanel { //// Capped bm = new BooleanModel(component, "AftShoulderCapped"); check = new JCheckBox(bm); - check.setText("End capped"); - check.setToolTipText("Whether the end of the shoulder is capped."); + //// End capped + check.setText(trans.get("RocketCompCfg.checkbox.Endcapped")); + //// Whether the end of the shoulder is capped. + check.setToolTipText(trans.get("RocketCompCfg.ttip.Endcapped")); sub.add(check, "spanx"); diff --git a/src/net/sf/openrocket/gui/configdialog/RocketConfig.java b/src/net/sf/openrocket/gui/configdialog/RocketConfig.java index cf62fd08..5617fa09 100644 --- a/src/net/sf/openrocket/gui/configdialog/RocketConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/RocketConfig.java @@ -11,11 +11,14 @@ import javax.swing.JScrollPane; import javax.swing.JTextArea; import net.miginfocom.swing.MigLayout; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.Rocket; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.GUIUtil; public class RocketConfig extends RocketComponentConfig { + private static final Translator trans = Application.getTranslator(); private TextFieldListener textFieldListener; @@ -32,11 +35,12 @@ public class RocketConfig extends RocketComponentConfig { this.removeAll(); setLayout(new MigLayout("fill")); - this.add(new JLabel("Design name:"), "top, pad 4lp, gapright 10lp"); + //// Design name: + this.add(new JLabel(trans.get("RocketCfg.lbl.Designname")), "top, pad 4lp, gapright 10lp"); this.add(componentNameField, "growx, wrap para"); - - this.add(new JLabel("Designer:"), "top, pad 4lp, gapright 10lp"); + //// Designer: + this.add(new JLabel(trans.get("RocketCfg.lbl.Designer")), "top, pad 4lp, gapright 10lp"); textFieldListener = new TextFieldListener(); designerTextArea = new JTextArea(rocket.getDesigner()); @@ -47,12 +51,12 @@ public class RocketConfig extends RocketComponentConfig { designerTextArea.addFocusListener(textFieldListener); this.add(new JScrollPane(designerTextArea), "wmin 400lp, height 60lp:60lp:, grow 30, wrap para"); - - this.add(new JLabel("Comments:"), "top, pad 4lp, gapright 10lp"); + //// Comments: + this.add(new JLabel(trans.get("RocketCfg.lbl.Comments")), "top, pad 4lp, gapright 10lp"); this.add(new JScrollPane(commentTextArea), "wmin 400lp, height 155lp:155lp:, grow 100, wrap para"); - - this.add(new JLabel("Revision history:"), "top, pad 4lp, gapright 10lp"); + //// Revision history: + this.add(new JLabel(trans.get("RocketCfg.lbl.Material")), "top, pad 4lp, gapright 10lp"); revisionTextArea = new JTextArea(rocket.getRevision()); revisionTextArea.setLineWrap(true); revisionTextArea.setWrapStyleWord(true); diff --git a/src/net/sf/openrocket/gui/configdialog/ShockCordConfig.java b/src/net/sf/openrocket/gui/configdialog/ShockCordConfig.java index e3b1ba53..0a21fc4c 100644 --- a/src/net/sf/openrocket/gui/configdialog/ShockCordConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/ShockCordConfig.java @@ -12,12 +12,14 @@ import net.sf.openrocket.gui.adaptors.DoubleModel; import net.sf.openrocket.gui.adaptors.EnumModel; import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.UnitSelector; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; public class ShockCordConfig extends RocketComponentConfig { - + private static final Translator trans = Application.getTranslator(); public ShockCordConfig(RocketComponent component) { super(component); @@ -32,7 +34,8 @@ public class ShockCordConfig extends RocketComponentConfig { ////// Left side // Cord length - label = new JLabel("Shock cord length"); + //// Shock cord length + label = new JLabel(trans.get("ShockCordCfg.lbl.Shockcordlength")); panel.add(label); m = new DoubleModel(component,"CordLength",UnitGroup.UNITS_LENGTH,0); @@ -46,7 +49,8 @@ public class ShockCordConfig extends RocketComponentConfig { // Material - materialPanel(panel, Material.Type.LINE, "Shock cord material:", null); + //// Shock cord material: + materialPanel(panel, Material.Type.LINE, trans.get("ShockCordCfg.lbl.Shockcordmaterial"), null); @@ -56,8 +60,8 @@ public class ShockCordConfig extends RocketComponentConfig { //// Position - - panel2.add(new JLabel("Position relative to:")); + //// Position relative to: + panel2.add(new JLabel(trans.get("ShockCordCfg.lbl.Posrelativeto"))); JComboBox combo = new JComboBox( new EnumModel(component, "RelativePosition", @@ -69,7 +73,8 @@ public class ShockCordConfig extends RocketComponentConfig { })); panel2.add(combo,"spanx, growx, wrap"); - panel2.add(new JLabel("plus"),"right"); + //// plus + panel2.add(new JLabel(trans.get("ShockCordCfg.lbl.plus")),"right"); m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH); spin = new JSpinner(m.getSpinnerModel()); @@ -84,7 +89,8 @@ public class ShockCordConfig extends RocketComponentConfig { //// Spatial length - panel2.add(new JLabel("Packed length:")); + //// Packed length: + panel2.add(new JLabel(trans.get("ShockCordCfg.lbl.Packedlength"))); m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0); @@ -97,7 +103,8 @@ public class ShockCordConfig extends RocketComponentConfig { //// Tube diameter - panel2.add(new JLabel("Packed diameter:")); + //// Packed diameter: + panel2.add(new JLabel(trans.get("ShockCordCfg.lbl.Packeddiam"))); DoubleModel od = new DoubleModel(component,"Radius",2,UnitGroup.UNITS_LENGTH,0); // Diameter = 2*Radius @@ -111,8 +118,8 @@ public class ShockCordConfig extends RocketComponentConfig { - - tabbedPane.insertTab("General", null, panel, "General properties", 0); + //// General and General properties + tabbedPane.insertTab(trans.get("ShockCordCfg.tab.General"), null, panel, trans.get("ShockCordCfg.tab.ttip.General"), 0); // tabbedPane.insertTab("Radial position", null, positionTab(), // "Radial position configuration", 1); tabbedPane.setSelectedIndex(0); diff --git a/src/net/sf/openrocket/gui/configdialog/SleeveConfig.java b/src/net/sf/openrocket/gui/configdialog/SleeveConfig.java index fbb24806..67160b81 100644 --- a/src/net/sf/openrocket/gui/configdialog/SleeveConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/SleeveConfig.java @@ -3,19 +3,28 @@ package net.sf.openrocket.gui.configdialog; import javax.swing.JPanel; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; public class SleeveConfig extends RingComponentConfig { - + private static final Translator trans = Application.getTranslator(); + public SleeveConfig(RocketComponent c) { super(c); JPanel tab; - - tab = generalTab("Outer diameter:", "Inner diameter:", "Wall thickness:", "Length:"); - tabbedPane.insertTab("General", null, tab, "General properties", 0); + //// Outer diameter: + //// Inner diameter: + //// Wall thickness: + //// Length: + tab = generalTab(trans.get("SleeveCfg.tab.Outerdiam"), trans.get("SleeveCfg.tab.Innerdiam"), + trans.get("SleeveCfg.tab.Wallthickness"), trans.get("SleeveCfg.tab.Length")); + //// General and General properties + tabbedPane.insertTab(trans.get("SleeveCfg.tab.General"), null, tab, + trans.get("SleeveCfg.tab.Generalproperties"), 0); tabbedPane.setSelectedIndex(0); } diff --git a/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java b/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java index 5f94bbb9..42648637 100644 --- a/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java @@ -20,14 +20,17 @@ import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.HtmlLabel; import net.sf.openrocket.gui.components.StyledLabel; import net.sf.openrocket.gui.components.UnitSelector; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.MassComponent; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.MotorMount.IgnitionEvent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; public class StreamerConfig extends RecoveryDeviceConfig { - + private static final Translator trans = Application.getTranslator(); + public StreamerConfig(final RocketComponent component) { super(component); @@ -36,8 +39,8 @@ public class StreamerConfig extends RecoveryDeviceConfig { JPanel panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::][]","")); - - panel.add(new JLabel("Strip length:")); + //// Strip length: + panel.add(new JLabel(trans.get("StreamerCfg.lbl.Striplength"))); DoubleModel m = new DoubleModel(component,"StripLength",UnitGroup.UNITS_LENGTH,0); @@ -47,8 +50,8 @@ public class StreamerConfig extends RecoveryDeviceConfig { panel.add(new UnitSelector(m),"growx"); panel.add(new BasicSlider(m.getSliderModel(0, 0.6, 1.5)),"w 100lp, wrap"); - - panel.add(new JLabel("Strip width:")); + //// Strip width: + panel.add(new JLabel(trans.get("StreamerCfg.lbl.Stripwidth"))); m = new DoubleModel(component,"StripWidth",UnitGroup.UNITS_LENGTH,0); @@ -60,8 +63,8 @@ public class StreamerConfig extends RecoveryDeviceConfig { - - panel.add(new JLabel("Strip area:")); + //// Strip area: + panel.add(new JLabel(trans.get("StreamerCfg.lbl.Striparea"))); m = new DoubleModel(component,"Area",UnitGroup.UNITS_AREA,0); @@ -71,8 +74,8 @@ public class StreamerConfig extends RecoveryDeviceConfig { panel.add(new UnitSelector(m),"growx"); panel.add(new BasicSlider(m.getSliderModel(0, 0.04, 0.25)),"w 100lp, wrap"); - - panel.add(new JLabel("Aspect ratio:")); + //// Aspect ratio: + panel.add(new JLabel(trans.get("StreamerCfg.lbl.Aspectratio"))); m = new DoubleModel(component,"AspectRatio",UnitGroup.UNITS_NONE,0); @@ -83,20 +86,24 @@ public class StreamerConfig extends RecoveryDeviceConfig { panel.add(new BasicSlider(m.getSliderModel(2, 15)),"skip, w 100lp, wrap 20lp"); - - panel.add(new JLabel("Material:")); + //// Material: + panel.add(new JLabel(trans.get("StreamerCfg.lbl.Material"))); JComboBox combo = new JComboBox(new MaterialModel(panel, component, Material.Type.SURFACE)); - combo.setToolTipText("The component material affects the weight of the component."); + //// The component material affects the weight of the component. + combo.setToolTipText(trans.get("StreamerCfg.combo.ttip.MaterialModel")); panel.add(combo,"spanx 3, growx, wrap 20lp"); // CD - JLabel label = new HtmlLabel("Drag coefficient CD:"); - String tip = "The drag coefficient relative to the total area of the streamer.
" + - "A larger drag coefficient yields a slowed descent rate."; + //// Drag coefficient CD: + JLabel label = new HtmlLabel(trans.get("StreamerCfg.lbl.longA1")); + //// The drag coefficient relative to the total area of the streamer.
+ String tip = trans.get("StreamerCfg.lbl.longB1") + + //// "A larger drag coefficient yields a slowed descent rate. + trans.get("StreamerCfg.lbl.longB2"); label.setToolTipText(tip); panel.add(label); @@ -108,10 +115,12 @@ public class StreamerConfig extends RecoveryDeviceConfig { panel.add(spin,"growx"); JCheckBox check = new JCheckBox(m.getAutomaticAction()); - check.setText("Automatic"); + //// Automatic + check.setText(trans.get("StreamerCfg.lbl.Automatic")); panel.add(check,"skip, span, wrap"); - panel.add(new StyledLabel("The drag coefficient is relative to the area of the streamer.", + //// The drag coefficient is relative to the area of the streamer. + panel.add(new StyledLabel(trans.get("StreamerCfg.lbl.longC1"), -2), "span, wrap"); @@ -123,8 +132,8 @@ public class StreamerConfig extends RecoveryDeviceConfig { //// Position - - panel.add(new JLabel("Position relative to:")); + //// Position relative to: + panel.add(new JLabel(trans.get("StreamerCfg.lbl.Posrelativeto"))); combo = new JComboBox( new EnumModel(component, "RelativePosition", @@ -136,7 +145,8 @@ public class StreamerConfig extends RecoveryDeviceConfig { })); panel.add(combo,"spanx, growx, wrap"); - panel.add(new JLabel("plus"),"right"); + //// plus + panel.add(new JLabel(trans.get("StreamerCfg.lbl.plus")),"right"); m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH); spin = new JSpinner(m.getSpinnerModel()); @@ -150,8 +160,8 @@ public class StreamerConfig extends RecoveryDeviceConfig { "w 100lp, wrap"); - //// Spatial length - panel.add(new JLabel("Packed length:")); + //// Spatial length: + panel.add(new JLabel(trans.get("StreamerCfg.lbl.Packedlength"))); m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0); @@ -164,7 +174,8 @@ public class StreamerConfig extends RecoveryDeviceConfig { //// Tube diameter - panel.add(new JLabel("Packed diameter:")); + //// Packed diameter: + panel.add(new JLabel(trans.get("StreamerCfg.lbl.Packeddiam"))); DoubleModel od = new DoubleModel(component,"Radius",2,UnitGroup.UNITS_LENGTH,0); // Diameter = 2*Radius @@ -178,24 +189,26 @@ public class StreamerConfig extends RecoveryDeviceConfig { //// Deployment - - panel.add(new JLabel("Deploys at:"),""); + //// Deploys at: + panel.add(new JLabel(trans.get("StreamerCfg.lbl.Deploysat")),""); combo = new JComboBox(new EnumModel(component, "DeployEvent")); panel.add(combo,"spanx 3, growx, wrap"); // ... and delay - panel.add(new JLabel("plus"),"right"); + //// plus + panel.add(new JLabel(trans.get("StreamerCfg.lbl.plus")),"right"); m = new DoubleModel(component,"DeployDelay",0); spin = new JSpinner(m.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); panel.add(spin,"spanx, split"); - panel.add(new JLabel("seconds"),"wrap paragraph"); + //// seconds + panel.add(new JLabel(trans.get("StreamerCfg.lbl.seconds")),"wrap paragraph"); - // Altitude - label = new JLabel("Altitude:"); + // Altitude: + label = new JLabel(trans.get("StreamerCfg.lbl.Altitude")); altitudeComponents.add(label); panel.add(label); @@ -216,10 +229,13 @@ public class StreamerConfig extends RecoveryDeviceConfig { primary.add(panel, "grow"); updateFields(); - - tabbedPane.insertTab("General", null, primary, "General properties", 0); - tabbedPane.insertTab("Radial position", null, positionTab(), - "Radial position configuration", 1); + + //// General and General properties + tabbedPane.insertTab(trans.get("StreamerCfg.tab.General"), null, primary, + trans.get("StreamerCfg.tab.ttip.General"), 0); + //// Radial position and Radial position configuration + tabbedPane.insertTab(trans.get("StreamerCfg.tab.Radialpos"), null, positionTab(), + trans.get("StreamerCfg.tab.ttip.Radialpos"), 1); tabbedPane.setSelectedIndex(0); } @@ -231,7 +247,8 @@ public class StreamerConfig extends RecoveryDeviceConfig { JPanel panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::]","")); //// Radial position - panel.add(new JLabel("Radial distance:")); + //// Radial distance: + panel.add(new JLabel(trans.get("StreamerCfg.lbl.Radialdistance"))); DoubleModel m = new DoubleModel(component,"RadialPosition",UnitGroup.UNITS_LENGTH,0); @@ -244,7 +261,8 @@ public class StreamerConfig extends RecoveryDeviceConfig { //// Radial direction - panel.add(new JLabel("Radial direction:")); + //// Radial direction: + panel.add(new JLabel(trans.get("StreamerCfg.lbl.Radialdirection"))); m = new DoubleModel(component,"RadialDirection",UnitGroup.UNITS_ANGLE,0); @@ -257,7 +275,7 @@ public class StreamerConfig extends RecoveryDeviceConfig { //// Reset button - JButton button = new JButton("Reset"); + JButton button = new JButton(trans.get("StreamerCfg.but.Reset")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { diff --git a/src/net/sf/openrocket/gui/configdialog/ThicknessRingComponentConfig.java b/src/net/sf/openrocket/gui/configdialog/ThicknessRingComponentConfig.java index 2230979b..2b1bb6f3 100644 --- a/src/net/sf/openrocket/gui/configdialog/ThicknessRingComponentConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/ThicknessRingComponentConfig.java @@ -3,19 +3,30 @@ package net.sf.openrocket.gui.configdialog; import javax.swing.JPanel; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; public class ThicknessRingComponentConfig extends RingComponentConfig { - + private static final Translator trans = Application.getTranslator(); + public ThicknessRingComponentConfig(RocketComponent c) { super(c); JPanel tab; - tab = generalTab("Outer diameter:", "Inner diameter:", "Wall thickness:", "Length:"); - tabbedPane.insertTab("General", null, tab, "General properties", 0); + //// Outer diameter: + //// Inner diameter: + //// Wall thickness: + //// Length: + tab = generalTab(trans.get("ThicknessRingCompCfg.tab.Outerdiam"), + trans.get("ThicknessRingCompCfg.tab.Innerdiam"), + trans.get("ThicknessRingCompCfg.tab.Wallthickness"), trans.get("ThicknessRingCompCfg.tab.Length")); + //// General and General properties + tabbedPane.insertTab(trans.get("ThicknessRingCompCfg.tab.General"), null, tab, + trans.get("ThicknessRingCompCfg.tab.Generalprop"), 0); tabbedPane.setSelectedIndex(0); } diff --git a/src/net/sf/openrocket/gui/configdialog/TransitionConfig.java b/src/net/sf/openrocket/gui/configdialog/TransitionConfig.java index 8f4660b1..513c49eb 100644 --- a/src/net/sf/openrocket/gui/configdialog/TransitionConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/TransitionConfig.java @@ -17,13 +17,16 @@ import net.sf.openrocket.gui.adaptors.DoubleModel; import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.DescriptionArea; import net.sf.openrocket.gui.components.UnitSelector; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.Transition; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; public class TransitionConfig extends RocketComponentConfig { + private static final Translator trans = Application.getTranslator(); private JComboBox typeBox; //private JLabel description; @@ -49,8 +52,8 @@ public class TransitionConfig extends RocketComponentConfig { //// Shape selection - - panel.add(new JLabel("Transition shape:")); + //// Transition shape: + panel.add(new JLabel(trans.get("TransitionCfg.lbl.Transitionshape"))); Transition.Shape selected = ((Transition)component).getType(); Transition.Shape[] typeList = Transition.Shape.values(); @@ -68,14 +71,15 @@ public class TransitionConfig extends RocketComponentConfig { }); panel.add(typeBox,"span, split 2"); - + //// Clipped checkbox = new JCheckBox(new BooleanModel(component,"Clipped")); - checkbox.setText("Clipped"); + //// Clipped + checkbox.setText(trans.get("TransitionCfg.checkbox.Clipped")); panel.add(checkbox,"wrap"); - //// Shape parameter - shapeLabel = new JLabel("Shape parameter:"); + //// Shape parameter: + shapeLabel = new JLabel(trans.get("TransitionCfg.lbl.Shapeparam")); panel.add(shapeLabel); m = new DoubleModel(component,"ShapeParameter"); @@ -93,7 +97,8 @@ public class TransitionConfig extends RocketComponentConfig { //// Length - panel.add(new JLabel("Transition length:")); + //// Transition length: + panel.add(new JLabel(trans.get("TransitionCfg.lbl.Transitionlength"))); m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0); @@ -106,7 +111,8 @@ public class TransitionConfig extends RocketComponentConfig { //// Transition diameter 1 - panel.add(new JLabel("Fore diameter:")); + //// Fore diameter: + panel.add(new JLabel(trans.get("TransitionCfg.lbl.Forediam"))); DoubleModel od = new DoubleModel(component,"ForeRadius",2,UnitGroup.UNITS_LENGTH,0); // Diameter = 2*Radius @@ -119,12 +125,14 @@ public class TransitionConfig extends RocketComponentConfig { panel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)),"w 100lp, wrap 0px"); checkbox = new JCheckBox(od.getAutomaticAction()); - checkbox.setText("Automatic"); + //// Automatic + checkbox.setText(trans.get("TransitionCfg.checkbox.Automatic")); panel.add(checkbox,"skip, span 2, wrap"); //// Transition diameter 2 - panel.add(new JLabel("Aft diameter:")); + //// Aft diameter: + panel.add(new JLabel(trans.get("TransitionCfg.lbl.Aftdiam"))); od = new DoubleModel(component,"AftRadius",2,UnitGroup.UNITS_LENGTH,0); // Diameter = 2*Radius @@ -137,12 +145,13 @@ public class TransitionConfig extends RocketComponentConfig { panel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)),"w 100lp, wrap 0px"); checkbox = new JCheckBox(od.getAutomaticAction()); - checkbox.setText("Automatic"); + //// Automatic + checkbox.setText(trans.get("TransitionCfg.checkbox.Automatic")); panel.add(checkbox,"skip, span 2, wrap"); - //// Wall thickness - panel.add(new JLabel("Wall thickness:")); + //// Wall thickness: + panel.add(new JLabel(trans.get("TransitionCfg.lbl.Wallthickness"))); m = new DoubleModel(component,"Thickness",UnitGroup.UNITS_LENGTH,0); @@ -153,9 +162,10 @@ public class TransitionConfig extends RocketComponentConfig { panel.add(new UnitSelector(m),"growx"); panel.add(new BasicSlider(m.getSliderModel(0,0.01)),"w 100lp, wrap 0px"); - + //// Filled checkbox = new JCheckBox(new BooleanModel(component,"Filled")); - checkbox.setText("Filled"); + //// Filled + checkbox.setText(trans.get("TransitionCfg.checkbox.Filled")); panel.add(checkbox,"skip, span 2, wrap"); @@ -176,9 +186,12 @@ public class TransitionConfig extends RocketComponentConfig { materialPanel(panel2, Material.Type.BULK); panel.add(panel2, "cell 4 0, gapleft paragraph, aligny 0%, spany"); - - tabbedPane.insertTab("General", null, panel, "General properties", 0); - tabbedPane.insertTab("Shoulder", null, shoulderTab(), "Shoulder properties", 1); + //// General and General properties + tabbedPane.insertTab(trans.get("TransitionCfg.tab.General"), null, panel, + trans.get("TransitionCfg.tab.Generalproperties"), 0); + //// Shoulder and Shoulder properties + tabbedPane.insertTab(trans.get("TransitionCfg.tab.Shoulder"), null, shoulderTab(), + trans.get("TransitionCfg.tab.Shoulderproperties"), 1); tabbedPane.setSelectedIndex(0); } diff --git a/src/net/sf/openrocket/gui/configdialog/TrapezoidFinSetConfig.java b/src/net/sf/openrocket/gui/configdialog/TrapezoidFinSetConfig.java index 92081be6..d4482de1 100644 --- a/src/net/sf/openrocket/gui/configdialog/TrapezoidFinSetConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/TrapezoidFinSetConfig.java @@ -15,15 +15,18 @@ import net.sf.openrocket.gui.adaptors.EnumModel; import net.sf.openrocket.gui.adaptors.IntegerModel; import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.UnitSelector; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.FinSet; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.TrapezoidFinSet; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; public class TrapezoidFinSetConfig extends FinSetConfig { - + private static final Translator trans = Application.getTranslator(); + public TrapezoidFinSetConfig(final RocketComponent component) { super(component); @@ -36,22 +39,26 @@ public class TrapezoidFinSetConfig extends FinSetConfig { JPanel panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::]","")); - //// Number of fins - JLabel label = new JLabel("Number of fins:"); - label.setToolTipText("The number of fins in the fin set."); + //// Number of fins: + JLabel label = new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Nbroffins")); + //// The number of fins in the fin set. + label.setToolTipText(trans.get("TrapezoidFinSetCfg.lbl.ttip.Nbroffins")); panel.add(label); IntegerModel im = new IntegerModel(component,"FinCount",1,8); spin = new JSpinner(im.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); - spin.setToolTipText("The number of fins in the fin set."); + //// The number of fins in the fin set. + spin.setToolTipText(trans.get("TrapezoidFinSetCfg.lbl.ttip.Nbroffins")); panel.add(spin,"growx, wrap"); //// Base rotation - label = new JLabel("Fin rotation:"); - label.setToolTipText("The angle of the first fin in the fin set."); + //// Fin rotation: + label = new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Finrotation")); + //// The angle of the first fin in the fin set. + label.setToolTipText(trans.get("TrapezoidFinSetCfg.lbl.ttip.Finrotation")); panel.add(label); m = new DoubleModel(component, "BaseRotation", UnitGroup.UNITS_ANGLE,-Math.PI,Math.PI); @@ -64,10 +71,10 @@ public class TrapezoidFinSetConfig extends FinSetConfig { panel.add(new BasicSlider(m.getSliderModel(-Math.PI,Math.PI)),"w 100lp, wrap"); - //// Fin cant - label = new JLabel("Fin cant:"); - label.setToolTipText("The angle that the fins are canted with respect to the rocket " + - "body."); + //// Fin cant: + label = new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Fincant")); + //// The angle that the fins are canted with respect to the rocket + label.setToolTipText(trans.get("TrapezoidFinSetCfg.lbl.ttip.Fincant")); panel.add(label); m = new DoubleModel(component, "CantAngle", UnitGroup.UNITS_ANGLE, @@ -82,8 +89,8 @@ public class TrapezoidFinSetConfig extends FinSetConfig { "w 100lp, wrap"); - //// Root chord - panel.add(new JLabel("Root chord:")); + //// Root chord: + panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Rootchord"))); m = new DoubleModel(component,"RootChord",UnitGroup.UNITS_LENGTH,0); @@ -96,8 +103,8 @@ public class TrapezoidFinSetConfig extends FinSetConfig { - //// Tip chord - panel.add(new JLabel("Tip chord:")); + //// Tip chord: + panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Tipchord"))); m = new DoubleModel(component,"TipChord",UnitGroup.UNITS_LENGTH,0); @@ -109,8 +116,8 @@ public class TrapezoidFinSetConfig extends FinSetConfig { panel.add(new BasicSlider(m.getSliderModel(0,0.05,0.2)),"w 100lp, wrap"); - //// Height - panel.add(new JLabel("Height:")); + //// Height: + panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Height"))); m = new DoubleModel(component,"Height",UnitGroup.UNITS_LENGTH,0); @@ -123,8 +130,8 @@ public class TrapezoidFinSetConfig extends FinSetConfig { - //// Sweep - panel.add(new JLabel("Sweep length:")); + //// Sweep length: + panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Sweeplength"))); m = new DoubleModel(component,"Sweep",UnitGroup.UNITS_LENGTH); @@ -140,8 +147,8 @@ public class TrapezoidFinSetConfig extends FinSetConfig { panel.add(new BasicSlider(m.getSliderModel(tc,rc)),"w 100lp, wrap"); - //// Sweep angle - panel.add(new JLabel("Sweep angle:")); + //// Sweep angle: + panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Sweepangle"))); m = new DoubleModel(component, "SweepAngle",UnitGroup.UNITS_ANGLE, -TrapezoidFinSet.MAX_SWEEP_ANGLE,TrapezoidFinSet.MAX_SWEEP_ANGLE); @@ -168,15 +175,15 @@ public class TrapezoidFinSetConfig extends FinSetConfig { - //// Cross section - panel.add(new JLabel("Fin cross section:")); + //// Fin cross section: + panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.FincrossSection"))); combo = new JComboBox( new EnumModel(component,"CrossSection")); panel.add(combo,"span, growx, wrap"); - //// Thickness - panel.add(new JLabel("Thickness:")); + //// Thickness: + panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Thickness"))); m = new DoubleModel(component,"Thickness",UnitGroup.UNITS_LENGTH,0); @@ -189,8 +196,8 @@ public class TrapezoidFinSetConfig extends FinSetConfig { //// Position - - panel.add(new JLabel("Position relative to:")); + //// Position relative to: + panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.Posrelativeto"))); combo = new JComboBox( new EnumModel(component, "RelativePosition", @@ -201,8 +208,8 @@ public class TrapezoidFinSetConfig extends FinSetConfig { RocketComponent.Position.ABSOLUTE })); panel.add(combo,"spanx, growx, wrap"); - - panel.add(new JLabel("plus"),"right"); + //// plus + panel.add(new JLabel(trans.get("TrapezoidFinSetCfg.lbl.plus")),"right"); m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH); spin = new JSpinner(m.getSpinnerModel()); @@ -225,8 +232,9 @@ public class TrapezoidFinSetConfig extends FinSetConfig { mainPanel.add(panel,"aligny 20%"); - - tabbedPane.insertTab("General", null, mainPanel, "General properties", 0); + //// General and General properties + tabbedPane.insertTab(trans.get("TrapezoidFinSetCfg.tab.General"), null, mainPanel, + trans.get("TrapezoidFinSetCfg.tab.Generalproperties"), 0); tabbedPane.setSelectedIndex(0); addFinSetButtons(); diff --git a/src/net/sf/openrocket/gui/dialogs/AboutDialog.java b/src/net/sf/openrocket/gui/dialogs/AboutDialog.java index 6b8ec1ec..5eb2fde9 100644 --- a/src/net/sf/openrocket/gui/dialogs/AboutDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/AboutDialog.java @@ -12,7 +12,10 @@ import javax.swing.JPanel; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.gui.components.DescriptionArea; import net.sf.openrocket.gui.components.StyledLabel; +import net.sf.openrocket.gui.components.StyledLabel.Style; import net.sf.openrocket.gui.components.URLLabel; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.Chars; import net.sf.openrocket.util.GUIUtil; import net.sf.openrocket.util.Icons; @@ -21,11 +24,13 @@ import net.sf.openrocket.util.Prefs; public class AboutDialog extends JDialog { public static final String OPENROCKET_URL = "http://openrocket.sourceforge.net/"; + private static final Translator trans = Application.getTranslator(); private static final String CREDITS = "
" + "OpenRocket has been developed by:

" + "Sampo Niskanen (main developer)
" + - "Doug Pedrick (RockSim file format, printing)

" + + "Doug Pedrick (RockSim file format, printing)
" + + "Boris du Reau (internationalization, translation lead)

" + "OpenRocket utilizes the following libraries:

" + "MiG Layout (http://www.miglayout.com/)
" + "JFreeChart (http://www.jfree.org/jfreechart/)
" + @@ -38,30 +43,53 @@ public class AboutDialog extends JDialog { final String version = Prefs.getVersion(); JPanel panel = new JPanel(new MigLayout("fill")); + JPanel sub; - panel.add(new JLabel(Icons.loadImageIcon("pix/icon/icon-about.png", "OpenRocket")), - "spany 4, top"); + + // OpenRocket logo + panel.add(new JLabel(Icons.loadImageIcon("pix/icon/icon-about.png", "OpenRocket")), "top"); + + + // OpenRocket version info + copyright + sub = new JPanel(new MigLayout("fill")); - panel.add(new StyledLabel("OpenRocket", 20), "ax 50%, growy, wrap para"); - panel.add(new StyledLabel("Version " + version, 3), "ax 50%, growy, wrap rel"); + sub.add(new StyledLabel("OpenRocket", 20), "ax 50%, growy, wrap para"); + sub.add(new StyledLabel(trans.get("lbl.version").trim() + " " + version, 3), "ax 50%, growy, wrap rel"); + sub.add(new StyledLabel("Copyright " + Chars.COPY + " 2007-2011 Sampo Niskanen"), "ax 50%, growy, wrap para"); - // String source = Prefs.getBuildSource(); - // if (!Prefs.DEFAULT_BUILD_SOURCE.equalsIgnoreCase(source)) { - // panel.add(new StyledLabel("Distributed by " + source, -1), - // "ax 50%, growy, wrap para"); - // } else { - // panel.add(new StyledLabel(" ", -1), "ax 50%, growy, wrap para"); - // } + sub.add(new URLLabel(OPENROCKET_URL), "ax 50%, growy, wrap para"); + panel.add(sub, "grow"); - panel.add(new StyledLabel("Copyright " + Chars.COPY + " 2007-2011 Sampo Niskanen"), - "ax 50%, growy, wrap para"); + + // Translation information (if present) + String translation = trans.get("lbl.translation").trim(); + String translator = trans.get("lbl.translator").trim(); + String translatorWebsite = trans.get("lbl.translatorWebsite").trim(); + String translatorIcon = trans.get("lbl.translatorIcon").trim(); - panel.add(new URLLabel(OPENROCKET_URL), "ax 50%, growy, wrap para"); + if (translator.length() > 0 || translatorWebsite.length() > 0 || translatorIcon.length() > 0) { + sub = new JPanel(new MigLayout("fill")); + + sub.add(new StyledLabel(translation, Style.BOLD), "ax 50%, growy, wrap para"); + + if (translatorIcon.length() > 0) { + sub.add(new JLabel(Icons.loadImageIcon("pix/translators/" + translatorIcon, translator)), + "ax 50%, growy, wrap para"); + } + if (translator.length() > 0) { + sub.add(new JLabel(translator), "ax 50%, growy, wrap rel"); + } + if (translatorWebsite.length() > 0) { + sub.add(new URLLabel(translatorWebsite), "ax 50%, growy, wrap para"); + } + + panel.add(sub); + } DescriptionArea info = new DescriptionArea(5); info.setText(CREDITS); - panel.add(info, "width 10px, height 100lp, grow, spanx, wrap para"); + panel.add(info, "newline, width 10px, height 100lp, grow, spanx, wrap para"); // JTextArea area = new JTextArea(CREATORS); // area.setEditable(false); @@ -70,7 +98,8 @@ public class AboutDialog extends JDialog { // panel.add(new JScrollPane(area), "width 10px, height 100lp, grow, spanx, wrap para"); - JButton close = new JButton("Close"); + //Close button + JButton close = new JButton(trans.get("button.close")); close.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -88,5 +117,4 @@ public class AboutDialog extends JDialog { GUIUtil.setDisposableDialogOptions(this, close); } - } diff --git a/src/net/sf/openrocket/gui/dialogs/BugReportDialog.java b/src/net/sf/openrocket/gui/dialogs/BugReportDialog.java index cb51317f..9966dbe5 100644 --- a/src/net/sf/openrocket/gui/dialogs/BugReportDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/BugReportDialog.java @@ -30,6 +30,7 @@ import net.miginfocom.swing.MigLayout; import net.sf.openrocket.communication.BugReporter; import net.sf.openrocket.gui.components.SelectableLabel; import net.sf.openrocket.gui.components.StyledLabel; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.LogLevelBufferLogger; import net.sf.openrocket.logging.LogLine; import net.sf.openrocket.startup.Application; @@ -41,10 +42,12 @@ import net.sf.openrocket.util.Prefs; public class BugReportDialog extends JDialog { private static final String REPORT_EMAIL = "openrocket-bugs@lists.sourceforge.net"; - + private static final Translator trans = Application.getTranslator(); + public BugReportDialog(Window parent, String labelText, String message) { - super(parent, "Bug report", Dialog.ModalityType.APPLICATION_MODAL); + //// Bug report + super(parent, trans.get("bugreport.dlg.title"), Dialog.ModalityType.APPLICATION_MODAL); JPanel panel = new JPanel(new MigLayout("fill")); @@ -55,14 +58,16 @@ public class BugReportDialog extends JDialog { label.setMaximumSize(d); panel.add(label, "gapleft para, wrap para"); - label = new JLabel("If connected to the Internet, you can simply click " + - "Send bug report."); + //// If connected to the Internet, you can simply click + //// Send bug report. + label = new JLabel(trans.get("bugreport.dlg.connectedInternet")); d = label.getPreferredSize(); d.width = 100000; label.setMaximumSize(d); panel.add(label, "gapleft para, wrap"); - panel.add(new JLabel("Otherwise, send the text below to the address: "), + //// Otherwise, send the text below to the address: + panel.add(new JLabel(trans.get("bugreport.dlg.otherwise") +" "), "gapleft para, split 2, gapright rel"); panel.add(new SelectableLabel(REPORT_EMAIL), "growx, wrap para"); @@ -72,14 +77,12 @@ public class BugReportDialog extends JDialog { panel.add(new JScrollPane(textArea), "grow, wrap"); - panel.add(new StyledLabel("The information above may be included in a public " + - "bug report. Make sure it does not contain any sensitive information you " + - "do not want to be made public.", -1), "wrap para"); + panel.add(new StyledLabel(trans.get("bugreport.lbl.Theinformation"), -1), "wrap para"); - //// Close button - JButton close = new JButton("Close"); + ////Close button + JButton close = new JButton(trans.get("dlg.but.close")); close.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -104,9 +107,10 @@ public class BugReportDialog extends JDialog { // } - //// Send button - JButton send = new JButton("Send bug report"); - send.setToolTipText("Automatically send the bug report to the OpenRocket developers."); + //// Send bug report button + JButton send = new JButton(trans.get("bugreport.dlg.but.Sendbugreport")); + //// Automatically send the bug report to the OpenRocket developers. + send.setToolTipText(trans.get("bugreport.dlg.but.Sendbugreport.Ttip")); send.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -116,18 +120,26 @@ public class BugReportDialog extends JDialog { BugReporter.sendBugReport(text); // Success if we came here - JOptionPane.showMessageDialog(BugReportDialog.this, + //bugreport.dlg.successmsg + /*JOptionPane.showMessageDialog(BugReportDialog.this, new Object[] { "Bug report successfully sent.", "Thank you for helping make OpenRocket better!" }, - "Bug report sent", JOptionPane.INFORMATION_MESSAGE); + "Bug report sent", JOptionPane.INFORMATION_MESSAGE);*/ + JOptionPane.showMessageDialog(BugReportDialog.this, + new Object[] { trans.get("bugreport.dlg.successmsg1"), + trans.get("bugreport.dlg.successmsg2") }, + trans.get("bugreport.dlg.successmsg3"), JOptionPane.INFORMATION_MESSAGE); } catch (Exception ex) { // Sending the message failed. JOptionPane.showMessageDialog(BugReportDialog.this, - new Object[] { "OpenRocket was unable to send the bug report:", + //// OpenRocket was unable to send the bug report: + new Object[] { trans.get("bugreport.dlg.failedmsg1"), ex.getClass().getSimpleName() + ": " + ex.getMessage(), " ", - "Please send the report manually to " + REPORT_EMAIL }, - "Error sending report", JOptionPane.ERROR_MESSAGE); + //// Please send the report manually to + trans.get("bugreport.dlg.failedmsg2") +" " + REPORT_EMAIL }, + //// Error sending report + trans.get("bugreport.dlg.failedmsg3"), JOptionPane.ERROR_MESSAGE); } } }); @@ -187,10 +199,8 @@ public class BugReportDialog extends JDialog { BugReportDialog reportDialog = new BugReportDialog(parent, - "You can report a bug in OpenRocket by filling in and submitting " + - "the form below.
" + - "You can also report bugs and include attachments on the project " + - "web site.", sb.toString()); + //// You can report a bug in OpenRocket by filling in and submitting the form below.
You can also report bugs and include attachments on the project web site. + trans.get("bugreport.reportDialog.txt"), sb.toString()); reportDialog.setVisible(true); } @@ -248,8 +258,8 @@ public class BugReportDialog extends JDialog { sb.append('\n'); BugReportDialog reportDialog = - new BugReportDialog(parent, "Please include a short description about " + - "what you were doing when the exception occurred.", sb.toString()); + //// Please include a short description about what you were doing when the exception occurred. + new BugReportDialog(parent, trans.get("bugreport.reportDialog.txt2"), sb.toString()); reportDialog.setVisible(true); } diff --git a/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java b/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java index 6fcee21d..7318d5c7 100644 --- a/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java @@ -50,6 +50,7 @@ import net.sf.openrocket.gui.components.StageSelector; import net.sf.openrocket.gui.components.StyledLabel; import net.sf.openrocket.gui.components.UnitSelector; import net.sf.openrocket.gui.scalefigure.RocketPanel; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.masscalc.BasicMassCalculator; import net.sf.openrocket.masscalc.MassCalculator; import net.sf.openrocket.masscalc.MassCalculator.MassCalcType; @@ -57,6 +58,7 @@ import net.sf.openrocket.rocketcomponent.Configuration; import net.sf.openrocket.rocketcomponent.FinSet; import net.sf.openrocket.rocketcomponent.Rocket; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.Unit; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.Coordinate; @@ -67,7 +69,8 @@ import net.sf.openrocket.util.Prefs; public class ComponentAnalysisDialog extends JDialog implements ChangeListener { private static ComponentAnalysisDialog singletonDialog = null; - + private static final Translator trans = Application.getTranslator(); + private final FlightConditions conditions; private final Configuration configuration; @@ -92,7 +95,9 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener { public ComponentAnalysisDialog(final RocketPanel rocketPanel) { - super(SwingUtilities.getWindowAncestor(rocketPanel), "Component analysis"); + ////Component analysis + super(SwingUtilities.getWindowAncestor(rocketPanel), + trans.get("componentanalysisdlg.componentanalysis")); JTable table; @@ -114,12 +119,13 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener { rocketPanel.setCPRoll(0); roll = new DoubleModel(rocketPanel, "CPRoll", UnitGroup.UNITS_ROLL); - - panel.add(new JLabel("Wind direction:"), "width 100lp!"); + //// Wind direction: + panel.add(new JLabel(trans.get("componentanalysisdlg.lbl.winddir")), "width 100lp!"); panel.add(new UnitSelector(theta, true), "width 50lp!"); BasicSlider slider = new BasicSlider(theta.getSliderModel(0, 2 * Math.PI)); panel.add(slider, "growx, split 2"); - worstToggle = new JToggleButton("Worst"); + //// Worst button + worstToggle = new JToggleButton(trans.get("componentanalysisdlg.ToggleBut.worst")); worstToggle.setSelected(true); worstToggle.addActionListener(new ActionListener() { @Override @@ -139,30 +145,34 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener { warningList = new JList(); JScrollPane scrollPane = new JScrollPane(warningList); - scrollPane.setBorder(BorderFactory.createTitledBorder("Warnings:")); + ////Warnings: + scrollPane.setBorder(BorderFactory.createTitledBorder(trans.get("componentanalysisdlg.TitledBorder.warnings"))); panel.add(scrollPane, "gap paragraph, spany 4, width 300lp!, growy 1, height :100lp:, wrap"); - - panel.add(new JLabel("Angle of attack:"), "width 100lp!"); + ////Angle of attack: + panel.add(new JLabel(trans.get("componentanalysisdlg.lbl.angleofattack")), "width 100lp!"); panel.add(new UnitSelector(aoa, true), "width 50lp!"); panel.add(new BasicSlider(aoa.getSliderModel(0, Math.PI)), "growx, wrap"); - panel.add(new JLabel("Mach number:"), "width 100lp!"); + //// Mach number: + panel.add(new JLabel(trans.get("componentanalysisdlg.lbl.machnumber")), "width 100lp!"); panel.add(new UnitSelector(mach, true), "width 50lp!"); panel.add(new BasicSlider(mach.getSliderModel(0, 3)), "growx, wrap"); - panel.add(new JLabel("Roll rate:"), "width 100lp!"); + //// Roll rate: + panel.add(new JLabel(trans.get("componentanalysisdlg.lbl.rollrate")), "width 100lp!"); panel.add(new UnitSelector(roll, true), "width 50lp!"); panel.add(new BasicSlider(roll.getSliderModel(-20 * 2 * Math.PI, 20 * 2 * Math.PI)), "growx, wrap paragraph"); // Stage and motor selection: - - panel.add(new JLabel("Active stages:"), "spanx, split, gapafter rel"); + //// Active stages: + panel.add(new JLabel(trans.get("componentanalysisdlg.lbl.activestages")), "spanx, split, gapafter rel"); panel.add(new StageSelector(configuration), "gapafter paragraph"); - JLabel label = new JLabel("Motor configuration:"); + //// Motor configuration: + JLabel label = new JLabel(trans.get("componentanalysisdlg.lbl.motorconf")); label.setHorizontalAlignment(JLabel.RIGHT); panel.add(label, "growx, right"); panel.add(new JComboBox(new MotorConfigurationModel(configuration)), "wrap"); @@ -178,7 +188,8 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener { // Create the CP data table cpTableModel = new ColumnTableModel( - new Column("Component") { + //// Component + new Column(trans.get("componentanalysisdlg.TabStability.Col.Component")) { @Override public Object getValueAt(int row) { RocketComponent c = cpData.get(row).getComponent(); @@ -244,13 +255,16 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener { JScrollPane scrollpane = new JScrollPane(table); scrollpane.setPreferredSize(new Dimension(600, 200)); - tabbedPane.addTab("Stability", null, scrollpane, "Stability information"); + //// Stability and Stability information + tabbedPane.addTab(trans.get("componentanalysisdlg.TabStability"), + null, scrollpane, trans.get("componentanalysisdlg.TabStability.ttip")); // Create the drag data table dragTableModel = new ColumnTableModel( - new Column("Component") { + //// Component + new Column(trans.get("componentanalysisdlg.dragTableModel.Col.Component")) { @Override public Object getValueAt(int row) { RocketComponent c = dragData.get(row).getComponent(); @@ -265,25 +279,29 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener { return 200; } }, - new Column("Pressure CD") { + //// Pressure CD + new Column(trans.get("componentanalysisdlg.dragTableModel.Col.Pressure")) { @Override public Object getValueAt(int row) { return dragData.get(row).getPressureCD(); } }, - new Column("Base CD") { + //// Base CD + new Column(trans.get("componentanalysisdlg.dragTableModel.Col.Base")) { @Override public Object getValueAt(int row) { return dragData.get(row).getBaseCD(); } }, - new Column("Friction CD") { + //// Friction CD + new Column(trans.get("componentanalysisdlg.dragTableModel.Col.friction")) { @Override public Object getValueAt(int row) { return dragData.get(row).getFrictionCD(); } }, - new Column("Total CD") { + //// Total CD + new Column(trans.get("componentanalysisdlg.dragTableModel.Col.total")) { @Override public Object getValueAt(int row) { return dragData.get(row).getCD(); @@ -310,14 +328,17 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener { scrollpane = new JScrollPane(table); scrollpane.setPreferredSize(new Dimension(600, 200)); - tabbedPane.addTab("Drag characteristics", null, scrollpane, "Drag characteristics"); + //// Drag characteristics and Drag characteristics tooltip + tabbedPane.addTab(trans.get("componentanalysisdlg.dragTabchar"), null, scrollpane, + trans.get("componentanalysisdlg.dragTabchar.ttip")); // Create the roll data table rollTableModel = new ColumnTableModel( - new Column("Component") { + //// Component + new Column(trans.get("componentanalysisdlg.rollTableModel.Col.component")) { @Override public Object getValueAt(int row) { RocketComponent c = rollData.get(row).getComponent(); @@ -327,19 +348,22 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener { return c.toString(); } }, - new Column("Roll forcing coefficient") { + //// Roll forcing coefficient + new Column(trans.get("componentanalysisdlg.rollTableModel.Col.rollforc")) { @Override public Object getValueAt(int row) { return rollData.get(row).getCrollForce(); } }, - new Column("Roll damping coefficient") { + //// Roll damping coefficient + new Column(trans.get("componentanalysisdlg.rollTableModel.Col.rolldamp")) { @Override public Object getValueAt(int row) { return rollData.get(row).getCrollDamp(); } }, - new Column("Total Cl") { + //// Total Cl + new Column(trans.get("componentanalysisdlg.rollTableModel.Col.total")) { @Override public Object getValueAt(int row) { return rollData.get(row).getCroll(); @@ -362,7 +386,9 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener { scrollpane = new JScrollPane(table); scrollpane.setPreferredSize(new Dimension(600, 200)); - tabbedPane.addTab("Roll dynamics", null, scrollpane, "Roll dynamics"); + //// Roll dynamics and Roll dynamics tooltip + tabbedPane.addTab(trans.get("componentanalysisdlg.rollTableModel"), null, scrollpane, + trans.get("componentanalysisdlg.rollTableModel.ttip")); @@ -397,15 +423,16 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener { } }); - - panel.add(new StyledLabel("Reference length: ", -1), + //// Reference length: + panel.add(new StyledLabel(trans.get("componentanalysisdlg.lbl.reflenght"), -1), "span, split, gapleft para, gapright rel"); DoubleModel dm = new DoubleModel(conditions, "RefLength", UnitGroup.UNITS_LENGTH); UnitSelector sel = new UnitSelector(dm, true); sel.resizeFont(-1); panel.add(sel, "gapright para"); - panel.add(new StyledLabel("Reference area: ", -1), "gapright rel"); + //// Reference area: + panel.add(new StyledLabel(trans.get("componentanalysisdlg.lbl.refarea"), -1), "gapright rel"); dm = new DoubleModel(conditions, "RefArea", UnitGroup.UNITS_AREA); sel = new UnitSelector(dm, true); sel.resizeFont(-1); @@ -431,7 +458,9 @@ public class ComponentAnalysisDialog extends JDialog implements ChangeListener { // }); // panel.add(button,"tag ok"); - button = new JButton("Close"); + //button = new JButton("Close"); + //Close button + button = new JButton(trans.get("dlg.but.close")); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ComponentAnalysisDialog.this.dispose(); diff --git a/src/net/sf/openrocket/gui/dialogs/CustomMaterialDialog.java b/src/net/sf/openrocket/gui/dialogs/CustomMaterialDialog.java index ef22d845..aad2f47e 100644 --- a/src/net/sf/openrocket/gui/dialogs/CustomMaterialDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/CustomMaterialDialog.java @@ -18,7 +18,9 @@ import net.miginfocom.swing.MigLayout; import net.sf.openrocket.gui.adaptors.DoubleModel; import net.sf.openrocket.gui.components.StyledLabel; import net.sf.openrocket.gui.components.UnitSelector; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.GUIUtil; public class CustomMaterialDialog extends JDialog { @@ -32,7 +34,8 @@ public class CustomMaterialDialog extends JDialog { private JSpinner densitySpinner; private UnitSelector densityUnit; private JCheckBox addBox; - + private static final Translator trans = Application.getTranslator(); + public CustomMaterialDialog(Window parent, Material material, boolean saveOption, String title) { this(parent, material, saveOption, title, null); @@ -41,7 +44,8 @@ public class CustomMaterialDialog extends JDialog { public CustomMaterialDialog(Window parent, Material material, boolean saveOption, String title, String note) { - super(parent, "Custom material", Dialog.ModalityType.APPLICATION_MODAL); + //// Custom material + super(parent, trans.get("custmatdlg.title.Custommaterial"), Dialog.ModalityType.APPLICATION_MODAL); this.originalMaterial = material; @@ -58,8 +62,8 @@ public class CustomMaterialDialog extends JDialog { } - // Material name - panel.add(new JLabel("Material name:")); + //// Material name + panel.add(new JLabel(trans.get("custmatdlg.lbl.Materialname"))); nameField = new JTextField(15); if (material != null) { nameField.setText(material.getName()); @@ -68,7 +72,7 @@ public class CustomMaterialDialog extends JDialog { // Material type (if not known) - panel.add(new JLabel("Material type:")); + panel.add(new JLabel(trans.get("custmatdlg.lbl.Materialtype"))); if (material == null) { typeBox = new JComboBox(Material.Type.values()); typeBox.setSelectedItem(Material.Type.BULK); @@ -85,8 +89,8 @@ public class CustomMaterialDialog extends JDialog { } - // Material density - panel.add(new JLabel("Material density:")); + // Material density: + panel.add(new JLabel(trans.get("custmatdlg.lbl.Materialdensity"))); densitySpinner = new JSpinner(); panel.add(densitySpinner, "w 70lp"); densityUnit = new UnitSelector((DoubleModel)null); @@ -97,11 +101,14 @@ public class CustomMaterialDialog extends JDialog { // Save option if (saveOption) { - addBox = new JCheckBox("Add material to database"); + //// Add material to database + addBox = new JCheckBox(trans.get("custmatdlg.checkbox.Addmaterial")); panel.add(addBox,"span, wrap"); } - JButton okButton = new JButton("OK"); + //// OK button + JButton okButton = new JButton(trans.get("dlg.but.ok")); + okButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -111,7 +118,8 @@ public class CustomMaterialDialog extends JDialog { }); panel.add(okButton,"span, split, tag ok"); - JButton closeButton = new JButton("Cancel"); + //// Cancel + JButton closeButton = new JButton(trans.get("dlg.but.cancel")); closeButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { diff --git a/src/net/sf/openrocket/gui/dialogs/DebugLogDialog.java b/src/net/sf/openrocket/gui/dialogs/DebugLogDialog.java index e3e9d575..1ef299e7 100644 --- a/src/net/sf/openrocket/gui/dialogs/DebugLogDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/DebugLogDialog.java @@ -42,6 +42,7 @@ import net.miginfocom.swing.MigLayout; import net.sf.openrocket.gui.adaptors.Column; import net.sf.openrocket.gui.adaptors.ColumnTableModel; import net.sf.openrocket.gui.components.SelectableLabel; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.DelegatorLogger; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.logging.LogLevel; @@ -58,7 +59,8 @@ public class DebugLogDialog extends JDialog { private static final int POLL_TIME = 250; private static final String STACK_TRACE_MARK = "\uFF01"; - + private static final Translator trans = Application.getTranslator(); + private static final EnumMap backgroundColors = new EnumMap(LogLevel.class); static { for (LogLevel l : LogLevel.values()) { @@ -101,7 +103,8 @@ public class DebugLogDialog extends JDialog { private final JTextArea stackTraceLabel; public DebugLogDialog(Window parent) { - super(parent, "OpenRocket debug log"); + //// OpenRocket debug log + super(parent, trans.get("debuglogdlg.OpenRocketdebuglog")); // Start listening to log lines LogHelper applicationLog = Application.getLogger(); @@ -138,7 +141,8 @@ public class DebugLogDialog extends JDialog { JPanel panel = new JPanel(new MigLayout("fill")); split.add(panel); - panel.add(new JLabel("Display log lines:"), "gapright para, split"); + //// Display log lines: + panel.add(new JLabel(trans.get("debuglogdlg.Displayloglines")), "gapright para, split"); for (LogLevel l : LogLevel.values()) { JCheckBox box = new JCheckBox(l.toString()); // By default display DEBUG and above @@ -153,11 +157,13 @@ public class DebugLogDialog extends JDialog { filterButtons.put(l, box); } - followBox = new JCheckBox("Follow"); + //// Follow + followBox = new JCheckBox(trans.get("debuglogdlg.Follow")); followBox.setSelected(true); panel.add(followBox, "skip, gapright para, right"); - JButton clear = new JButton("Clear"); + //// Clear button + JButton clear = new JButton(trans.get("debuglogdlg.but.clear")); clear.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -185,7 +191,8 @@ public class DebugLogDialog extends JDialog { return 60; } }, - new Column("Time") { + //// Time + new Column(trans.get("debuglogdlg.col.Time")) { @Override public Object getValueAt(int row) { return String.format("%.3f", buffer.get(row).getTimestamp() / 1000.0); @@ -196,7 +203,8 @@ public class DebugLogDialog extends JDialog { return 60; } }, - new Column("Level") { + //// Level + new Column(trans.get("debuglogdlg.col.Level")) { @Override public Object getValueAt(int row) { return buffer.get(row).getLevel(); @@ -222,7 +230,8 @@ public class DebugLogDialog extends JDialog { return 16; } }, - new Column("Location") { + //// Location + new Column(trans.get("debuglogdlg.col.Location")) { @Override public Object getValueAt(int row) { TraceException e = buffer.get(row).getTrace(); @@ -238,7 +247,8 @@ public class DebugLogDialog extends JDialog { return 200; } }, - new Column("Message") { + //// Message + new Column(trans.get("debuglogdlg.col.Message")) { @Override public Object getValueAt(int row) { return buffer.get(row).getMessage(); @@ -291,26 +301,32 @@ public class DebugLogDialog extends JDialog { panel = new JPanel(new MigLayout("fill")); split.add(panel); - panel.add(new JLabel("Log line number:"), "split, gapright rel"); + //// Log line number: + panel.add(new JLabel(trans.get("debuglogdlg.lbl.Loglinenbr")), "split, gapright rel"); numberLabel = new SelectableLabel(); panel.add(numberLabel, "width 70lp, gapright para"); - panel.add(new JLabel("Time:"), "split, gapright rel"); + //// Time: + panel.add(new JLabel(trans.get("debuglogdlg.lbl.Time")), "split, gapright rel"); timeLabel = new SelectableLabel(); panel.add(timeLabel, "width 70lp, gapright para"); - panel.add(new JLabel("Level:"), "split, gapright rel"); + //// Level: + panel.add(new JLabel(trans.get("debuglogdlg.lbl.Level")), "split, gapright rel"); levelLabel = new SelectableLabel(); panel.add(levelLabel, "width 70lp, gapright para"); + //// Location: panel.add(new JLabel("Location:"), "split, gapright rel"); locationLabel = new SelectableLabel(); panel.add(locationLabel, "growx, wrap unrel"); + //// Log message: panel.add(new JLabel("Log message:"), "split, gapright rel"); messageLabel = new SelectableLabel(); panel.add(messageLabel, "growx, wrap para"); + //// Stack trace: panel.add(new JLabel("Stack trace:"), "wrap rel"); stackTraceLabel = new JTextArea(8, 80); stackTraceLabel.setEditable(false); @@ -318,7 +334,8 @@ public class DebugLogDialog extends JDialog { panel.add(new JScrollPane(stackTraceLabel), "grow"); - JButton close = new JButton("Close"); + //Close button + JButton close = new JButton(trans.get("dlg.but.close")); close.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { diff --git a/src/net/sf/openrocket/gui/dialogs/DetailDialog.java b/src/net/sf/openrocket/gui/dialogs/DetailDialog.java index 87e36e67..88e3b9e6 100644 --- a/src/net/sf/openrocket/gui/dialogs/DetailDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/DetailDialog.java @@ -6,9 +6,12 @@ import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTextArea; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.GUIUtil; public class DetailDialog { + private static final Translator trans = Application.getTranslator(); public static void showDetailedMessageDialog(Component parentComponent, Object message, String details, String title, int messageType) { diff --git a/src/net/sf/openrocket/gui/dialogs/EditMotorConfigurationDialog.java b/src/net/sf/openrocket/gui/dialogs/EditMotorConfigurationDialog.java index 782afb76..b1ef4a9c 100644 --- a/src/net/sf/openrocket/gui/dialogs/EditMotorConfigurationDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/EditMotorConfigurationDialog.java @@ -28,10 +28,12 @@ import net.miginfocom.swing.MigLayout; import net.sf.openrocket.document.OpenRocketDocument; import net.sf.openrocket.gui.dialogs.motor.MotorChooserDialog; import net.sf.openrocket.gui.main.BasicFrame; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.motor.Motor; import net.sf.openrocket.rocketcomponent.MotorMount; import net.sf.openrocket.rocketcomponent.Rocket; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.Chars; import net.sf.openrocket.util.GUIUtil; @@ -55,9 +57,11 @@ public class EditMotorConfigurationDialog extends JDialog { // Positive when user is modifying configuration name private int configurationNameModification = 0; - + private static final Translator trans = Application.getTranslator(); + public EditMotorConfigurationDialog(final Rocket rocket, Window parent) { - super(parent, "Edit motor configurations"); + //// Edit motor configurations + super(parent, trans.get("edtmotorconfdlg.title.Editmotorconf")); if (parent != null) this.setModalityType(ModalityType.DOCUMENT_MODAL); @@ -82,11 +86,12 @@ public class EditMotorConfigurationDialog extends JDialog { //// Motor mount selection - - JLabel label = new JLabel("Motor mounts:"); + //// Motor mounts: + JLabel label = new JLabel(trans.get("edtmotorconfdlg.lbl.Motormounts")); panel.add(label, "gapbottom para"); - label = new JLabel("Select which components function as motor mounts:"); + //// Select which components function as motor mounts: + label = new JLabel(trans.get("edtmotorconfdlg.selectcomp")); panel.add(label, "ay 100%, w 1px, growx"); @@ -113,13 +118,14 @@ public class EditMotorConfigurationDialog extends JDialog { //// Motor selection - - label = new JLabel("Motor configurations:"); + //// Motor configurations: + label = new JLabel(trans.get("edtmotorconfdlg.lbl.Motorconfig")); panel.add(label, "spanx, gapbottom para"); - - label = new JLabel("Configuration name:"); - String tip = "Leave name empty for default."; + //// Configuration name: + label = new JLabel(trans.get("edtmotorconfdlg.lbl.Configname")); + //// Leave name empty for default. + String tip = trans.get("edtmotorconfdlg.lbl.Leavenamedefault"); label.setToolTipText(tip); panel.add(label, ""); @@ -158,7 +164,8 @@ public class EditMotorConfigurationDialog extends JDialog { }); panel.add(configurationNameField, "cell 2 1, gapright para"); - newConfButton = new JButton("New configuration"); + //// New configuration + newConfButton = new JButton(trans.get("edtmotorconfdlg.but.Newconfiguration")); newConfButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -170,7 +177,8 @@ public class EditMotorConfigurationDialog extends JDialog { }); panel.add(newConfButton, "cell 3 1"); - removeConfButton = new JButton("Remove configuration"); + //// Remove configuration + removeConfButton = new JButton(trans.get("edtmotorconfdlg.but.Removeconfiguration")); removeConfButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -215,8 +223,8 @@ public class EditMotorConfigurationDialog extends JDialog { scroll = new JScrollPane(configurationTable); panel.add(scroll, "cell 1 2, spanx, w 500lp, h 150lp, grow"); - - selectMotorButton = new JButton("Select motor"); + //// Select motor + selectMotorButton = new JButton(trans.get("edtmotorconfdlg.but.Selectmotor")); selectMotorButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -225,8 +233,8 @@ public class EditMotorConfigurationDialog extends JDialog { }); panel.add(selectMotorButton, "spanx, flowx, split 2, ax 50%"); - - removeMotorButton = new JButton("Remove motor"); + //// Remove motor button + removeMotorButton = new JButton(trans.get("edtmotorconfdlg.but.removemotor")); removeMotorButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -238,8 +246,7 @@ public class EditMotorConfigurationDialog extends JDialog { //// Close button - - JButton close = new JButton("Close"); + JButton close = new JButton(trans.get("dlg.but.close")); close.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -260,7 +267,8 @@ public class EditMotorConfigurationDialog extends JDialog { // Undo description final OpenRocketDocument document = BasicFrame.findDocument(rocket); if (document != null) { - document.startUndo("Edit motor configurations"); + //// Edit motor configurations + document.startUndo(trans.get("edtmotorconfdlg.title.Editmotorconf")); this.addWindowListener(new WindowAdapter() { @Override public void windowClosed(WindowEvent e) { @@ -465,6 +473,7 @@ public class EditMotorConfigurationDialog extends JDialog { MotorMount mount = findMount(column); Motor motor = mount.getMotor(id); if (motor == null) + //// None return "None"; String str = motor.getDesignation(mount.getMotorDelay(id)); @@ -479,7 +488,8 @@ public class EditMotorConfigurationDialog extends JDialog { @Override public String getColumnName(int column) { if (column == 0) { - return "Configuration name"; + //// Configuration name + return trans.get("edtmotorconfdlg.lbl.Configname"); } MotorMount mount = findMount(column); diff --git a/src/net/sf/openrocket/gui/dialogs/ExampleDesignDialog.java b/src/net/sf/openrocket/gui/dialogs/ExampleDesignDialog.java index 706f9aa4..069791ab 100644 --- a/src/net/sf/openrocket/gui/dialogs/ExampleDesignDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/ExampleDesignDialog.java @@ -27,6 +27,8 @@ import javax.swing.JScrollPane; import javax.swing.ListSelectionModel; import net.miginfocom.swing.MigLayout; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.BugException; import net.sf.openrocket.util.GUIUtil; import net.sf.openrocket.util.JarUtil; @@ -35,6 +37,8 @@ public class ExampleDesignDialog extends JDialog { private static final String DIRECTORY = "datafiles/examples/"; private static final String PATTERN = ".*\\.[oO][rR][kK]$"; + private static final Translator trans = Application.getTranslator(); + private static final FilenameFilter FILTER = new FilenameFilter() { @Override public boolean accept(File dir, String name) { @@ -47,11 +51,13 @@ public class ExampleDesignDialog extends JDialog { private final JList designSelection; private ExampleDesignDialog(ExampleDesign[] designs, Window parent) { - super(parent, "Open example design", Dialog.ModalityType.APPLICATION_MODAL); + //// Open example design + super(parent, trans.get("exdesigndlg.lbl.Openexampledesign"), Dialog.ModalityType.APPLICATION_MODAL); JPanel panel = new JPanel(new MigLayout("fill")); - panel.add(new JLabel("Select example designs to open:"), "wrap"); + //// Select example designs to open: + panel.add(new JLabel(trans.get("exdesigndlg.lbl.Selectexample")), "wrap"); designSelection = new JList(designs); designSelection.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); @@ -66,7 +72,8 @@ public class ExampleDesignDialog extends JDialog { }); panel.add(new JScrollPane(designSelection), "grow, wmin 300lp, wrap para"); - JButton openButton = new JButton("Open"); + //// Open button + JButton openButton = new JButton(trans.get("exdesigndlg.but.open")); openButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -76,7 +83,8 @@ public class ExampleDesignDialog extends JDialog { }); panel.add(openButton, "split 2, sizegroup buttons, growx"); - JButton cancelButton = new JButton("Cancel"); + //// Cancel button + JButton cancelButton = new JButton(trans.get("dlg.but.cancel")); cancelButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -110,8 +118,10 @@ public class ExampleDesignDialog extends JDialog { designs = getDirFileNames(); } if (designs == null || designs.length == 0) { - JOptionPane.showMessageDialog(parent, "Example designs could not be found.", - "Examples not found", JOptionPane.ERROR_MESSAGE); + //// Example designs could not be found. + JOptionPane.showMessageDialog(parent, trans.get("exdesigndlg.lbl.Exampledesignsnotfound"), + //// Examples not found + trans.get("exdesigndlg.lbl.Examplesnotfound"), JOptionPane.ERROR_MESSAGE); return null; } diff --git a/src/net/sf/openrocket/gui/dialogs/LicenseDialog.java b/src/net/sf/openrocket/gui/dialogs/LicenseDialog.java index 19ad7fe2..920e0b47 100644 --- a/src/net/sf/openrocket/gui/dialogs/LicenseDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/LicenseDialog.java @@ -16,11 +16,14 @@ import javax.swing.JTextArea; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.gui.components.StyledLabel; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.GUIUtil; public class LicenseDialog extends JDialog { private static final String LICENSE_FILENAME = "LICENSE.TXT"; - + private static final Translator trans = Application.getTranslator(); + private static final String DEFAULT_LICENSE_TEXT = "\n" + "Error: Unable to load " + LICENSE_FILENAME + "!\n" + @@ -60,7 +63,8 @@ public class LicenseDialog extends JDialog { text.setEditable(false); panel.add(new JScrollPane(text),"grow, wrap para"); - JButton close = new JButton("Close"); + //Close button + JButton close = new JButton(trans.get("dlg.but.close")); close.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { diff --git a/src/net/sf/openrocket/gui/dialogs/MotorDatabaseLoadingDialog.java b/src/net/sf/openrocket/gui/dialogs/MotorDatabaseLoadingDialog.java index c53a63b3..0edfddae 100644 --- a/src/net/sf/openrocket/gui/dialogs/MotorDatabaseLoadingDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/MotorDatabaseLoadingDialog.java @@ -12,19 +12,23 @@ import javax.swing.Timer; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.database.ThrustCurveMotorSetDatabase; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.GUIUtil; public class MotorDatabaseLoadingDialog extends JDialog { private static final LogHelper log = Application.getLogger(); - + private static final Translator trans = Application.getTranslator(); + private MotorDatabaseLoadingDialog(Window parent) { - super(parent, "Loading motors", ModalityType.APPLICATION_MODAL); + //// Loading motors + super(parent, trans.get("MotorDbLoadDlg.title"), ModalityType.APPLICATION_MODAL); JPanel panel = new JPanel(new MigLayout("fill")); - panel.add(new JLabel("Loading motors..."), "wrap para"); + //// Loading motors... + panel.add(new JLabel(trans.get("MotorDbLoadDlg.Loadingmotors")), "wrap para"); JProgressBar progress = new JProgressBar(); progress.setIndeterminate(true); diff --git a/src/net/sf/openrocket/gui/dialogs/PrintDialog.java b/src/net/sf/openrocket/gui/dialogs/PrintDialog.java index 1d5556ba..c820c071 100644 --- a/src/net/sf/openrocket/gui/dialogs/PrintDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/PrintDialog.java @@ -36,6 +36,7 @@ import net.sf.openrocket.gui.print.PrintableContext; import net.sf.openrocket.gui.print.TemplateProperties; import net.sf.openrocket.gui.print.components.CheckTreeManager; import net.sf.openrocket.gui.print.components.RocketPrintTree; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.rocketcomponent.Rocket; import net.sf.openrocket.startup.Application; @@ -48,17 +49,14 @@ import net.sf.openrocket.util.Prefs; public class PrintDialog extends JDialog implements TreeSelectionListener { private static final LogHelper log = Application.getLogger(); + private static final Translator trans = Application.getTranslator(); - private static final String SETTINGS_BUTTON_TEXT = "Settings"; - private static final String PREVIEW_BUTTON_TEXT = "Preview & Print"; - private static final String SAVE_AS_PDF_BUTTON_TEXT = "Save as PDF"; - private static final String SHOW_BY_STAGE = "Show By Stage"; + private final Desktop desktop; private final RocketPrintTree stagedTree; private final RocketPrintTree noStagedTree; private OpenRocketDocument document; private RocketPrintTree currentTree; - private Desktop desktop = null; private JButton previewButton; private JButton saveAsPDF; @@ -70,7 +68,7 @@ public class PrintDialog extends JDialog implements TreeSelectionListener { * @param orDocument the OR rocket container */ public PrintDialog(Window parent, OpenRocketDocument orDocument) { - super(parent, "Print or export", ModalityType.APPLICATION_MODAL); + super(parent, trans.get("title"), ModalityType.APPLICATION_MODAL); JPanel panel = new JPanel(new MigLayout("fill, gap rel unrel")); @@ -81,6 +79,8 @@ public class PrintDialog extends JDialog implements TreeSelectionListener { // supported by this particular VM on this particular host if (Desktop.isDesktopSupported()) { desktop = Desktop.getDesktop(); + } else { + desktop = null; } document = orDocument; @@ -94,7 +94,7 @@ public class PrintDialog extends JDialog implements TreeSelectionListener { final int stages = rocket.getStageCount(); - JLabel label = new JLabel("Select elements to include:"); + JLabel label = new JLabel(trans.get("lbl.selectElements")); panel.add(label, "wrap unrel"); // Create the tree @@ -114,7 +114,7 @@ public class PrintDialog extends JDialog implements TreeSelectionListener { // Checkboxes and buttons - final JCheckBox sortByStage = new JCheckBox(SHOW_BY_STAGE); + final JCheckBox sortByStage = new JCheckBox(trans.get("checkbox.showByStage")); sortByStage.setEnabled(stages > 1); sortByStage.setSelected(stages > 1); sortByStage.addActionListener(new ActionListener() { @@ -140,7 +140,7 @@ public class PrintDialog extends JDialog implements TreeSelectionListener { panel.add(new JPanel(), "growx"); - JButton settingsButton = new JButton(SETTINGS_BUTTON_TEXT); + JButton settingsButton = new JButton(trans.get("printdlg.but.settings")); settingsButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -154,7 +154,7 @@ public class PrintDialog extends JDialog implements TreeSelectionListener { panel.add(settingsButton, "wrap para"); - previewButton = new JButton(PREVIEW_BUTTON_TEXT); + previewButton = new JButton(trans.get("but.previewAndPrint")); previewButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -165,7 +165,7 @@ public class PrintDialog extends JDialog implements TreeSelectionListener { panel.add(previewButton, "split, right, gap para"); - saveAsPDF = new JButton(SAVE_AS_PDF_BUTTON_TEXT); + saveAsPDF = new JButton(trans.get("printdlg.but.saveaspdf")); saveAsPDF.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -177,7 +177,7 @@ public class PrintDialog extends JDialog implements TreeSelectionListener { panel.add(saveAsPDF, "right, gap para"); - cancel = new JButton("Cancel"); + cancel = new JButton(trans.get("button.cancel")); cancel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -295,14 +295,19 @@ public class PrintDialog extends JDialog implements TreeSelectionListener { File f = generateReport(settings); desktop.open(f); } catch (IOException e) { - log.error("Could not create temporary file for previewing.", e); - JOptionPane.showMessageDialog(this, "Could not create a temporary file for previewing.", - "Error creating file", JOptionPane.ERROR_MESSAGE); + log.error("Could not open preview.", e); + JOptionPane.showMessageDialog(this, new String[] { + trans.get("error.preview.desc1"), + trans.get("error.preview.desc2") }, + trans.get("error.preview.title"), + JOptionPane.ERROR_MESSAGE); } } else { - JOptionPane.showMessageDialog(this, - "Your environment does not support automatically opening the default PDF viewer.", - "Error creating file", JOptionPane.INFORMATION_MESSAGE); + JOptionPane.showMessageDialog(this, new String[] { + trans.get("error.preview.desc1"), + trans.get("error.preview.desc2") }, + trans.get("error.preview.title"), + JOptionPane.INFORMATION_MESSAGE); } } @@ -329,7 +334,7 @@ public class PrintDialog extends JDialog implements TreeSelectionListener { //The description of this filter @Override public String getDescription() { - return "PDF files"; + return trans.get("filetypes.pdf"); } }; chooser.setFileFilter(filter); diff --git a/src/net/sf/openrocket/gui/dialogs/SwingWorkerDialog.java b/src/net/sf/openrocket/gui/dialogs/SwingWorkerDialog.java index 939514b0..13fb93b0 100644 --- a/src/net/sf/openrocket/gui/dialogs/SwingWorkerDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/SwingWorkerDialog.java @@ -15,6 +15,7 @@ import javax.swing.JProgressBar; import javax.swing.SwingWorker; import net.miginfocom.swing.MigLayout; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.MathUtil; @@ -30,7 +31,8 @@ import net.sf.openrocket.util.MathUtil; */ public class SwingWorkerDialog extends JDialog implements PropertyChangeListener { private static final LogHelper log = Application.getLogger(); - + private static final Translator trans = Application.getTranslator(); + /** Number of milliseconds to wait at a time between checking worker status */ private static final int DELAY = 100; @@ -65,7 +67,8 @@ public class SwingWorkerDialog extends JDialog implements PropertyChangeListener progressBar = new JProgressBar(); panel.add(progressBar, "growx, wrap para"); - JButton cancel = new JButton("Cancel"); + //// Cancel button + JButton cancel = new JButton(trans.get("dlg.but.cancel")); cancel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { diff --git a/src/net/sf/openrocket/gui/dialogs/UpdateInfoDialog.java b/src/net/sf/openrocket/gui/dialogs/UpdateInfoDialog.java index 02bcfec1..08f72089 100644 --- a/src/net/sf/openrocket/gui/dialogs/UpdateInfoDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/UpdateInfoDialog.java @@ -15,6 +15,8 @@ import javax.swing.JPanel; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.communication.UpdateInfo; import net.sf.openrocket.gui.components.URLLabel; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.Chars; import net.sf.openrocket.util.ComparablePair; import net.sf.openrocket.util.GUIUtil; @@ -23,8 +25,10 @@ import net.sf.openrocket.util.Icons; public class UpdateInfoDialog extends JDialog { private final JCheckBox remind; + private static final Translator trans = Application.getTranslator(); public UpdateInfoDialog(UpdateInfo info) { + //// OpenRocket update available super((Window)null, "OpenRocket update available", ModalityType.APPLICATION_MODAL); JPanel panel = new JPanel(new MigLayout("fill")); @@ -33,12 +37,13 @@ public class UpdateInfoDialog extends JDialog { panel.add(new JLabel(Icons.loadImageIcon("pix/icon/icon-about.png", "OpenRocket")), "spany 100, top"); - + //// OpenRocket version panel.add(new JLabel("OpenRocket version " + info.getLatestVersion() + " is available!"), "wrap para"); List> updates = info.getUpdates(); if (updates.size() > 0) { + //// Updates include: panel.add(new JLabel("Updates include:"), "wrap rel"); Collections.sort(updates); @@ -55,16 +60,20 @@ public class UpdateInfoDialog extends JDialog { } } + //// Download the new version from: panel.add(new JLabel("Download the new version from:"), "gaptop para, alignx 50%, wrap unrel"); panel.add(new URLLabel(AboutDialog.OPENROCKET_URL), "alignx 50%, wrap para"); + //// Remind me later remind = new JCheckBox("Remind me later"); + //// Show this update also the next time you start OpenRocket remind.setToolTipText("Show this update also the next time you start OpenRocket"); remind.setSelected(true); panel.add(remind); - JButton button = new JButton("Close"); + //Close button + JButton button = new JButton(trans.get("dlg.but.close")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { diff --git a/src/net/sf/openrocket/gui/dialogs/motor/MotorChooserDialog.java b/src/net/sf/openrocket/gui/dialogs/motor/MotorChooserDialog.java index 2258251f..8c6849e9 100644 --- a/src/net/sf/openrocket/gui/dialogs/motor/MotorChooserDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/motor/MotorChooserDialog.java @@ -14,8 +14,10 @@ import javax.swing.JPanel; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.gui.dialogs.MotorDatabaseLoadingDialog; import net.sf.openrocket.gui.dialogs.motor.thrustcurve.ThrustCurveMotorSelectionPanel; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.motor.Motor; import net.sf.openrocket.motor.ThrustCurveMotor; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.GUIUtil; public class MotorChooserDialog extends JDialog implements CloseableDialog { @@ -23,7 +25,8 @@ public class MotorChooserDialog extends JDialog implements CloseableDialog { private final ThrustCurveMotorSelectionPanel selectionPanel; private boolean okClicked = false; - + private static final Translator trans = Application.getTranslator(); + public MotorChooserDialog(Motor current, double delay, double diameter, Window owner) { super(owner, "Select a rocket motor", Dialog.ModalityType.APPLICATION_MODAL); @@ -40,8 +43,7 @@ public class MotorChooserDialog extends JDialog implements CloseableDialog { // OK / Cancel buttons - - JButton okButton = new JButton("OK"); + JButton okButton = new JButton(trans.get("dlg.but.ok")); okButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -50,7 +52,8 @@ public class MotorChooserDialog extends JDialog implements CloseableDialog { }); panel.add(okButton, "tag ok, spanx, split"); - JButton cancelButton = new JButton("Cancel"); + //// Cancel button + JButton cancelButton = new JButton(trans.get("dlg.but.cancel")); cancelButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { diff --git a/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorColumns.java b/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorColumns.java index 145a9956..d4cefca2 100644 --- a/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorColumns.java +++ b/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorColumns.java @@ -4,17 +4,22 @@ import java.text.Collator; import java.util.Comparator; import net.sf.openrocket.database.ThrustCurveMotorSet; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.motor.DesignationComparator; import net.sf.openrocket.motor.ThrustCurveMotor; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.unit.Value; import net.sf.openrocket.unit.ValueComparator; + /** * Enum defining the table columns. */ + enum ThrustCurveMotorColumns { - MANUFACTURER("Manufacturer", 100) { + //// Manufacturer + MANUFACTURER("TCurveMotorCol.MANUFACTURER", 100) { @Override public String getValue(ThrustCurveMotorSet m) { return m.getManufacturer().getDisplayName(); @@ -25,7 +30,8 @@ enum ThrustCurveMotorColumns { return Collator.getInstance(); } }, - DESIGNATION("Designation") { + //// Designation + DESIGNATION("TCurveMotorCol.DESIGNATION") { @Override public String getValue(ThrustCurveMotorSet m) { return m.getDesignation(); @@ -36,7 +42,8 @@ enum ThrustCurveMotorColumns { return new DesignationComparator(); } }, - TYPE("Type") { + //// Type + TYPE("TCurveMotorCol.TYPE") { @Override public String getValue(ThrustCurveMotorSet m) { return m.getType().getName(); @@ -47,7 +54,8 @@ enum ThrustCurveMotorColumns { return Collator.getInstance(); } }, - DIAMETER("Diameter") { + //// Diameter + DIAMETER("TCurveMotorCol.DIAMETER") { @Override public Object getValue(ThrustCurveMotorSet m) { return new Value(m.getDiameter(), UnitGroup.UNITS_MOTOR_DIMENSIONS); @@ -58,7 +66,8 @@ enum ThrustCurveMotorColumns { return ValueComparator.INSTANCE; } }, - LENGTH("Length") { + //// Length + LENGTH("TCurveMotorCol.LENGTH") { @Override public Object getValue(ThrustCurveMotorSet m) { return new Value(m.getLength(), UnitGroup.UNITS_MOTOR_DIMENSIONS); @@ -73,6 +82,7 @@ enum ThrustCurveMotorColumns { private final String title; private final int width; + private static final Translator trans = Application.getTranslator(); ThrustCurveMotorColumns(String title) { this(title, 50); @@ -89,7 +99,7 @@ enum ThrustCurveMotorColumns { public abstract Comparator getComparator(); public String getTitle() { - return title; + return trans.get(title); } public int getWidth() { diff --git a/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorPlotDialog.java b/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorPlotDialog.java index 314219a3..22238caa 100644 --- a/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorPlotDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorPlotDialog.java @@ -13,7 +13,9 @@ import javax.swing.JDialog; import javax.swing.JPanel; import net.miginfocom.swing.MigLayout; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.motor.ThrustCurveMotor; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.GUIUtil; @@ -27,6 +29,7 @@ import org.jfree.data.xy.XYSeries; import org.jfree.data.xy.XYSeriesCollection; public class ThrustCurveMotorPlotDialog extends JDialog { + private static final Translator trans = Application.getTranslator(); public ThrustCurveMotorPlotDialog(List motors, int selected, Window parent) { super(parent, "Motor thrust curves", ModalityType.APPLICATION_MODAL); @@ -101,7 +104,7 @@ public class ThrustCurveMotorPlotDialog extends JDialog { // Close button - JButton close = new JButton("Close"); + JButton close = new JButton(trans.get("dlg.but.close")); close.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { diff --git a/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java b/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java index d3d5e57f..ca0fb811 100644 --- a/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java +++ b/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java @@ -47,6 +47,7 @@ import net.sf.openrocket.gui.components.StyledLabel; import net.sf.openrocket.gui.components.StyledLabel.Style; import net.sf.openrocket.gui.dialogs.motor.CloseableDialog; import net.sf.openrocket.gui.dialogs.motor.MotorSelector; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.motor.Motor; import net.sf.openrocket.motor.MotorDigest; @@ -72,16 +73,20 @@ import org.jfree.data.xy.XYSeriesCollection; public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelector { private static final LogHelper log = Application.getLogger(); - + private static final Translator trans = Application.getTranslator(); + private static final double MOTOR_SIMILARITY_THRESHOLD = 0.95; private static final int SHOW_ALL = 0; private static final int SHOW_SMALLER = 1; private static final int SHOW_EXACT = 2; private static final String[] SHOW_DESCRIPTIONS = { - "Show all motors", - "Show motors with diameter less than that of the motor mount", - "Show motors with diameter equal to that of the motor mount" + //// Show all motors + trans.get("TCMotorSelPan.SHOW_DESCRIPTIONS.desc1"), + //// Show motors with diameter less than that of the motor mount + trans.get("TCMotorSelPan.SHOW_DESCRIPTIONS.desc2"), + //// Show motors with diameter equal to that of the motor mount + trans.get("TCMotorSelPan.SHOW_DESCRIPTIONS.desc3") }; private static final int SHOW_MAX = 2; @@ -191,7 +196,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec // Selection label - label = new StyledLabel("Select rocket motor:", Style.BOLD); + //// Select rocket motor: + label = new StyledLabel(trans.get("TCMotorSelPan.lbl.Selrocketmotor"), Style.BOLD); panel.add(label, "spanx, wrap para"); // Diameter selection @@ -225,8 +231,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec }); panel.add(filterComboBox, "spanx, growx, wrap rel"); - - hideSimilarBox = new JCheckBox("Hide very similar thrust curves"); + //// Hide very similar thrust curves + hideSimilarBox = new JCheckBox(trans.get("TCMotorSelPan.checkbox.hideSimilar")); GUIUtil.changeFontSize(hideSimilarBox, -1); hideSimilarBox.setSelected(Prefs.getBoolean(Prefs.MOTOR_HIDE_SIMILAR, true)); hideSimilarBox.addActionListener(new ActionListener() { @@ -291,14 +297,16 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec // Motor mount diameter label - label = new StyledLabel("Motor mount diameter: " + + //// Motor mount diameter: + label = new StyledLabel(trans.get("TCMotorSelPan.lbl.Motormountdia")+ " " + UnitGroup.UNITS_MOTOR_DIMENSIONS.getDefaultUnit().toStringUnit(diameter)); panel.add(label, "gapright 30lp, spanx, split"); // Search field - label = new StyledLabel("Search:"); + //// Search: + label = new StyledLabel(trans.get("TCMotorSelPan.lbl.Search")); panel.add(label, ""); searchField = new JTextField(); @@ -345,7 +353,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec // Thrust curve selection - curveSelectionLabel = new JLabel("Select thrust curve:"); + //// Select thrust curve: + curveSelectionLabel = new JLabel(trans.get("TCMotorSelPan.lbl.Selectthrustcurve")); panel.add(curveSelectionLabel); curveSelectionModel = new DefaultComboBoxModel(); @@ -366,8 +375,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec - // Ejection charge delay - panel.add(new JLabel("Ejection charge delay:")); + // Ejection charge delay: + panel.add(new JLabel(trans.get("TCMotorSelPan.lbl.Ejectionchargedelay"))); delayBox = new JComboBox(); delayBox.setEditable(true); @@ -376,7 +385,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec public void actionPerformed(ActionEvent e) { JComboBox cb = (JComboBox) e.getSource(); String sel = (String) cb.getSelectedItem(); - if (sel.equalsIgnoreCase("None")) { + //// None + if (sel.equalsIgnoreCase(trans.get("TCMotorSelPan.equalsIgnoreCase.None"))) { selectedDelay = Motor.PLUGGED; } else { try { @@ -388,7 +398,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec } }); panel.add(delayBox, "growx, wrap rel"); - panel.add(new StyledLabel("(Number of seconds or \"None\")", -3), "skip, wrap para"); + //// (Number of seconds or \"None\") + panel.add(new StyledLabel(trans.get("TCMotorSelPan.lbl.NumberofsecondsorNone"), -3), "skip, wrap para"); setDelays(false); @@ -397,36 +408,44 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec // Thrust curve info - panel.add(new JLabel("Total impulse:")); + //// Total impulse: + panel.add(new JLabel(trans.get("TCMotorSelPan.lbl.Totalimpulse"))); totalImpulseLabel = new JLabel(); panel.add(totalImpulseLabel, "wrap"); - panel.add(new JLabel("Avg. thrust:")); + //// Avg. thrust: + panel.add(new JLabel(trans.get("TCMotorSelPan.lbl.Avgthrust"))); avgThrustLabel = new JLabel(); panel.add(avgThrustLabel, "wrap"); - panel.add(new JLabel("Max. thrust:")); + //// Max. thrust: + panel.add(new JLabel(trans.get("TCMotorSelPan.lbl.Maxthrust"))); maxThrustLabel = new JLabel(); panel.add(maxThrustLabel, "wrap"); - panel.add(new JLabel("Burn time:")); + //// Burn time: + panel.add(new JLabel(trans.get("TCMotorSelPan.lbl.Burntime"))); burnTimeLabel = new JLabel(); panel.add(burnTimeLabel, "wrap"); - panel.add(new JLabel("Launch mass:")); + //// Launch mass: + panel.add(new JLabel(trans.get("TCMotorSelPan.lbl.Launchmass"))); launchMassLabel = new JLabel(); panel.add(launchMassLabel, "wrap"); - panel.add(new JLabel("Empty mass:")); + //// Empty mass: + panel.add(new JLabel(trans.get("TCMotorSelPan.lbl.Emptymass"))); emptyMassLabel = new JLabel(); panel.add(emptyMassLabel, "wrap"); - panel.add(new JLabel("Data points:")); + //// Data points: + panel.add(new JLabel(trans.get("TCMotorSelPan.lbl.Datapoints"))); dataPointsLabel = new JLabel(); panel.add(dataPointsLabel, "wrap para"); if (System.getProperty("openrocket.debug.motordigest") != null) { - panel.add(new JLabel("Digest:")); + //// Digest: + panel.add(new JLabel(trans.get("TCMotorSelPan.lbl.Digest"))); digestLabel = new JLabel(); panel.add(digestLabel, "w :300:, wrap para"); } else { @@ -466,7 +485,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec changeLabelFont(plot.getRangeAxis(), -2); changeLabelFont(plot.getDomainAxis(), -2); - chart.setTitle(new TextTitle("Thrust curve:", this.getFont())); + //// Thrust curve: + chart.setTitle(new TextTitle(trans.get("TCMotorSelPan.title.Thrustcurve"), this.getFont())); chart.setBackgroundPaint(this.getBackground()); plot.setBackgroundPaint(Color.WHITE); plot.setDomainGridlinePaint(Color.LIGHT_GRAY); @@ -680,7 +700,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec for (int i = 0; i < motors.size(); i++) { ThrustCurveMotor m = motors.get(i); - XYSeries series = new XYSeries("Thrust"); + //// Thrust + XYSeries series = new XYSeries(trans.get("TCMotorSelPan.title.Thrust")); double[] time = m.getTimePoints(); double[] thrust = m.getThrustPoints(); @@ -728,6 +749,7 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec private void setComment(String s) { s = s.trim(); if (s.length() == 0) { + //// No description available. comment.setText("No description available."); comment.setFont(noCommentFont); comment.setForeground(NO_COMMENT_COLOR); @@ -815,7 +837,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec private void setDelays(boolean reset) { if (selectedMotor == null) { - delayBox.setModel(new DefaultComboBoxModel(new String[] { "None" })); + //// None + delayBox.setModel(new DefaultComboBoxModel(new String[] { trans.get("TCMotorSelPan.delayBox.None") })); delayBox.setSelectedIndex(0); } else { @@ -825,7 +848,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec double currentDelay = selectedDelay; // Store current setting locally for (int i = 0; i < delays.size(); i++) { - delayStrings[i] = ThrustCurveMotor.getDelayString(delays.get(i), "None"); + //// None + delayStrings[i] = ThrustCurveMotor.getDelayString(delays.get(i), trans.get("TCMotorSelPan.delayBox.None")); } delayBox.setModel(new DefaultComboBoxModel(delayStrings)); @@ -841,7 +865,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec } if (!Double.isNaN(closest)) { selectedDelay = closest; - delayBox.setSelectedItem(ThrustCurveMotor.getDelayString(closest, "None")); + //// None + delayBox.setSelectedItem(ThrustCurveMotor.getDelayString(closest, trans.get("TCMotorSelPan.delayBox.None"))); } else { delayBox.setSelectedItem("None"); } @@ -849,7 +874,8 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec } else { selectedDelay = currentDelay; - delayBox.setSelectedItem(ThrustCurveMotor.getDelayString(currentDelay, "None")); + //// None + delayBox.setSelectedItem(ThrustCurveMotor.getDelayString(currentDelay, trans.get("TCMotorSelPan.delayBox.None"))); } diff --git a/src/net/sf/openrocket/gui/dialogs/optimization/GeneralOptimizationDialog.java b/src/net/sf/openrocket/gui/dialogs/optimization/GeneralOptimizationDialog.java index ed55079f..7c5894c7 100644 --- a/src/net/sf/openrocket/gui/dialogs/optimization/GeneralOptimizationDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/optimization/GeneralOptimizationDialog.java @@ -12,10 +12,12 @@ import java.util.ServiceLoader; import javax.swing.JDialog; import net.sf.openrocket.document.OpenRocketDocument; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.optimization.rocketoptimization.OptimizableParameter; import net.sf.openrocket.optimization.rocketoptimization.OptimizableParameterService; import net.sf.openrocket.optimization.rocketoptimization.SimulationModifier; import net.sf.openrocket.optimization.rocketoptimization.SimulationModifierService; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.BugException; public class GeneralOptimizationDialog extends JDialog { @@ -23,7 +25,8 @@ public class GeneralOptimizationDialog extends JDialog { private final List optimizationParameters = new ArrayList(); private final Map> simulationModifiers = new HashMap>(); - + private static final Translator trans = Application.getTranslator(); + private final OpenRocketDocument document; diff --git a/src/net/sf/openrocket/gui/dialogs/preferences/MaterialEditPanel.java b/src/net/sf/openrocket/gui/dialogs/preferences/MaterialEditPanel.java index e6d66f46..183a02eb 100644 --- a/src/net/sf/openrocket/gui/dialogs/preferences/MaterialEditPanel.java +++ b/src/net/sf/openrocket/gui/dialogs/preferences/MaterialEditPanel.java @@ -25,7 +25,9 @@ import net.sf.openrocket.database.Databases; import net.sf.openrocket.gui.adaptors.Column; import net.sf.openrocket.gui.adaptors.ColumnTableModel; import net.sf.openrocket.gui.dialogs.CustomMaterialDialog; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.unit.Value; @@ -37,7 +39,8 @@ public class MaterialEditPanel extends JPanel { private final JButton editButton; private final JButton deleteButton; private final JButton revertButton; - + private static final Translator trans = Application.getTranslator(); + public MaterialEditPanel() { super(new MigLayout("fill")); @@ -45,14 +48,15 @@ public class MaterialEditPanel extends JPanel { // TODO: LOW: Create sorter that keeps material types always in order final ColumnTableModel model = new ColumnTableModel( - new Column("Material") { + //// Material + new Column(trans.get("matedtpan.col.Material")) { @Override public Object getValueAt(int row) { return getMaterial(row).getName(); } }, - - new Column("Type") { + //// Type + new Column(trans.get("matedtpan.col.Type")) { @Override public Object getValueAt(int row) { return getMaterial(row).getType().toString(); @@ -62,8 +66,8 @@ public class MaterialEditPanel extends JPanel { return 15; } }, - - new Column("Density") { + //// Density + new Column(trans.get("matedtpan.col.Density")) { @Override public Object getValueAt(int row) { Material m = getMaterial(row); @@ -106,15 +110,17 @@ public class MaterialEditPanel extends JPanel { this.add(new JScrollPane(table), "w 200px, h 100px, grow 100"); - - addButton = new JButton("New"); - addButton.setToolTipText("Add a new material"); + //// New button + addButton = new JButton(trans.get("matedtpan.but.new")); + //// Add a new material + addButton.setToolTipText(trans.get("matedtpan.col.but.ttip.New")); addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { CustomMaterialDialog dialog = new CustomMaterialDialog( SwingUtilities.getWindowAncestor(MaterialEditPanel.this), - null, false, "Add a custom material"); + //// Add a custom material + null, false, trans.get("matedtpan.title.Addcustmaterial")); dialog.setVisible(true); if (dialog.getOkClicked()) { Material mat = dialog.getMaterial(); @@ -126,9 +132,10 @@ public class MaterialEditPanel extends JPanel { }); this.add(addButton, "gap rel rel para para, w 70lp, split 5, flowy, growx 1, top"); - - editButton = new JButton("Edit"); - editButton.setToolTipText("Edit an existing material"); + //// Edit button + editButton = new JButton(trans.get("matedtpan.but.edit")); + //// Edit an existing material + editButton.setToolTipText(trans.get("matedtpan.but.ttip.edit")); editButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -142,12 +149,15 @@ public class MaterialEditPanel extends JPanel { if (m.isUserDefined()) { dialog = new CustomMaterialDialog( SwingUtilities.getWindowAncestor(MaterialEditPanel.this), - m, false, "Edit material"); + //// Edit material + m, false, trans.get("matedtpan.title.Editmaterial")); } else { dialog = new CustomMaterialDialog( SwingUtilities.getWindowAncestor(MaterialEditPanel.this), - m, false, "Add a custom material", - "The built-in materials cannot be modified."); + //// Add a custom material + m, false, trans.get("matedtpan.title.Addcustmaterial"), + //// The built-in materials cannot be modified. + trans.get("matedtpan.title2.Editmaterial")); } dialog.setVisible(true); @@ -165,9 +175,10 @@ public class MaterialEditPanel extends JPanel { }); this.add(editButton, "gap rel rel para para, growx 1, top"); - - deleteButton = new JButton("Delete"); - deleteButton.setToolTipText("Delete a user-defined material"); + //// Delete button + deleteButton = new JButton(trans.get("matedtpan.but.delete")); + //// Delete a user-defined material + deleteButton.setToolTipText(trans.get("matedtpan.but.ttip.delete")); deleteButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -188,13 +199,18 @@ public class MaterialEditPanel extends JPanel { this.add(new JPanel(), "grow 1"); - revertButton = new JButton("Revert all"); - revertButton.setToolTipText("Delete all user-defined materials"); + //// Revert all button + revertButton = new JButton(trans.get("matedtpan.but.revertall")); + //// Delete all user-defined materials + revertButton.setToolTipText(trans.get("matedtpan.but.ttip.revertall")); revertButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int sel = JOptionPane.showConfirmDialog(MaterialEditPanel.this, - "Delete all user-defined materials?", "Revert all?", + //// Delete all user-defined materials? + trans.get("matedtpan.title.Deletealluser-defined"), + //// Revert all? + trans.get("matedtpan.title.Revertall"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if (sel == JOptionPane.YES_OPTION) { Iterator iterator; @@ -239,9 +255,9 @@ public class MaterialEditPanel extends JPanel { } }); - - this.add(new JLabel("Editing materials will not affect existing " + - "rocket designs."), "span"); + //// Editing materials will not affect existing + //// rocket designs. + this.add(new JLabel(trans.get("matedtpan.lbl.edtmaterials")), "span"); } diff --git a/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java b/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java index f0861208..65a09aa8 100644 --- a/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java +++ b/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java @@ -34,6 +34,7 @@ import net.sf.openrocket.gui.components.DescriptionArea; import net.sf.openrocket.gui.components.StyledLabel; import net.sf.openrocket.gui.dialogs.UpdateInfoDialog; import net.sf.openrocket.gui.main.SimpleFileFilter; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.Unit; @@ -47,22 +48,29 @@ public class PreferencesDialog extends JDialog { private final List unitSelectors = new ArrayList(); private File defaultDirectory = null; - + private static final Translator trans = Application.getTranslator(); + private PreferencesDialog() { - super((Window) null, "Preferences", Dialog.ModalityType.APPLICATION_MODAL); + //// Preferences + super((Window) null, trans.get("pref.dlg.title.Preferences"), Dialog.ModalityType.APPLICATION_MODAL); JPanel panel = new JPanel(new MigLayout("fill, gap unrel", "[grow]", "[grow][]")); JTabbedPane tabbedPane = new JTabbedPane(); panel.add(tabbedPane, "grow, wrap"); - - tabbedPane.addTab("Units", null, unitsPane(), "Default units"); - tabbedPane.addTab("Materials", null, new MaterialEditPanel(), "Custom materials"); - tabbedPane.addTab("Options", null, optionsPane(), "Miscellaneous options"); - - - JButton close = new JButton("Close"); + //// Units and Default units + tabbedPane.addTab(trans.get("pref.dlg.tab.Units"), null, unitsPane(), + trans.get("pref.dlg.tab.Defaultunits")); + //// Materials and Custom materials + tabbedPane.addTab(trans.get("pref.dlg.tab.Materials"), null, new MaterialEditPanel(), + trans.get("pref.dlg.tab.Custommaterials")); + //// Options and Miscellaneous options + tabbedPane.addTab(trans.get("pref.dlg.tab.Options"), null, optionsPane(), + trans.get("pref.dlg.tab.Miscellaneousoptions")); + + //// Close button + JButton close = new JButton(trans.get("dlg.but.close")); close.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { @@ -90,17 +98,26 @@ public class PreferencesDialog extends JDialog { private JPanel optionsPane() { JPanel panel = new JPanel(new MigLayout("fillx, ins 30lp n n n")); - - panel.add(new JLabel("Position to insert new body components:"), "gapright para"); + //// Position to insert new body components: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Positiontoinsert")), "gapright para"); panel.add(new JComboBox(new PrefChoiseSelector(Prefs.BODY_COMPONENT_INSERT_POSITION_KEY, - "Always ask", "Insert in middle", "Add to end")), "wrap para, growx, sg combos"); - - panel.add(new JLabel("Confirm deletion of simulations:")); + //// Always ask + //// Insert in middle + //// Add to end + trans.get("pref.dlg.PrefChoiseSelector1"), + trans.get("pref.dlg.PrefChoiseSelector2"), + trans.get("pref.dlg.PrefChoiseSelector3"))), "wrap para, growx, sg combos"); + + //// Confirm deletion of simulations: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Confirmdeletion"))); panel.add(new JComboBox(new PrefBooleanSelector(Prefs.CONFIRM_DELETE_SIMULATION, - "Delete", "Confirm", true)), "wrap 40lp, growx, sg combos"); + //// Delete + //// Confirm + trans.get("pref.dlg.PrefBooleanSelector1"), + trans.get("pref.dlg.PrefBooleanSelector2"), true)), "wrap 40lp, growx, sg combos"); - - panel.add(new JLabel("User-defined thrust curves:"), "spanx, wrap"); + //// User-defined thrust curves: + panel.add(new JLabel(trans.get("pref.dlg.lbl.User-definedthrust")), "spanx, wrap"); final JTextField field = new JTextField(); List files = Prefs.getUserThrustCurveFiles(); String str = ""; @@ -141,19 +158,26 @@ public class PreferencesDialog extends JDialog { }); panel.add(field, "w 100px, gapright unrel, spanx, growx, split"); - JButton button = new JButton("Add"); + //// Add button + JButton button = new JButton(trans.get("pref.dlg.but.add")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JFileChooser chooser = new JFileChooser(); - SimpleFileFilter filter = new SimpleFileFilter("All thrust curve files (*.eng; *.rse; *.zip; directories)", + SimpleFileFilter filter = + new SimpleFileFilter( + //// All thrust curve files (*.eng; *.rse; *.zip; directories) + trans.get("pref.dlg.Allthrustcurvefiles"), true, "eng", "rse", "zip"); chooser.addChoosableFileFilter(filter); - chooser.addChoosableFileFilter(new SimpleFileFilter("RASP motor files (*.eng)", + //// RASP motor files (*.eng) + chooser.addChoosableFileFilter(new SimpleFileFilter(trans.get("pref.dlg.RASPfiles"), true, "eng")); - chooser.addChoosableFileFilter(new SimpleFileFilter("RockSim engine files (*.rse)", + //// RockSim engine files (*.rse) + chooser.addChoosableFileFilter(new SimpleFileFilter(trans.get("pref.dlg.RockSimfiles"), true, "rse")); - chooser.addChoosableFileFilter(new SimpleFileFilter("ZIP archives (*.zip)", + //// ZIP archives (*.zip) + chooser.addChoosableFileFilter(new SimpleFileFilter(trans.get("pref.dlg.ZIParchives"), true, "zip")); chooser.setFileFilter(filter); chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); @@ -161,7 +185,8 @@ public class PreferencesDialog extends JDialog { chooser.setCurrentDirectory(defaultDirectory); } - int returnVal = chooser.showDialog(PreferencesDialog.this, "Add"); + //// Add + int returnVal = chooser.showDialog(PreferencesDialog.this, trans.get("pref.dlg.Add")); if (returnVal == JFileChooser.APPROVE_OPTION) { log.user("Adding user thrust curve: " + chooser.getSelectedFile()); defaultDirectory = chooser.getCurrentDirectory(); @@ -176,7 +201,8 @@ public class PreferencesDialog extends JDialog { }); panel.add(button, "gapright unrel"); - button = new JButton("Reset"); + //// Reset button + button = new JButton(trans.get("pref.dlg.but.reset")); button.addActionListener(new ActionListener() { @Override @@ -188,16 +214,16 @@ public class PreferencesDialog extends JDialog { }); panel.add(button, "wrap"); - DescriptionArea desc = new DescriptionArea("Add directories, RASP motor files (*.eng), " + - "RockSim engine files (*.rse) or ZIP archives separated by a semicolon (;) to load external " + - "thrust curves. Changes will take effect the next time you start OpenRocket.", 3, -3, false); + //// Add directories, RASP motor files (*.eng), RockSim engine files (*.rse) or ZIP archives separated by a semicolon (;) to load external thrust curves. Changes will take effect the next time you start OpenRocket. + DescriptionArea desc = new DescriptionArea(trans.get("pref.dlg.DescriptionArea.Adddirectories"), 3, -3, false); desc.setBackground(getBackground()); panel.add(desc, "spanx, growx, wrap 40lp"); - - final JCheckBox softwareUpdateBox = new JCheckBox("Check for software updates at startup"); + //// Check for software updates at startup + final JCheckBox softwareUpdateBox = + new JCheckBox(trans.get("pref.dlg.checkbox.Checkupdates")); softwareUpdateBox.setSelected(Prefs.getCheckUpdates()); softwareUpdateBox.addActionListener(new ActionListener() { @Override @@ -207,8 +233,10 @@ public class PreferencesDialog extends JDialog { }); panel.add(softwareUpdateBox); - button = new JButton("Check now"); - button.setToolTipText("Check for software updates now"); + //// Check now button + button = new JButton(trans.get("pref.dlg.but.checknow")); + //// Check for software updates now + button.setToolTipText(trans.get("pref.dlg.ttip.Checkupdatesnow")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -225,106 +253,117 @@ public class PreferencesDialog extends JDialog { JPanel panel = new JPanel(new MigLayout("", "[][]40lp[][]")); JComboBox combo; - panel.add(new JLabel("Select your preferred units:"), "span, wrap paragraph"); + //// Select your preferred units: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Selectprefunits")), "span, wrap paragraph"); - panel.add(new JLabel("Rocket dimensions:")); + //// Rocket dimensions: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Rocketdimensions"))); combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_LENGTH)); panel.add(combo, "sizegroup boxes"); - panel.add(new JLabel("Line density:")); + //// Line density: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Linedensity"))); combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_DENSITY_LINE)); panel.add(combo, "sizegroup boxes, wrap"); - - panel.add(new JLabel("Motor dimensions:")); + //// Motor dimensions: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Motordimensions"))); combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_MOTOR_DIMENSIONS)); panel.add(combo, "sizegroup boxes"); - panel.add(new JLabel("Surface density:")); + //// Surface density: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Surfacedensity"))); combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_DENSITY_SURFACE)); panel.add(combo, "sizegroup boxes, wrap"); - - panel.add(new JLabel("Distance:")); + //// Distance: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Distance"))); combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_DISTANCE)); panel.add(combo, "sizegroup boxes"); - panel.add(new JLabel("Bulk density::")); + //// Bulk density:: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Bulkdensity"))); combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_DENSITY_BULK)); panel.add(combo, "sizegroup boxes, wrap"); - - panel.add(new JLabel("Velocity:")); + //// Velocity: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Velocity"))); combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_VELOCITY)); panel.add(combo, "sizegroup boxes"); - panel.add(new JLabel("Surface roughness:")); + //// Surface roughness: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Surfaceroughness"))); combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_ROUGHNESS)); panel.add(combo, "sizegroup boxes, wrap"); - - panel.add(new JLabel("Acceleration:")); + //// Acceleration: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Acceleration"))); combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_ACCELERATION)); panel.add(combo, "sizegroup boxes"); - panel.add(new JLabel("Area:")); + //// Area: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Area"))); combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_AREA)); panel.add(combo, "sizegroup boxes, wrap"); - - panel.add(new JLabel("Mass:")); + //// Mass: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Mass"))); combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_MASS)); panel.add(combo, "sizegroup boxes"); - panel.add(new JLabel("Angle:")); + //// Angle: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Angle"))); combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_ANGLE)); panel.add(combo, "sizegroup boxes, wrap"); - - panel.add(new JLabel("Force:")); + //// Force: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Force"))); combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_FORCE)); panel.add(combo, "sizegroup boxes"); - panel.add(new JLabel("Roll rate:")); + //// Roll rate: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Rollrate"))); combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_ROLL)); panel.add(combo, "sizegroup boxes, wrap"); - - panel.add(new JLabel("Total impulse:")); + //// Total impulse: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Totalimpulse"))); combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_IMPULSE)); panel.add(combo, "sizegroup boxes"); - panel.add(new JLabel("Temperature:")); + //// Temperature: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Temperature"))); combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_TEMPERATURE)); panel.add(combo, "sizegroup boxes, wrap"); - - panel.add(new JLabel("Moment of inertia:")); + //// Moment of inertia: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Momentofinertia"))); combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_INERTIA)); panel.add(combo, "sizegroup boxes"); - panel.add(new JLabel("Pressure:")); + //// Pressure: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Pressure"))); combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_PRESSURE)); panel.add(combo, "sizegroup boxes, wrap"); - - panel.add(new JLabel("Stability:")); + //// Stability: + panel.add(new JLabel(trans.get("pref.dlg.lbl.Stability"))); combo = new JComboBox(new DefaultUnitSelector(UnitGroup.UNITS_STABILITY)); panel.add(combo, "sizegroup boxes, wrap para"); - - JButton button = new JButton("Default metric"); + //// Default metric button + JButton button = new JButton(trans.get("pref.dlg.but.defaultmetric")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -335,7 +374,8 @@ public class PreferencesDialog extends JDialog { }); panel.add(button, "spanx, split 2, grow"); - button = new JButton("Default imperial"); + //// Default imperial button + button = new JButton(trans.get("pref.dlg.but.defaultimperial")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -346,8 +386,9 @@ public class PreferencesDialog extends JDialog { }); panel.add(button, "grow, wrap para"); - - panel.add(new StyledLabel("The effects will take place the next time you open a window.", -2), + //// The effects will take place the next time you open a window. + panel.add(new StyledLabel( + trans.get("pref.dlg.lbl.effect1"), -2), "spanx, wrap"); @@ -520,13 +561,15 @@ public class PreferencesDialog extends JDialog { final JDialog dialog = new JDialog(this, ModalityType.APPLICATION_MODAL); JPanel panel = new JPanel(new MigLayout()); - panel.add(new JLabel("Checking for updates..."), "wrap"); + //// Checking for updates... + panel.add(new JLabel(trans.get("pref.dlg.lbl.Checkingupdates")), "wrap"); JProgressBar bar = new JProgressBar(); bar.setIndeterminate(true); panel.add(bar, "growx, wrap para"); - JButton cancel = new JButton("Cancel"); + //// Cancel button + JButton cancel = new JButton(trans.get("dlg.but.cancel")); cancel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -564,14 +607,18 @@ public class PreferencesDialog extends JDialog { UpdateInfo info = retriever.getUpdateInfo(); if (info == null) { JOptionPane.showMessageDialog(this, - "An error occurred while communicating with the server.", - "Unable to retrieve update information", JOptionPane.WARNING_MESSAGE, null); + //// An error occurred while communicating with the server. + trans.get("pref.dlg.lbl.msg1"), + //// Unable to retrieve update information + trans.get("pref.dlg.lbl.msg2"), JOptionPane.WARNING_MESSAGE, null); } else if (info.getLatestVersion() == null || info.getLatestVersion().equals("") || Prefs.getVersion().equalsIgnoreCase(info.getLatestVersion())) { JOptionPane.showMessageDialog(this, - "You are running the latest version of OpenRocket.", - "No updates available", JOptionPane.INFORMATION_MESSAGE, null); + //// You are running the latest version of OpenRocket. + trans.get("pref.dlg.lbl.msg3"), + //// No updates available + trans.get("pref.dlg.lbl.msg4"), JOptionPane.INFORMATION_MESSAGE, null); } else { UpdateInfoDialog infoDialog = new UpdateInfoDialog(info); infoDialog.setVisible(true); diff --git a/src/net/sf/openrocket/gui/figureelements/RocketInfo.java b/src/net/sf/openrocket/gui/figureelements/RocketInfo.java index 0e9ef165..2237fa39 100644 --- a/src/net/sf/openrocket/gui/figureelements/RocketInfo.java +++ b/src/net/sf/openrocket/gui/figureelements/RocketInfo.java @@ -2,8 +2,10 @@ package net.sf.openrocket.gui.figureelements; import net.sf.openrocket.aerodynamics.Warning; import net.sf.openrocket.aerodynamics.WarningSet; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.Configuration; import net.sf.openrocket.simulation.FlightData; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.Unit; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.MathUtil; @@ -28,6 +30,7 @@ import static net.sf.openrocket.util.Chars.THETA; */ public class RocketInfo implements FigureElement { + private static final Translator trans = Application.getTranslator(); // Margin around the figure edges, pixels private static final int MARGIN = 8; @@ -140,15 +143,19 @@ public class RocketInfo implements FigureElement { private void drawMainInfo() { GlyphVector name = createText(configuration.getRocket().getName()); GlyphVector lengthLine = createText( - "Length " + UnitGroup.UNITS_LENGTH.getDefaultUnit().toStringUnit(length) + - ", max. diameter " + + //// Length + trans.get("RocketInfo.lengthLine.Length") +" " + UnitGroup.UNITS_LENGTH.getDefaultUnit().toStringUnit(length) + + //// , max. diameter + trans.get("RocketInfo.lengthLine.maxdiameter") +" " + UnitGroup.UNITS_LENGTH.getDefaultUnit().toStringUnit(diameter)); String massText; if (configuration.hasMotors()) - massText = "Mass with motors "; + //// Mass with motors + massText = trans.get("RocketInfo.massText1") +" "; else - massText = "Mass with no motors "; + //// Mass with no motors + massText = trans.get("RocketInfo.massText2") +" "; massText += UnitGroup.UNITS_MASS.getDefaultUnit().toStringUnit(mass); @@ -166,8 +173,8 @@ public class RocketInfo implements FigureElement { private void drawStabilityInfo() { String at; - - at = "at M="+UnitGroup.UNITS_COEFFICIENT.getDefaultUnit().toStringUnit(mach); + //// at M= + at = trans.get("RocketInfo.at")+UnitGroup.UNITS_COEFFICIENT.getDefaultUnit().toStringUnit(mach); if (!Double.isNaN(aoa)) { at += " "+ALPHA+"=" + UnitGroup.UNITS_ANGLE.getDefaultUnit().toStringUnit(aoa); } @@ -181,10 +188,12 @@ public class RocketInfo implements FigureElement { getCp()); GlyphVector stabValue = createText( getStability()); - - GlyphVector cgText = createText("CG: "); - GlyphVector cpText = createText("CP: "); - GlyphVector stabText = createText("Stability: "); + //// CG: + GlyphVector cgText = createText(trans.get("RocketInfo.cgText") +" "); + //// CP: + GlyphVector cpText = createText(trans.get("RocketInfo.cpText") +" "); + //// Stability: + GlyphVector stabText = createText(trans.get("RocketInfo.stabText") + " "); GlyphVector atText = createSmallText(at); Rectangle2D cgRect = cgValue.getVisualBounds(); @@ -312,7 +321,8 @@ public class RocketInfo implements FigureElement { GlyphVector[] texts = new GlyphVector[warnings.size()+1]; double max = 0; - texts[0] = createText("Warning:"); + //// Warning: + texts[0] = createText(trans.get("RocketInfo.Warning")); int i=1; for (Warning w: warnings) { texts[i] = createText(w.toString()); @@ -341,7 +351,8 @@ public class RocketInfo implements FigureElement { double height = drawFlightData(); if (calculatingData) { - GlyphVector calculating = createText("Calculating..."); + //// Calculating... + GlyphVector calculating = createText(trans.get("RocketInfo.Calculating")); g2.setColor(Color.BLACK); g2.drawGlyphVector(calculating, x1, (float)(y2-height)); } @@ -354,30 +365,37 @@ public class RocketInfo implements FigureElement { double width=0; - GlyphVector apogee = createText("Apogee: "); - GlyphVector maxVelocity = createText("Max. velocity: "); - GlyphVector maxAcceleration = createText("Max. acceleration: "); + //// Apogee: + GlyphVector apogee = createText(trans.get("RocketInfo.Apogee")+" "); + //// Max. velocity: + GlyphVector maxVelocity = createText(trans.get("RocketInfo.Maxvelocity") +" "); + //// Max. acceleration: + GlyphVector maxAcceleration = createText(trans.get("RocketInfo.Maxacceleration") + " "); GlyphVector apogeeValue, velocityValue, accelerationValue; if (!Double.isNaN(flightData.getMaxAltitude())) { apogeeValue = createText( UnitGroup.UNITS_DISTANCE.toStringUnit(flightData.getMaxAltitude())); } else { - apogeeValue = createText("N/A"); + //// N/A + apogeeValue = createText(trans.get("RocketInfo.apogeeValue")); } if (!Double.isNaN(flightData.getMaxVelocity())) { velocityValue = createText( UnitGroup.UNITS_VELOCITY.toStringUnit(flightData.getMaxVelocity()) + - " (Mach " + + //// (Mach + " " +trans.get("RocketInfo.Mach") +" " + UnitGroup.UNITS_COEFFICIENT.toString(flightData.getMaxMachNumber()) + ")"); } else { - velocityValue = createText("N/A"); + //// N/A + velocityValue = createText(trans.get("RocketInfo.velocityValue")); } if (!Double.isNaN(flightData.getMaxAcceleration())) { accelerationValue = createText( UnitGroup.UNITS_ACCELERATION.toStringUnit(flightData.getMaxAcceleration())); } else { - accelerationValue = createText("N/A"); + //// N/A + accelerationValue = createText(trans.get("RocketInfo.accelerationValue")); } Rectangle2D rect; diff --git a/src/net/sf/openrocket/gui/main/BasicFrame.java b/src/net/sf/openrocket/gui/main/BasicFrame.java index 2605dc7d..55df5039 100644 --- a/src/net/sf/openrocket/gui/main/BasicFrame.java +++ b/src/net/sf/openrocket/gui/main/BasicFrame.java @@ -80,6 +80,7 @@ import net.sf.openrocket.gui.dialogs.WarningDialog; import net.sf.openrocket.gui.dialogs.preferences.PreferencesDialog; import net.sf.openrocket.gui.main.componenttree.ComponentTree; import net.sf.openrocket.gui.scalefigure.RocketPanel; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.rocketcomponent.ComponentChangeEvent; import net.sf.openrocket.rocketcomponent.ComponentChangeListener; @@ -108,17 +109,21 @@ public class BasicFrame extends JFrame { private static final RocketSaver ROCKET_SAVER = new OpenRocketSaver(); - + private static final Translator trans = Application.getTranslator(); + // FileFilters for different types of rocket design files private static final FileFilter ALL_DESIGNS_FILTER = - new SimpleFileFilter("All rocket designs (*.ork; *.rkt)", + //// All rocket designs (*.ork; *.rkt) + new SimpleFileFilter(trans.get("BasicFrame.SimpleFileFilter1"), ".ork", ".ork.gz", ".rkt", ".rkt.gz"); private static final FileFilter OPENROCKET_DESIGN_FILTER = - new SimpleFileFilter("OpenRocket designs (*.ork)", ".ork", ".ork.gz"); + //// OpenRocket designs (*.ork) + new SimpleFileFilter(trans.get("BasicFrame.SimpleFileFilter2"), ".ork", ".ork.gz"); private static final FileFilter ROCKSIM_DESIGN_FILTER = - new SimpleFileFilter("RockSim designs (*.rkt)", ".rkt", ".rkt.gz"); + //// RockSim designs (*.rkt) + new SimpleFileFilter(trans.get("BasicFrame.SimpleFileFilter3"), ".rkt", ".rkt.gz"); @@ -212,8 +217,10 @@ public class BasicFrame extends JFrame { // The top tabbed pane tabbedPane = new JTabbedPane(); - tabbedPane.addTab("Rocket design", null, designTab()); - tabbedPane.addTab("Flight simulations", null, simulationPanel); + //// Rocket design + tabbedPane.addTab(trans.get("BasicFrame.tab.Rocketdesign"), null, designTab()); + //// Flight simulations + tabbedPane.addTab(trans.get("BasicFrame.tab.Flightsim"), null, simulationPanel); vertical.setTopComponent(tabbedPane); @@ -374,7 +381,7 @@ public class BasicFrame extends JFrame { scroll.setBorder(null); scroll.setViewportBorder(null); - TitledBorder border = new TitledBorder("Add new component"); + TitledBorder border = new TitledBorder(trans.get("BasicFrame.title.Addnewcomp")); border.setTitleFont(border.getTitleFont().deriveFont(Font.BOLD)); scroll.setBorder(border); @@ -396,14 +403,17 @@ public class BasicFrame extends JFrame { JMenuItem item; //// File - menu = new JMenu("File"); + menu = new JMenu(trans.get("main.menu.file")); menu.setMnemonic(KeyEvent.VK_F); + //// File-handling related tasks menu.getAccessibleContext().setAccessibleDescription("File-handling related tasks"); menubar.add(menu); - item = new JMenuItem("New", KeyEvent.VK_N); + //// New + item = new JMenuItem(trans.get("main.menu.file.new"), KeyEvent.VK_N); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK)); item.setMnemonic(KeyEvent.VK_N); + //// Create a new rocket design item.getAccessibleContext().setAccessibleDescription("Create a new rocket design"); item.setIcon(Icons.FILE_NEW); item.addActionListener(new ActionListener() { @@ -419,9 +429,11 @@ public class BasicFrame extends JFrame { }); menu.add(item); - item = new JMenuItem("Open...", KeyEvent.VK_O); + //// Open... + item = new JMenuItem(trans.get("main.menu.file.open"), KeyEvent.VK_O); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK)); - item.getAccessibleContext().setAccessibleDescription("Open a rocket design"); + //// Open a rocket design + item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.Openrocketdesign")); item.setIcon(Icons.FILE_OPEN); item.addActionListener(new ActionListener() { @Override @@ -432,8 +444,10 @@ public class BasicFrame extends JFrame { }); menu.add(item); - item = new JMenuItem("Open example..."); - item.getAccessibleContext().setAccessibleDescription("Open an example rocket design"); + //// Open example... + item = new JMenuItem(trans.get("main.menu.file.openExample")); + //// Open an example rocket design + item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.Openexamplerocketdesign")); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK)); item.setIcon(Icons.FILE_OPEN_EXAMPLE); @@ -454,9 +468,11 @@ public class BasicFrame extends JFrame { menu.addSeparator(); - item = new JMenuItem("Save", KeyEvent.VK_S); + //// Save + item = new JMenuItem(trans.get("main.menu.file.save"), KeyEvent.VK_S); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK)); - item.getAccessibleContext().setAccessibleDescription("Save the current rocket design"); + //// Save the current rocket design + item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.SavecurRocketdesign")); item.setIcon(Icons.FILE_SAVE); item.addActionListener(new ActionListener() { @Override @@ -467,11 +483,12 @@ public class BasicFrame extends JFrame { }); menu.add(item); - item = new JMenuItem("Save as...", KeyEvent.VK_A); + //// Save as... + item = new JMenuItem(trans.get("main.menu.file.saveAs"), KeyEvent.VK_A); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK)); - item.getAccessibleContext().setAccessibleDescription("Save the current rocket design " + - "to a new file"); + //// Save the current rocket design to a new file + item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.SavecurRocketdesnewfile")); item.setIcon(Icons.FILE_SAVE_AS); item.addActionListener(new ActionListener() { @Override @@ -482,10 +499,11 @@ public class BasicFrame extends JFrame { }); menu.add(item); - - item = new JMenuItem("Print / Export PDF...", KeyEvent.VK_P); + //// Print... + item = new JMenuItem(trans.get("main.menu.file.print"), KeyEvent.VK_P); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK)); - item.getAccessibleContext().setAccessibleDescription("Print parts list and fin template"); + //// Print parts list and fin template + item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.Printpart")); item.setIcon(Icons.FILE_PRINT); item.addActionListener(new ActionListener() { @Override @@ -499,9 +517,11 @@ public class BasicFrame extends JFrame { menu.addSeparator(); - item = new JMenuItem("Close", KeyEvent.VK_C); + //// Close + item = new JMenuItem(trans.get("main.menu.file.close"), KeyEvent.VK_C); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, ActionEvent.CTRL_MASK)); - item.getAccessibleContext().setAccessibleDescription("Close the current rocket design"); + //// Close the current rocket design + item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.Closedesign")); item.setIcon(Icons.FILE_CLOSE); item.addActionListener(new ActionListener() { @Override @@ -514,9 +534,11 @@ public class BasicFrame extends JFrame { menu.addSeparator(); - item = new JMenuItem("Quit", KeyEvent.VK_Q); + //// Quit + item = new JMenuItem(trans.get("main.menu.file.quit"), KeyEvent.VK_Q); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, ActionEvent.CTRL_MASK)); - item.getAccessibleContext().setAccessibleDescription("Quit the program"); + //// Quit the program + item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.Quitprogram")); item.setIcon(Icons.FILE_QUIT); item.addActionListener(new ActionListener() { @Override @@ -530,9 +552,10 @@ public class BasicFrame extends JFrame { //// Edit - menu = new JMenu("Edit"); + menu = new JMenu(trans.get("main.menu.edit")); menu.setMnemonic(KeyEvent.VK_E); - menu.getAccessibleContext().setAccessibleDescription("Rocket editing"); + //// Rocket editing + menu.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.menu.Rocketedt")); menubar.add(menu); @@ -540,6 +563,7 @@ public class BasicFrame extends JFrame { item = new JMenuItem(action); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK)); item.setMnemonic(KeyEvent.VK_U); + //// Undo the previous operation item.getAccessibleContext().setAccessibleDescription("Undo the previous operation"); menu.add(item); @@ -548,6 +572,7 @@ public class BasicFrame extends JFrame { item = new JMenuItem(action); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, ActionEvent.CTRL_MASK)); item.setMnemonic(KeyEvent.VK_R); + //// Redo the previously undone operation item.getAccessibleContext().setAccessibleDescription("Redo the previously undone " + "operation"); menu.add(item); @@ -569,8 +594,10 @@ public class BasicFrame extends JFrame { menu.addSeparator(); - item = new JMenuItem("Preferences"); + //// Preferences + item = new JMenuItem(trans.get("main.menu.edit.preferences")); item.setIcon(Icons.PREFERENCES); + //// Setup the application preferences item.getAccessibleContext().setAccessibleDescription("Setup the application " + "preferences"); item.addActionListener(new ActionListener() { @@ -586,12 +613,15 @@ public class BasicFrame extends JFrame { //// Analyze - menu = new JMenu("Analyze"); + menu = new JMenu(trans.get("main.menu.analyze")); menu.setMnemonic(KeyEvent.VK_A); + //// Analyzing the rocket menu.getAccessibleContext().setAccessibleDescription("Analyzing the rocket"); menubar.add(menu); - item = new JMenuItem("Component analysis", KeyEvent.VK_C); + //// Component analysis + item = new JMenuItem(trans.get("main.menu.analyze.componentAnalysis"), KeyEvent.VK_C); + //// Analyze the rocket components separately item.getAccessibleContext().setAccessibleDescription("Analyze the rocket components " + "separately"); item.addActionListener(new ActionListener() { @@ -614,14 +644,16 @@ public class BasicFrame extends JFrame { //// Help - menu = new JMenu("Help"); + menu = new JMenu(trans.get("main.menu.help")); menu.setMnemonic(KeyEvent.VK_H); + //// Information about OpenRocket menu.getAccessibleContext().setAccessibleDescription("Information about OpenRocket"); menubar.add(menu); - - item = new JMenuItem("License", KeyEvent.VK_L); + //// License + item = new JMenuItem(trans.get("main.menu.help.license"), KeyEvent.VK_L); + //// OpenRocket license information item.getAccessibleContext().setAccessibleDescription("OpenRocket license information"); item.addActionListener(new ActionListener() { @Override @@ -634,7 +666,9 @@ public class BasicFrame extends JFrame { menu.addSeparator(); - item = new JMenuItem("Bug report", KeyEvent.VK_B); + //// Bug report + item = new JMenuItem(trans.get("main.menu.help.bugReport"), KeyEvent.VK_B); + //// Information about reporting bugs in OpenRocket item.getAccessibleContext().setAccessibleDescription("Information about reporting " + "bugs in OpenRocket"); item.addActionListener(new ActionListener() { @@ -646,7 +680,9 @@ public class BasicFrame extends JFrame { }); menu.add(item); - item = new JMenuItem("Debug log"); + //// Debug log + item = new JMenuItem(trans.get("main.menu.help.debugLog")); + //// View the OpenRocket debug log item.getAccessibleContext().setAccessibleDescription("View the OpenRocket debug log"); item.addActionListener(new ActionListener() { @Override @@ -659,7 +695,9 @@ public class BasicFrame extends JFrame { menu.addSeparator(); - item = new JMenuItem("About", KeyEvent.VK_A); + //// About + item = new JMenuItem(trans.get("main.menu.help.about"), KeyEvent.VK_A); + //// About OpenRocket item.getAccessibleContext().setAccessibleDescription("About OpenRocket"); item.addActionListener(new ActionListener() { @Override @@ -681,8 +719,10 @@ public class BasicFrame extends JFrame { //// Debug menu menu = new JMenu("Debug"); + //// OpenRocket debugging tasks menu.getAccessibleContext().setAccessibleDescription("OpenRocket debugging tasks"); + //// What is this menu? item = new JMenuItem("What is this menu?"); item.addActionListener(new ActionListener() { @Override @@ -702,6 +742,7 @@ public class BasicFrame extends JFrame { menu.addSeparator(); + //// Create test rocket item = new JMenuItem("Create test rocket"); item.addActionListener(new ActionListener() { @Override @@ -808,7 +849,7 @@ public class BasicFrame extends JFrame { }); menu.add(item); - + //// Exhaust memory item = new JMenuItem("Exhaust memory"); item.addActionListener(new ActionListener() { @Override @@ -841,6 +882,7 @@ public class BasicFrame extends JFrame { menu.addSeparator(); + //// Exception here item = new JMenuItem("Exception here"); item.addActionListener(new ActionListener() { @Override @@ -1104,10 +1146,13 @@ public class BasicFrame extends JFrame { log.info("Warnings while reading file: " + warnings); WarningDialog.showWarnings(parent, new Object[] { - "The following problems were encountered while opening " + filename + ".", - "Some design features may not have been loaded correctly." + //// The following problems were encountered while opening + trans.get("BasicFrame.WarningDialog.txt1") + " " + filename + ".", + //// Some design features may not have been loaded correctly. + trans.get("BasicFrame.WarningDialog.txt2") }, - "Warnings while opening file", warnings); + //// Warnings while opening file + trans.get("BasicFrame.WarningDialog.title"), warnings); } @@ -1261,9 +1306,10 @@ public class BasicFrame extends JFrame { log.info("Confirming whether to save the design"); ComponentConfigDialog.hideDialog(); int result = JOptionPane.showConfirmDialog(this, - "Design '" + rocket.getName() + "' has not been saved. " + - "Do you want to save it?", - "Design not saved", JOptionPane.YES_NO_CANCEL_OPTION, + trans.get("BasicFrame.dlg.lbl1") + rocket.getName() + + trans.get("BasicFrame.dlg.lbl2") + " " + + trans.get("BasicFrame.dlg.lbl3"), + trans.get("BasicFrame.dlg.title"), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if (result == JOptionPane.YES_OPTION) { // Save @@ -1321,7 +1367,8 @@ public class BasicFrame extends JFrame { Rocket rocket = new Rocket(); Stage stage = new Stage(); - stage.setName("Sustainer"); + //// Sustainer + stage.setName(trans.get("BasicFrame.StageName.Sustainer")); rocket.addChild(stage); OpenRocketDocument doc = new OpenRocketDocument(rocket); doc.setSaved(true); diff --git a/src/net/sf/openrocket/gui/main/ComponentAddButtons.java b/src/net/sf/openrocket/gui/main/ComponentAddButtons.java index e5429e3a..a5bdb789 100644 --- a/src/net/sf/openrocket/gui/main/ComponentAddButtons.java +++ b/src/net/sf/openrocket/gui/main/ComponentAddButtons.java @@ -30,6 +30,7 @@ import net.sf.openrocket.document.OpenRocketDocument; import net.sf.openrocket.gui.components.StyledLabel; import net.sf.openrocket.gui.configdialog.ComponentConfigDialog; import net.sf.openrocket.gui.main.componenttree.ComponentTreeModel; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.rocketcomponent.BodyComponent; import net.sf.openrocket.rocketcomponent.BodyTube; @@ -66,6 +67,7 @@ import net.sf.openrocket.util.Reflection; public class ComponentAddButtons extends JPanel implements Scrollable { private static final LogHelper log = Application.getLogger(); + private static final Translator trans = Application.getTranslator(); private static final int ROWS = 3; private static final int MAXCOLS = 6; @@ -103,39 +105,57 @@ public class ComponentAddButtons extends JPanel implements Scrollable { //////////////////////////////////////////// - - addButtonRow("Body components and fin sets", row, - new BodyComponentButton(NoseCone.class, "Nose cone"), - new BodyComponentButton(BodyTube.class, "Body tube"), - new BodyComponentButton(Transition.class, "Transition"), - new FinButton(TrapezoidFinSet.class, "Trapezoidal"), // TODO: MEDIUM: freer fin placing - new FinButton(EllipticalFinSet.class, "Elliptical"), - new FinButton(FreeformFinSet.class, "Freeform"), - new FinButton(LaunchLug.class, "Launch lug")); + //// Body components and fin sets + addButtonRow(trans.get("compaddbuttons.Bodycompandfinsets"), row, + //// Nose cone + new BodyComponentButton(NoseCone.class, trans.get("compaddbuttons.Nosecone")), + //// Body tube + new BodyComponentButton(BodyTube.class, trans.get("compaddbuttons.Bodytube")), + //// Transition + new BodyComponentButton(Transition.class, trans.get("compaddbuttons.Transition")), + //// Trapezoidal + new FinButton(TrapezoidFinSet.class, trans.get("compaddbuttons.Trapezoidal")), // TODO: MEDIUM: freer fin placing + //// Elliptical + new FinButton(EllipticalFinSet.class, trans.get("compaddbuttons.Elliptical")), + //// Freeform + new FinButton(FreeformFinSet.class, trans.get("compaddbuttons.Freeform")), + //// Launch lug + new FinButton(LaunchLug.class, trans.get("compaddbuttons.Launchlug"))); row++; ///////////////////////////////////////////// - addButtonRow("Inner component", row, - new ComponentButton(InnerTube.class, "Inner tube"), - new ComponentButton(TubeCoupler.class, "Coupler"), - new ComponentButton(CenteringRing.class, "Centering\nring"), - new ComponentButton(Bulkhead.class, "Bulkhead"), - new ComponentButton(EngineBlock.class, "Engine\nblock")); + //// Inner component + addButtonRow(trans.get("compaddbuttons.Innercomponent"), row, + //// Inner tube + new ComponentButton(InnerTube.class, trans.get("compaddbuttons.Innertube")), + //// Coupler + new ComponentButton(TubeCoupler.class, trans.get("compaddbuttons.Coupler")), + //// Centering\nring + new ComponentButton(CenteringRing.class, trans.get("compaddbuttons.Centeringring")), + //// Bulkhead + new ComponentButton(Bulkhead.class, trans.get("compaddbuttons.Bulkhead")), + //// Engine\nblock + new ComponentButton(EngineBlock.class, trans.get("compaddbuttons.Engineblock"))); row++; //////////////////////////////////////////// - addButtonRow("Mass objects", row, - new ComponentButton(Parachute.class, "Parachute"), - new ComponentButton(Streamer.class, "Streamer"), - new ComponentButton(ShockCord.class, "Shock cord"), + //// Mass objects + addButtonRow(trans.get("compaddbuttons.Massobjects"), row, + //// Parachute + new ComponentButton(Parachute.class, trans.get("compaddbuttons.Parachute")), + //// Streamer + new ComponentButton(Streamer.class, trans.get("compaddbuttons.Streamer")), + //// Shock cord + new ComponentButton(ShockCord.class, trans.get("compaddbuttons.Shockcord")), // new ComponentButton("Motor clip"), // new ComponentButton("Payload"), - new ComponentButton(MassComponent.class, "Mass\ncomponent")); + //// Mass\ncomponent + new ComponentButton(MassComponent.class, trans.get("compaddbuttons.Masscomponent"))); // Get maximum button size @@ -511,20 +531,27 @@ public class ComponentAddButtons extends JPanel implements Scrollable { } private int askPosition() { - Object[] options = { "Insert here", "Add to the end", "Cancel" }; + //// Insert here + //// Add to the end + //// Cancel + Object[] options = { trans.get("compaddbuttons.askPosition.Inserthere"), + trans.get("compaddbuttons.askPosition.Addtotheend"), + trans.get("compaddbuttons.askPosition.Cancel") }; JPanel panel = new JPanel(new MigLayout()); - JCheckBox check = new JCheckBox("Do not ask me again"); + //// Do not ask me again + JCheckBox check = new JCheckBox(trans.get("compaddbuttons.Donotaskmeagain")); panel.add(check, "wrap"); - panel.add(new StyledLabel("You can change the default operation in the " + - "preferences.", -2)); + //// You can change the default operation in the preferences. + panel.add(new StyledLabel(trans.get("compaddbuttons.lbl.Youcanchange"), -2)); int sel = JOptionPane.showOptionDialog(null, // parent component + //// Insert the component after the current component or as the last component? new Object[] { - "Insert the component after the current component or as the last " + - "component?", + trans.get("compaddbuttons.lbl.insertcomp"), panel }, - "Select component position", // title + //// Select component position + trans.get("compaddbuttons.Selectcomppos"), // title JOptionPane.DEFAULT_OPTION, // default selections JOptionPane.QUESTION_MESSAGE, // dialog type null, // icon diff --git a/src/net/sf/openrocket/gui/main/ComponentIcons.java b/src/net/sf/openrocket/gui/main/ComponentIcons.java index d1e47a30..82257718 100644 --- a/src/net/sf/openrocket/gui/main/ComponentIcons.java +++ b/src/net/sf/openrocket/gui/main/ComponentIcons.java @@ -9,6 +9,7 @@ import javax.imageio.ImageIO; import javax.swing.Icon; import javax.swing.ImageIcon; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.BodyTube; import net.sf.openrocket.rocketcomponent.Bulkhead; import net.sf.openrocket.rocketcomponent.CenteringRing; @@ -25,10 +26,12 @@ import net.sf.openrocket.rocketcomponent.Streamer; import net.sf.openrocket.rocketcomponent.Transition; import net.sf.openrocket.rocketcomponent.TrapezoidFinSet; import net.sf.openrocket.rocketcomponent.TubeCoupler; +import net.sf.openrocket.startup.Application; public class ComponentIcons { - + private static final Translator trans = Application.getTranslator(); + private static final String ICON_DIRECTORY = "pix/componenticons/"; private static final String SMALL_SUFFIX = "-small.png"; private static final String LARGE_SUFFIX = "-large.png"; @@ -41,22 +44,38 @@ public class ComponentIcons { new HashMap,ImageIcon>(); static { - load("nosecone", "Nose cone", NoseCone.class); - load("bodytube", "Body tube", BodyTube.class); - load("transition", "Transition", Transition.class); - load("trapezoidfin", "Trapezoidal fin set", TrapezoidFinSet.class); - load("ellipticalfin", "Elliptical fin set", EllipticalFinSet.class); - load("freeformfin", "Freeform fin set", FreeformFinSet.class); - load("launchlug", "Launch lug", LaunchLug.class); - load("innertube", "Inner tube", InnerTube.class); - load("tubecoupler", "Tube coupler", TubeCoupler.class); - load("centeringring", "Centering ring", CenteringRing.class); - load("bulkhead", "Bulk head", Bulkhead.class); - load("engineblock", "Engine block", EngineBlock.class); - load("parachute", "Parachute", Parachute.class); - load("streamer", "Streamer", Streamer.class); - load("shockcord", "Shock cord", ShockCord.class); - load("mass", "Mass component", MassComponent.class); + //// Nose cone + load("nosecone", trans.get("ComponentIcons.Nosecone"), NoseCone.class); + //// Body tube + load("bodytube", trans.get("ComponentIcons.Bodytube"), BodyTube.class); + //// Transition + load("transition", trans.get("ComponentIcons.Transition"), Transition.class); + //// Trapezoidal fin set + load("trapezoidfin", trans.get("ComponentIcons.Trapezoidalfinset"), TrapezoidFinSet.class); + //// Elliptical fin set + load("ellipticalfin", trans.get("ComponentIcons.Ellipticalfinset"), EllipticalFinSet.class); + //// Freeform fin set + load("freeformfin", trans.get("ComponentIcons.Freeformfinset"), FreeformFinSet.class); + //// Launch lug + load("launchlug", trans.get("ComponentIcons.Launchlug"), LaunchLug.class); + //// Inner tube + load("innertube", trans.get("ComponentIcons.Innertube"), InnerTube.class); + //// Tube coupler + load("tubecoupler", trans.get("ComponentIcons.Tubecoupler"), TubeCoupler.class); + //// Centering ring + load("centeringring", trans.get("ComponentIcons.Centeringring"), CenteringRing.class); + //// Bulk head + load("bulkhead", trans.get("ComponentIcons.Bulkhead"), Bulkhead.class); + //// Engine block + load("engineblock", trans.get("ComponentIcons.Engineblock"), EngineBlock.class); + //// Parachute + load("parachute", trans.get("ComponentIcons.Parachute"), Parachute.class); + //// Streamer + load("streamer", trans.get("ComponentIcons.Streamer"), Streamer.class); + //// Shock cord + load("shockcord", trans.get("ComponentIcons.Shockcord"), ShockCord.class); + //// Mass component + load("mass", trans.get("ComponentIcons.Masscomponent"), MassComponent.class); } private static void load(String filename, String name, Class componentClass) { @@ -133,7 +152,8 @@ public class ComponentIcons { } - icons[1] = new ImageIcon(bi2,desc + " (disabled)"); + //// (disabled) + icons[1] = new ImageIcon(bi2,desc + " " +trans.get("ComponentIcons.disabled")); return icons; } else { diff --git a/src/net/sf/openrocket/gui/main/RocketActions.java b/src/net/sf/openrocket/gui/main/RocketActions.java index 76f3c633..625afdab 100644 --- a/src/net/sf/openrocket/gui/main/RocketActions.java +++ b/src/net/sf/openrocket/gui/main/RocketActions.java @@ -17,11 +17,13 @@ import net.sf.openrocket.document.OpenRocketDocument; import net.sf.openrocket.document.Simulation; import net.sf.openrocket.gui.components.StyledLabel; import net.sf.openrocket.gui.configdialog.ComponentConfigDialog; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.ComponentChangeEvent; import net.sf.openrocket.rocketcomponent.ComponentChangeListener; import net.sf.openrocket.rocketcomponent.Rocket; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.Stage; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.Icons; import net.sf.openrocket.util.Pair; import net.sf.openrocket.util.Prefs; @@ -59,7 +61,8 @@ public class RocketActions { private final RocketAction newStageAction; private final RocketAction moveUpAction; private final RocketAction moveDownAction; - + private static final Translator trans = Application.getTranslator(); + public RocketActions(OpenRocketDocument document, DocumentSelectionModel selectionModel, BasicFrame parentFrame) { @@ -207,19 +210,23 @@ public class RocketActions { boolean verify = Prefs.NODE.getBoolean(Prefs.CONFIRM_DELETE_SIMULATION, true); if (verify) { JPanel panel = new JPanel(new MigLayout()); - JCheckBox dontAsk = new JCheckBox("Do not ask me again"); + //// Do not ask me again + JCheckBox dontAsk = new JCheckBox(trans.get("RocketActions.checkbox.Donotaskmeagain")); panel.add(dontAsk,"wrap"); - panel.add(new StyledLabel("You can change the default operation in the " + - "preferences.",-2)); + //// You can change the default operation in the preferences. + panel.add(new StyledLabel(trans.get("RocketActions.lbl.Youcanchangedefop"),-2)); int ret = JOptionPane.showConfirmDialog( parentFrame, new Object[] { - "Delete the selected simulations?", - "This operation cannot be undone.", + //// Delete the selected simulations? + trans.get("RocketActions.showConfirmDialog.lbl1"), + //// This operation cannot be undone. + trans.get("RocketActions.showConfirmDialog.lbl2"), "", panel }, - "Delete simulations", + //// Delete simulations + trans.get("RocketActions.showConfirmDialog.title"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if (ret != JOptionPane.OK_OPTION) @@ -278,8 +285,10 @@ public class RocketActions { */ private class DeleteComponentAction extends RocketAction { public DeleteComponentAction() { - this.putValue(NAME, "Delete"); - this.putValue(SHORT_DESCRIPTION, "Delete the selected component."); + //// Delete + this.putValue(NAME, trans.get("RocketActions.DelCompAct.Delete")); + //// Delete the selected component. + this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.DelCompAct.ttip.Delete")); this.putValue(MNEMONIC_KEY, KeyEvent.VK_D); // this.putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0)); this.putValue(SMALL_ICON, Icons.EDIT_DELETE); @@ -311,8 +320,10 @@ public class RocketActions { */ private class DeleteSimulationAction extends RocketAction { public DeleteSimulationAction() { - this.putValue(NAME, "Delete"); - this.putValue(SHORT_DESCRIPTION, "Delete the selected simulation."); + //// Delete + this.putValue(NAME, trans.get("RocketActions.DelSimuAct.Delete")); + //// Delete the selected simulation. + this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.DelSimuAct.ttip.Delete")); this.putValue(MNEMONIC_KEY, KeyEvent.VK_D); // this.putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0)); this.putValue(SMALL_ICON, Icons.EDIT_DELETE); @@ -344,8 +355,10 @@ public class RocketActions { */ private class DeleteAction extends RocketAction { public DeleteAction() { - this.putValue(NAME, "Delete"); - this.putValue(SHORT_DESCRIPTION, "Delete the selected component or simulation."); + //// Delete + this.putValue(NAME, trans.get("RocketActions.DelAct.Delete")); + //// Delete the selected component or simulation. + this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.DelAct.ttip.Delete")); this.putValue(MNEMONIC_KEY, KeyEvent.VK_D); this.putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0)); this.putValue(SMALL_ICON, Icons.EDIT_DELETE); @@ -377,11 +390,12 @@ public class RocketActions { */ private class CutAction extends RocketAction { public CutAction() { - this.putValue(NAME, "Cut"); + //// Cut + this.putValue(NAME, trans.get("RocketActions.CutAction.Cut")); this.putValue(MNEMONIC_KEY, KeyEvent.VK_T); this.putValue(ACCELERATOR_KEY, CUT_KEY_STROKE); - this.putValue(SHORT_DESCRIPTION, "Cut this component or simulation to " - + "the clipboard and remove from this design"); + //// Cut this component or simulation to the clipboard and remove from this design + this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.CutAction.ttip.Cut")); this.putValue(SMALL_ICON, Icons.EDIT_CUT); clipboardChanged(); } @@ -427,11 +441,12 @@ public class RocketActions { */ private class CopyAction extends RocketAction { public CopyAction() { - this.putValue(NAME, "Copy"); + //// Copy + this.putValue(NAME, trans.get("RocketActions.CopyAct.Copy")); this.putValue(MNEMONIC_KEY, KeyEvent.VK_C); this.putValue(ACCELERATOR_KEY, COPY_KEY_STROKE); - this.putValue(SHORT_DESCRIPTION, "Copy this component (and subcomponents) to " - + "the clipboard."); + //// Copy this component (and subcomponents) to the clipboard. + this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.CopyAct.Copy")); this.putValue(SMALL_ICON, Icons.EDIT_COPY); clipboardChanged(); } @@ -472,11 +487,12 @@ public class RocketActions { */ private class PasteAction extends RocketAction { public PasteAction() { - this.putValue(NAME, "Paste"); + //// Paste + this.putValue(NAME, trans.get("RocketActions.PasteAct.Paste")); this.putValue(MNEMONIC_KEY, KeyEvent.VK_P); this.putValue(ACCELERATOR_KEY, PASTE_KEY_STROKE); - this.putValue(SHORT_DESCRIPTION, "Paste the component or simulation on " - + "the clipboard to the design."); + //// Paste the component or simulation on the clipboard to the design. + this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.PasteAct.ttip.Paste")); this.putValue(SMALL_ICON, Icons.EDIT_PASTE); clipboardChanged(); } @@ -534,8 +550,10 @@ public class RocketActions { */ private class EditAction extends RocketAction { public EditAction() { - this.putValue(NAME, "Edit"); - this.putValue(SHORT_DESCRIPTION, "Edit the selected component."); + //// Edit + this.putValue(NAME, trans.get("RocketActions.EditAct.Edit")); + //// Edit the selected component. + this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.EditAct.ttip.Edit")); clipboardChanged(); } @@ -565,8 +583,10 @@ public class RocketActions { */ private class NewStageAction extends RocketAction { public NewStageAction() { - this.putValue(NAME, "New stage"); - this.putValue(SHORT_DESCRIPTION, "Add a new stage to the rocket design."); + //// New stage + this.putValue(NAME, trans.get("RocketActions.NewStageAct.Newstage")); + //// Add a new stage to the rocket design. + this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.NewStageAct.Newstage")); clipboardChanged(); } @@ -576,7 +596,9 @@ public class RocketActions { ComponentConfigDialog.hideDialog(); RocketComponent stage = new Stage(); - stage.setName("Booster stage"); + //// Booster stage + stage.setName(trans.get("RocketActions.ActBoosterstage")); + //// Add stage document.addUndoPosition("Add stage"); rocket.addChild(stage); rocket.getDefaultConfiguration().setAllStages(); @@ -599,8 +621,10 @@ public class RocketActions { */ private class MoveUpAction extends RocketAction { public MoveUpAction() { - this.putValue(NAME, "Move up"); - this.putValue(SHORT_DESCRIPTION, "Move this component upwards."); + //// Move up + this.putValue(NAME, trans.get("RocketActions.MoveUpAct.Moveup")); + //// Move this component upwards. + this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.MoveUpAct.ttip.Moveup")); clipboardChanged(); } @@ -640,8 +664,10 @@ public class RocketActions { */ private class MoveDownAction extends RocketAction { public MoveDownAction() { - this.putValue(NAME, "Move down"); - this.putValue(SHORT_DESCRIPTION, "Move this component downwards."); + //// Move down + this.putValue(NAME, trans.get("RocketActions.MoveDownAct.Movedown")); + //// Move this component downwards. + this.putValue(SHORT_DESCRIPTION, trans.get("RocketActions.MoveDownAct.ttip.Movedown")); clipboardChanged(); } diff --git a/src/net/sf/openrocket/gui/main/SimulationEditDialog.java b/src/net/sf/openrocket/gui/main/SimulationEditDialog.java index 16e4d06f..501f79b0 100644 --- a/src/net/sf/openrocket/gui/main/SimulationEditDialog.java +++ b/src/net/sf/openrocket/gui/main/SimulationEditDialog.java @@ -42,6 +42,7 @@ import net.sf.openrocket.gui.components.UnitSelector; import net.sf.openrocket.gui.plot.Axis; import net.sf.openrocket.gui.plot.PlotConfiguration; import net.sf.openrocket.gui.plot.SimulationPlotPanel; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.models.atmosphere.ExtendedISAModel; import net.sf.openrocket.rocketcomponent.Configuration; import net.sf.openrocket.simulation.FlightData; @@ -51,6 +52,7 @@ import net.sf.openrocket.simulation.GUISimulationConditions; import net.sf.openrocket.simulation.FlightDataType; import net.sf.openrocket.simulation.listeners.SimulationListener; import net.sf.openrocket.simulation.listeners.example.CSVSaveListener; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.Unit; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.Chars; @@ -81,14 +83,16 @@ public class SimulationEditDialog extends JDialog { private final Simulation simulation; private final GUISimulationConditions conditions; private final Configuration configuration; - + private static final Translator trans = Application.getTranslator(); + public SimulationEditDialog(Window parent, Simulation s) { this(parent, s, 0); } public SimulationEditDialog(Window parent, Simulation s, int tab) { - super(parent, "Edit simulation", JDialog.ModalityType.DOCUMENT_MODAL); + //// Edit simulation + super(parent, trans.get("simedtdlg.title.Editsim"), JDialog.ModalityType.DOCUMENT_MODAL); this.parentWindow = parent; this.simulation = s; @@ -97,7 +101,8 @@ public class SimulationEditDialog extends JDialog { JPanel mainPanel = new JPanel(new MigLayout("fill","[grow, fill]")); - mainPanel.add(new JLabel("Simulation name: "), "span, split 2, shrink"); + //// Simulation name: + mainPanel.add(new JLabel(trans.get("simedtdlg.lbl.Simname") + " "), "span, split 2, shrink"); final JTextField field = new JTextField(simulation.getName()); field.getDocument().addDocumentListener(new DocumentListener() { @Override @@ -125,11 +130,14 @@ public class SimulationEditDialog extends JDialog { JTabbedPane tabbedPane = new JTabbedPane(); - - tabbedPane.addTab("Launch conditions", flightConditionsTab()); - tabbedPane.addTab("Simulation options", simulationOptionsTab()); - tabbedPane.addTab("Plot data", plotTab()); - tabbedPane.addTab("Export data", exportTab()); + //// Launch conditions + tabbedPane.addTab(trans.get("simedtdlg.tab.Launchcond"), flightConditionsTab()); + //// Simulation options + tabbedPane.addTab(trans.get("simedtdlg.tab.Simopt"), simulationOptionsTab()); + //// Plot data + tabbedPane.addTab(trans.get("simedtdlg.tab.Plotdata"), plotTab()); + //// Export data + tabbedPane.addTab(trans.get("simedtdlg.tab.Exportdata"), exportTab()); // Select the initial tab if (tab == EDIT) { @@ -151,7 +159,8 @@ public class SimulationEditDialog extends JDialog { mainPanel.add(new JPanel(), "spanx, split, growx"); JButton button; - button = new JButton("Run simulation"); + //// Run simulation button + button = new JButton(trans.get("simedtdlg.but.runsimulation")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -161,8 +170,8 @@ public class SimulationEditDialog extends JDialog { }); mainPanel.add(button, "gapright para"); - - JButton close = new JButton("Close"); + //// Close button + JButton close = new JButton(trans.get("dlg.but.close")); close.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -194,12 +203,15 @@ public class SimulationEditDialog extends JDialog { JSpinner spin; //// Motor selector - JLabel label = new JLabel("Motor configuration:"); - label.setToolTipText("Select the motor configuration to use."); + //// Motor configuration: + JLabel label = new JLabel(trans.get("simedtdlg.lbl.Motorcfg")); + //// Select the motor configuration to use. + label.setToolTipText(trans.get("simedtdlg.lbl.ttip.Motorcfg")); panel.add(label, "shrinkx, spanx, split 2"); JComboBox combo = new JComboBox(new MotorConfigurationModel(configuration)); - combo.setToolTipText("Select the motor configuration to use."); + //// Select the motor configuration to use. + combo.setToolTipText(trans.get("simedtdlg.combo.ttip.motorconf")); combo.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -212,13 +224,16 @@ public class SimulationEditDialog extends JDialog { //// Wind settings: Average wind speed, turbulence intensity, std. deviation sub = new JPanel(new MigLayout("fill, gap rel unrel", "[grow][65lp!][30lp!][75lp!]","")); - sub.setBorder(BorderFactory.createTitledBorder("Wind")); + //// Wind + sub.setBorder(BorderFactory.createTitledBorder(trans.get("simedtdlg.lbl.Wind"))); panel.add(sub, "growx, split 2, aligny 0, flowy, gapright para"); // Wind average - label = new JLabel("Average windspeed:"); - tip = "The average windspeed relative to the ground."; + //// Average windspeed: + label = new JLabel(trans.get("simedtdlg.lbl.Averwindspeed")); + //// The average windspeed relative to the ground. + tip = trans.get("simedtdlg.lbl.ttip.Averwindspeed"); label.setToolTipText(tip); sub.add(label); @@ -239,10 +254,11 @@ public class SimulationEditDialog extends JDialog { // Wind std. deviation - label = new JLabel("Standard deviation:"); - tip = "The standard deviation of the windspeed.
" + - "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")); + //// The standard deviation of the windspeed.
+ //// The windspeed is within twice the standard deviation from the average for 95% of the time. + tip = trans.get("simedtdlg.lbl.ttip.Stddeviation"); label.setToolTipText(tip); sub.add(label); @@ -264,12 +280,15 @@ public class SimulationEditDialog extends JDialog { // Wind turbulence intensity - label = new JLabel("Turbulence intensity:"); - tip = "The turbulence intensity is the standard deviation " + - "divided by the average windspeed.
" + - "Typical values range from "+ + //// Turbulence intensity: + label = new JLabel(trans.get("simedtdlg.lbl.Turbulenceintensity")); + //// The turbulence intensity is the standard deviation divided by the average windspeed.
+ //// Typical values range from + //// to + tip = trans.get("simedtdlg.lbl.ttip.Turbulenceintensity1") + + trans.get("simedtdlg.lbl.ttip.Turbulenceintensity2") + " "+ UnitGroup.UNITS_RELATIVE.getDefaultUnit().toStringUnit(0.05) + - " to " + + " " + trans.get("simedtdlg.lbl.ttip.Turbulenceintensity3") +" " + UnitGroup.UNITS_RELATIVE.getDefaultUnit().toStringUnit(0.20) + "."; label.setToolTipText(tip); sub.add(label); @@ -304,24 +323,30 @@ public class SimulationEditDialog extends JDialog { //// Temperature and pressure sub = new JPanel(new MigLayout("fill, gap rel unrel", "[grow][65lp!][30lp!][75lp!]","")); - sub.setBorder(BorderFactory.createTitledBorder("Atmospheric conditions")); + //// Atmospheric conditions + sub.setBorder(BorderFactory.createTitledBorder(trans.get("simedtdlg.border.Atmoscond"))); panel.add(sub, "growx, aligny 0, gapright para"); BooleanModel isa = new BooleanModel(conditions, "ISAAtmosphere"); JCheckBox check = new JCheckBox(isa); - check.setText("Use International Standard Atmosphere"); - check.setToolTipText("Select to use the International Standard Atmosphere model."+ - "
This model has a temperature of " + + //// Use International Standard Atmosphere + check.setText(trans.get("simedtdlg.checkbox.InterStdAtmosphere")); + //// Select to use the International Standard Atmosphere model. + ////
This model has a temperature of + //// and a pressure of + //// at sea level. + check.setToolTipText(trans.get("simedtdlg.checkbox.ttip.InterStdAtmosphere1") +" " + UnitGroup.UNITS_TEMPERATURE.toStringUnit(ExtendedISAModel.STANDARD_TEMPERATURE)+ - " and a pressure of " + + " " + trans.get("simedtdlg.checkbox.ttip.InterStdAtmosphere2") + " " + UnitGroup.UNITS_PRESSURE.toStringUnit(ExtendedISAModel.STANDARD_PRESSURE) + - " at sea level."); + " " + trans.get("simedtdlg.checkbox.ttip.InterStdAtmosphere3")); sub.add(check, "spanx, wrap unrel"); - // Temperature - label = new JLabel("Temperature:"); - tip = "The temperature at the launch site."; + // Temperature: + label = new JLabel(trans.get("simedtdlg.lbl.Temperature")); + //// The temperature at the launch site. + tip = trans.get("simedtdlg.lbl.ttip.Temperature"); label.setToolTipText(tip); isa.addEnableComponent(label, false); sub.add(label); @@ -345,9 +370,10 @@ public class SimulationEditDialog extends JDialog { - // Pressure - label = new JLabel("Pressure:"); - tip = "The atmospheric pressure at the launch site."; + // Pressure: + label = new JLabel(trans.get("simedtdlg.lbl.Pressure")); + //// The atmospheric pressure at the launch site. + tip = trans.get("simedtdlg.lbl.ttip.Pressure"); label.setToolTipText(tip); isa.addEnableComponent(label, false); sub.add(label); @@ -376,15 +402,16 @@ public class SimulationEditDialog extends JDialog { //// Launch site conditions sub = new JPanel(new MigLayout("fill, gap rel unrel", "[grow][65lp!][30lp!][75lp!]","")); - sub.setBorder(BorderFactory.createTitledBorder("Launch site")); + //// Launch site + sub.setBorder(BorderFactory.createTitledBorder(trans.get("simedtdlg.lbl.Launchsite"))); panel.add(sub, "growx, split 2, aligny 0, flowy"); - // Latitude - label = new JLabel("Latitude:"); - tip = "The launch site latitude affects the gravitational pull of Earth.
" + - "Positive values are on the Northern hemisphere, negative values on the " + - "Southern hemisphere."; + // Latitude: + label = new JLabel(trans.get("simedtdlg.lbl.Latitude")); + //// The launch site latitude affects the gravitational pull of Earth.
+ //// Positive values are on the Northern hemisphere, negative values on the Southern hemisphere. + tip = trans.get("simedtdlg.lbl.ttip.Latitude"); label.setToolTipText(tip); sub.add(label); @@ -404,10 +431,11 @@ public class SimulationEditDialog extends JDialog { - // Altitude - label = new JLabel("Altitude:"); - tip = "The launch altitude above mean sea level.
" + - "This affects the position of the rocket in the atmospheric model."; + // Altitude: + label = new JLabel(trans.get("simedtdlg.lbl.Altitude")); + //// The launch altitude above mean sea level.
+ //// This affects the position of the rocket in the atmospheric model. + tip = trans.get("simedtdlg.lbl.ttip.Altitude"); label.setToolTipText(tip); sub.add(label); @@ -432,13 +460,15 @@ public class SimulationEditDialog extends JDialog { //// Launch rod sub = new JPanel(new MigLayout("fill, gap rel unrel", "[grow][65lp!][30lp!][75lp!]","")); - sub.setBorder(BorderFactory.createTitledBorder("Launch rod")); + //// Launch rod + sub.setBorder(BorderFactory.createTitledBorder(trans.get("simedtdlg.border.Launchrod"))); panel.add(sub, "growx, aligny 0, wrap"); - // Length - label = new JLabel("Length:"); - tip = "The length of the launch rod."; + // Length: + label = new JLabel(trans.get("simedtdlg.lbl.Length")); + //// The length of the launch rod. + tip = trans.get("simedtdlg.lbl.ttip.Length"); label.setToolTipText(tip); sub.add(label); @@ -458,9 +488,10 @@ public class SimulationEditDialog extends JDialog { - // Angle - label = new JLabel("Angle:"); - tip = "The angle of the launch rod from vertical."; + // Angle: + label = new JLabel(trans.get("simedtdlg.lbl.Angle")); + //// The angle of the launch rod from vertical. + tip = trans.get("simedtdlg.lbl.ttip.Angle"); label.setToolTipText(tip); sub.add(label); @@ -482,13 +513,16 @@ public class SimulationEditDialog extends JDialog { - // Direction - label = new JLabel("Direction:"); - tip = "Direction of the launch rod relative to the wind.
" + + // Direction: + label = new JLabel(trans.get("simedtdlg.lbl.Direction")); + //// Direction of the launch rod relative to the wind.
+ //// = towards the wind, + //// = downwind. + tip = trans.get("simedtdlg.lbl.ttip.Direction1") + UnitGroup.UNITS_ANGLE.toStringUnit(0) + - " = towards the wind, "+ + " " + trans.get("simedtdlg.lbl.ttip.Direction2") + " "+ UnitGroup.UNITS_ANGLE.toStringUnit(Math.PI) + - " = downwind."; + " " + trans.get("simedtdlg.lbl.ttip.Direction3"); label.setToolTipText(tip); sub.add(label); @@ -513,18 +547,25 @@ public class SimulationEditDialog extends JDialog { private String getIntensityDescription(double i) { if (i < 0.001) - return "None"; + //// None + return trans.get("simedtdlg.IntensityDesc.None"); if (i < 0.05) - return "Very low"; + //// Very low + return trans.get("simedtdlg.IntensityDesc.Verylow"); if (i < 0.10) - return "Low"; + //// Low + return trans.get("simedtdlg.IntensityDesc.Low"); if (i < 0.15) - return "Medium"; + //// Medium + return trans.get("simedtdlg.IntensityDesc.Medium"); if (i < 0.20) - return "High"; + //// High + return trans.get("simedtdlg.IntensityDesc.High"); if (i < 0.25) - return "Very high"; - return "Extreme"; + //// Very high + return trans.get("simedtdlg.IntensityDesc.Veryhigh"); + //// Extreme + return trans.get("simedtdlg.IntensityDesc.Extreme"); } @@ -543,32 +584,35 @@ public class SimulationEditDialog extends JDialog { //// Simulation options sub = new JPanel(new MigLayout("fill, gap rel unrel", "[grow][65lp!][30lp!][75lp!]","")); - sub.setBorder(BorderFactory.createTitledBorder("Simulator options")); + //// Simulator options + sub.setBorder(BorderFactory.createTitledBorder(trans.get("simedtdlg.border.Simopt"))); panel.add(sub, "w 330lp!, growy, aligny 0"); // Calculation method - tip = "" + - "The Extended Barrowman method calculates aerodynamic forces according
" + - "to the Barrowman equations extended to accommodate more components."; + //// The Extended Barrowman method calculates aerodynamic forces according
+ //// 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 = "" + - "The six degree-of-freedom simulator allows the rocket total freedom during " + - "flight.
" + - "Integration is performed using a 4th order Runge-Kutta 4 " + - "numerical integration."; + //// The six degree-of-freedom simulator allows the rocket total freedom during flight.
+ //// Integration is performed using a 4th order Runge-Kutta 4 numerical integration. + tip = trans.get("simedtdlg.lbl.ttip.Simmethod1") + + trans.get("simedtdlg.lbl.ttip.Simmethod2"); - label = new JLabel("Simulation method:"); + //// Simulation method: + label = new JLabel(trans.get("simedtdlg.lbl.Simmethod")); label.setToolTipText(tip); sub.add(label, "gaptop unrel, gapright para, spanx, split 2, w 150lp!"); @@ -578,11 +622,13 @@ public class SimulationEditDialog extends JDialog { // Wind average - label = new JLabel("Time step:"); - tip = "The time between simulation steps.
" + - "A smaller time step results in a more accurate but slower simulation.
" + - "The 4th order simulation method is quite accurate with a time " + - "step of " + + //// Time step: + label = new JLabel(trans.get("simedtdlg.lbl.Timestep")); + //// The time between simulation steps.
+ //// A smaller time step results in a more accurate but slower simulation.
+ //// The 4th order simulation method is quite accurate with a time step of + tip = trans.get("simedtdlg.lbl.ttip.Timestep1") + + trans.get("simedtdlg.lbl.ttip.Timestep2") + " " + UnitGroup.UNITS_TIME_STEP.toStringUnit(RK4SimulationStepper.RECOMMENDED_TIME_STEP) + "."; label.setToolTipText(tip); @@ -631,8 +677,10 @@ public class SimulationEditDialog extends JDialog { sub.add(slider,"w 75lp, wrap para"); */ - JButton button = new JButton("Reset to default"); - button.setToolTipText("Reset the time step to its default value (" + + //// Reset to default button + JButton button = new JButton(trans.get("simedtdlg.but.resettodefault")); + //// Reset the time step to its default value ( + button.setToolTipText(trans.get("simedtdlg.but.ttip.resettodefault") + UnitGroup.UNITS_SHORT_TIME.toStringUnit(RK4SimulationStepper.RECOMMENDED_TIME_STEP) + ")."); button.addActionListener(new ActionListener() { @@ -654,20 +702,20 @@ public class SimulationEditDialog extends JDialog { //// Simulation listeners sub = new JPanel(new MigLayout("fill, gap 0 0")); - sub.setBorder(BorderFactory.createTitledBorder("Simulator listeners")); + //// Simulator listeners + sub.setBorder(BorderFactory.createTitledBorder(trans.get("simedtdlg.border.Simlist"))); panel.add(sub, "growx, growy"); DescriptionArea desc = new DescriptionArea(5); - desc.setText("" + - "Simulation listeners 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."); + //// Simulation listeners is an advanced feature that allows user-written code to listen to and interact with the simulation. + //// For details on writing simulation listeners, see the OpenRocket technical documentation. + desc.setText(trans.get("simedtdlg.txt.longA1") + + trans.get("simedtdlg.txt.longA2")); sub.add(desc, "aligny 0, growx, wrap para"); - - label = new JLabel("Current listeners:"); + //// Current listeners: + label = new JLabel(trans.get("simedtdlg.lbl.Curlist")); sub.add(label, "spanx, wrap rel"); final ListenerListModel listenerModel = new ListenerListModel(); @@ -677,17 +725,19 @@ public class SimulationEditDialog extends JDialog { // scroll.setPreferredSize(new Dimension(1,1)); sub.add(scroll, "height 1px, grow, wrap rel"); - - button = new JButton("Add"); + //// Add button + button = new JButton(trans.get("simedtdlg.but.add")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String previous = Prefs.NODE.get("previousListenerName", ""); String input = (String)JOptionPane.showInputDialog(SimulationEditDialog.this, new Object[] { + //// Type the full Java class name of the simulation listener, for example: "Type the full Java class name of the simulation listener, for example:", "" + CSVSaveListener.class.getName() + "" }, - "Add simulation listener", + //// Add simulation listener + trans.get("simedtdlg.lbl.Addsimlist"), JOptionPane.QUESTION_MESSAGE, null, null, previous @@ -702,7 +752,8 @@ public class SimulationEditDialog extends JDialog { }); sub.add(button, "split 2, sizegroup buttons, alignx 50%, gapright para"); - button = new JButton("Remove"); + //// Remove button + button = new JButton(trans.get("simedtdlg.but.remove")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -783,9 +834,11 @@ public class SimulationEditDialog extends JDialog { JPanel panel = new JPanel(new MigLayout("fill")); // No data available - panel.add(new JLabel("No flight data available."), + //// No flight data available. + panel.add(new JLabel(trans.get("simedtdlg.lbl.Noflightdata")), "alignx 50%, aligny 100%, wrap para"); - panel.add(new JLabel("Please run the simulation first."), + //// Please run the simulation first. + panel.add(new JLabel(trans.get("simedtdlg.lbl.runsimfirst")), "alignx 50%, aligny 0%, wrap"); return panel; } @@ -842,7 +895,8 @@ public class SimulationEditDialog extends JDialog { // Create the chart using the factory to get all default settings JFreeChart chart = ChartFactory.createXYLineChart( - "Simulated flight", + //// Simulated flight + trans.get("simedtdlg.chart.Simflight"), null, null, null, @@ -881,7 +935,8 @@ public class SimulationEditDialog extends JDialog { // Create the dialog - final JDialog dialog = new JDialog(this, "Simulation results"); + //// Simulation results + final JDialog dialog = new JDialog(this, trans.get("simedtdlg.dlg.Simres")); dialog.setModalityType(ModalityType.DOCUMENT_MODAL); JPanel panel = new JPanel(new MigLayout("fill")); @@ -901,7 +956,8 @@ public class SimulationEditDialog extends JDialog { panel.add(chartPanel, "grow, wrap 20lp"); - JButton button = new JButton("Close"); + //// Close button + JButton button = new JButton(trans.get("dlg.but.close")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -965,9 +1021,11 @@ public class SimulationEditDialog extends JDialog { if (ex == null) { setIcon(Icons.SIMULATION_LISTENER_OK); + //// Listener instantiated successfully. setToolTipText("Listener instantiated successfully."); } else { setIcon(Icons.SIMULATION_LISTENER_ERROR); + //// Unable to instantiate listener due to exception:
setToolTipText("Unable to instantiate listener due to exception:
" + ex.toString()); } diff --git a/src/net/sf/openrocket/gui/main/SimulationPanel.java b/src/net/sf/openrocket/gui/main/SimulationPanel.java index 1760ed54..6a4bef03 100644 --- a/src/net/sf/openrocket/gui/main/SimulationPanel.java +++ b/src/net/sf/openrocket/gui/main/SimulationPanel.java @@ -34,6 +34,7 @@ import net.sf.openrocket.document.events.SimulationChangeEvent; import net.sf.openrocket.gui.adaptors.Column; import net.sf.openrocket.gui.adaptors.ColumnTableModel; import net.sf.openrocket.gui.components.StyledLabel; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.rocketcomponent.ComponentChangeEvent; import net.sf.openrocket.rocketcomponent.ComponentChangeListener; @@ -45,6 +46,8 @@ import net.sf.openrocket.util.Prefs; public class SimulationPanel extends JPanel { private static final LogHelper log = Application.getLogger(); + private static final Translator trans = Application.getTranslator(); + private static final Color WARNING_COLOR = Color.RED; private static final String WARNING_TEXT = "\uFF01"; // Fullwidth exclamation mark @@ -72,8 +75,10 @@ public class SimulationPanel extends JPanel { //////// The simulation action buttons - button = new JButton("New simulation"); - button.setToolTipText("Add a new simulation"); + //// New simulation button + button = new JButton(trans.get("simpanel.but.newsimulation")); + //// Add a new simulation + button.setToolTipText(trans.get("simpanel.but.ttip.newsimulation")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -91,8 +96,10 @@ public class SimulationPanel extends JPanel { }); this.add(button, "skip 1, gapright para"); - button = new JButton("Edit simulation"); - button.setToolTipText("Edit the selected simulation"); + //// Edit simulation button + button = new JButton(trans.get("simpanel.but.editsimulation")); + //// Edit the selected simulation + button.setToolTipText(trans.get("simpanel.but.ttip.editsim")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -109,8 +116,10 @@ public class SimulationPanel extends JPanel { }); this.add(button, "gapright para"); - button = new JButton("Run simulations"); - button.setToolTipText("Re-run the selected simulations"); + //// Run simulations + button = new JButton(trans.get("simpanel.but.runsimulations")); + //// Re-run the selected simulations + button.setToolTipText(trans.get("simpanel.but.ttip.runsimu")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -133,8 +142,10 @@ public class SimulationPanel extends JPanel { }); this.add(button, "gapright para"); - button = new JButton("Delete simulations"); - button.setToolTipText("Delete the selected simulations"); + //// Delete simulations button + button = new JButton(trans.get("simpanel.but.deletesimulations")); + //// Delete the selected simulations + button.setToolTipText(trans.get("simpanel.but.ttip.deletesim")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -147,18 +158,22 @@ public class SimulationPanel extends JPanel { if (verify) { JPanel panel = new JPanel(new MigLayout()); - JCheckBox dontAsk = new JCheckBox("Do not ask me again"); + //// Do not ask me again + JCheckBox dontAsk = new JCheckBox(trans.get("simpanel.checkbox.donotask")); panel.add(dontAsk, "wrap"); - panel.add(new StyledLabel("You can change the default operation in the " + - "preferences.", -2)); + //// You can change the default operation in the preferences. + panel.add(new StyledLabel(trans.get("simpanel.lbl.defpref"), -2)); int ret = JOptionPane.showConfirmDialog(SimulationPanel.this, new Object[] { - "Delete the selected simulations?", - "This operation cannot be undone.", + //// Delete the selected simulations? + trans.get("simpanel.dlg.lbl.DeleteSim1"), + //// This operation cannot be undone. + trans.get("simpanel.dlg.lbl.DeleteSim2"), "", panel }, - "Delete simulations", + //// Delete simulations + trans.get("simpanel.dlg.lbl.DeleteSim3"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if (ret != JOptionPane.OK_OPTION) @@ -182,8 +197,8 @@ public class SimulationPanel extends JPanel { }); this.add(button, "gapright para"); - - button = new JButton("Plot / export"); + //// Plot / export button + button = new JButton(trans.get("simpanel.but.plotexport")); // button = new JButton("Plot flight"); button.addActionListener(new ActionListener() { @Override @@ -264,7 +279,8 @@ public class SimulationPanel extends JPanel { }, //// Simulation name - new Column("Name") { + //// Name + new Column(trans.get("simpanel.col.Name")) { @Override public Object getValueAt(int row) { if (row < 0 || row >= document.getSimulationCount()) @@ -279,7 +295,8 @@ public class SimulationPanel extends JPanel { }, //// Simulation motors - new Column("Motors") { + //// Motors + new Column(trans.get("simpanel.col.Motors")) { @Override public Object getValueAt(int row) { if (row < 0 || row >= document.getSimulationCount()) @@ -295,7 +312,7 @@ public class SimulationPanel extends JPanel { }, //// Apogee - new Column("Apogee") { + new Column(trans.get("simpanel.col.Apogee")) { @Override public Object getValueAt(int row) { if (row < 0 || row >= document.getSimulationCount()) @@ -311,7 +328,7 @@ public class SimulationPanel extends JPanel { }, //// Maximum velocity - new Column("Max. velocity") { + new Column(trans.get("simpanel.col.Maxvelocity")) { @Override public Object getValueAt(int row) { if (row < 0 || row >= document.getSimulationCount()) @@ -327,7 +344,7 @@ public class SimulationPanel extends JPanel { }, //// Maximum acceleration - new Column("Max. acceleration") { + new Column(trans.get("simpanel.col.Maxacceleration")) { @Override public Object getValueAt(int row) { if (row < 0 || row >= document.getSimulationCount()) @@ -343,7 +360,7 @@ public class SimulationPanel extends JPanel { }, //// Time to apogee - new Column("Time to apogee") { + new Column(trans.get("simpanel.col.Timetoapogee")) { @Override public Object getValueAt(int row) { if (row < 0 || row >= document.getSimulationCount()) @@ -359,7 +376,7 @@ public class SimulationPanel extends JPanel { }, //// Flight time - new Column("Flight time") { + new Column(trans.get("simpanel.col.Flighttime")) { @Override public Object getValueAt(int row) { if (row < 0 || row >= document.getSimulationCount()) @@ -375,7 +392,7 @@ public class SimulationPanel extends JPanel { }, //// Ground hit velocity - new Column("Ground hit velocity") { + new Column(trans.get("simpanel.col.Groundhitvelocity")) { @Override public Object getValueAt(int row) { if (row < 0 || row >= document.getSimulationCount()) @@ -522,10 +539,12 @@ public class SimulationPanel extends JPanel { tip = "" + sim.getName() + "
"; switch (sim.getStatus()) { case UPTODATE: + //// Up to date
tip += "Up to date
"; break; case LOADED: + //// Data loaded from a file
tip += "Data loaded from a file
"; break; diff --git a/src/net/sf/openrocket/gui/main/SimulationRunDialog.java b/src/net/sf/openrocket/gui/main/SimulationRunDialog.java index 9b94ec61..96693eb6 100644 --- a/src/net/sf/openrocket/gui/main/SimulationRunDialog.java +++ b/src/net/sf/openrocket/gui/main/SimulationRunDialog.java @@ -25,6 +25,7 @@ import javax.swing.JProgressBar; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.document.Simulation; import net.sf.openrocket.gui.dialogs.DetailDialog; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.rocketcomponent.Configuration; import net.sf.openrocket.rocketcomponent.MotorMount; @@ -46,6 +47,8 @@ import net.sf.openrocket.util.Prefs; public class SimulationRunDialog extends JDialog { private static final LogHelper log = Application.getLogger(); + private static final Translator trans = Application.getTranslator(); + /** Update the dialog status every this many ms */ private static final long UPDATE_MS = 200; @@ -83,7 +86,8 @@ public class SimulationRunDialog extends JDialog { private final boolean[] simulationDone; public SimulationRunDialog(Window window, Simulation... simulations) { - super(window, "Running simulations...", Dialog.ModalityType.DOCUMENT_MODAL); + //// Running simulations... + super(window, trans.get("SimuRunDlg.title.RunSim"), Dialog.ModalityType.DOCUMENT_MODAL); if (simulations.length == 0) { throw new IllegalArgumentException("Called with no simulations to run"); @@ -109,18 +113,21 @@ public class SimulationRunDialog extends JDialog { // Build the dialog JPanel panel = new JPanel(new MigLayout("fill", "[][grow]")); - simLabel = new JLabel("Running ..."); + //// Running ... + simLabel = new JLabel(trans.get("SimuRunDlg.lbl.Running")); panel.add(simLabel, "spanx, wrap para"); - - panel.add(new JLabel("Simulation time: "), "gapright para"); + //// Simulation time: + panel.add(new JLabel(trans.get("SimuRunDlg.lbl.Simutime") + " "), "gapright para"); timeLabel = new JLabel(""); panel.add(timeLabel, "growx, wrap rel"); - panel.add(new JLabel("Altitude: ")); + //// Altitude: + panel.add(new JLabel(trans.get("SimuRunDlg.lbl.Altitude") + " ")); altLabel = new JLabel(""); panel.add(altLabel, "growx, wrap rel"); - panel.add(new JLabel("Velocity: ")); + //// Velocity: + panel.add(new JLabel(trans.get("SimuRunDlg.lbl.Velocity") +" ")); velLabel = new JLabel(""); panel.add(velLabel, "growx, wrap para"); @@ -129,7 +136,7 @@ public class SimulationRunDialog extends JDialog { // Add cancel button - JButton cancel = new JButton("Cancel"); + JButton cancel = new JButton(trans.get("dlg.but.cancel")); cancel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -380,7 +387,8 @@ public class SimulationRunDialog extends JDialog { DetailDialog.showDetailedMessageDialog(SimulationRunDialog.this, new Object[] { - "Unable to simulate:", + //// Unable to simulate: + trans.get("SimuRunDlg.msg.Unabletosim"), t.getMessage() }, null, simulation.getName(), JOptionPane.ERROR_MESSAGE); @@ -389,7 +397,8 @@ public class SimulationRunDialog extends JDialog { DetailDialog.showDetailedMessageDialog(SimulationRunDialog.this, new Object[] { - "A error occurred during the simulation:", + //// A error occurred during the simulation: + trans.get("SimuRunDlg.msg.errorOccurred"), t.getMessage() }, stackTrace, simulation.getName(), JOptionPane.ERROR_MESSAGE); @@ -400,10 +409,11 @@ public class SimulationRunDialog extends JDialog { t.printStackTrace(); DetailDialog.showDetailedMessageDialog(SimulationRunDialog.this, new Object[] { - "An exception occurred during the simulation:", + //// An exception occurred during the simulation: + trans.get("SimuRunDlg.msg.AnException1"), t.getMessage(), simulation.getSimulationListeners().isEmpty() ? - "Please report this as a bug along with the details below." : "" + trans.get("SimuRunDlg.msg.AnException2") : "" }, stackTrace, simulation.getName(), JOptionPane.ERROR_MESSAGE); @@ -412,8 +422,10 @@ public class SimulationRunDialog extends JDialog { t.printStackTrace(); DetailDialog.showDetailedMessageDialog(SimulationRunDialog.this, new Object[] { - "A computation error occurred during the simulation.", - "Please report this as a bug along with the details below." + //// A computation error occurred during the simulation. + trans.get("SimuRunDlg.msg.AssertionError1"), + //// Please report this as a bug along with the details below. + trans.get("SimuRunDlg.msg.AssertionError2") }, stackTrace, simulation.getName(), JOptionPane.ERROR_MESSAGE); @@ -422,9 +434,10 @@ public class SimulationRunDialog extends JDialog { // Probably an Error DetailDialog.showDetailedMessageDialog(SimulationRunDialog.this, new Object[] { - "An unknown error was encountered during the simulation.", - "The program may be unstable, you should save all your designs " + - "and restart OpenRocket now!" + //// An unknown error was encountered during the simulation. + trans.get("SimuRunDlg.msg.unknownerror1"), + //// The program may be unstable, you should save all your designs and restart OpenRocket now! + trans.get("SimuRunDlg.msg.unknownerror2") }, stackTrace, simulation.getName(), JOptionPane.ERROR_MESSAGE); diff --git a/src/net/sf/openrocket/gui/plot/PlotConfiguration.java b/src/net/sf/openrocket/gui/plot/PlotConfiguration.java index 1cf5e974..93122736 100644 --- a/src/net/sf/openrocket/gui/plot/PlotConfiguration.java +++ b/src/net/sf/openrocket/gui/plot/PlotConfiguration.java @@ -4,9 +4,11 @@ import java.util.EnumSet; import java.util.List; import java.util.Set; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.simulation.FlightDataBranch; import net.sf.openrocket.simulation.FlightDataType; import net.sf.openrocket.simulation.FlightEvent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.Unit; import net.sf.openrocket.util.ArrayList; import net.sf.openrocket.util.BugException; @@ -16,12 +18,15 @@ import net.sf.openrocket.util.Pair; public class PlotConfiguration implements Cloneable { + private static final Translator trans = Application.getTranslator(); + public static final PlotConfiguration[] DEFAULT_CONFIGURATIONS; static { ArrayList configs = new ArrayList(); PlotConfiguration config; - config = new PlotConfiguration("Vertical motion vs. time"); + //// Vertical motion vs. time + config = new PlotConfiguration(trans.get("PlotConfiguration.Verticalmotion")); config.addPlotDataType(FlightDataType.TYPE_ALTITUDE, 0); config.addPlotDataType(FlightDataType.TYPE_VELOCITY_Z); config.addPlotDataType(FlightDataType.TYPE_ACCELERATION_Z); @@ -33,7 +38,8 @@ public class PlotConfiguration implements Cloneable { config.setEvent(FlightEvent.Type.GROUND_HIT, true); configs.add(config); - config = new PlotConfiguration("Total motion vs. time"); + //// Total motion vs. time + config = new PlotConfiguration(trans.get("PlotConfiguration.Totalmotion")); config.addPlotDataType(FlightDataType.TYPE_ALTITUDE, 0); config.addPlotDataType(FlightDataType.TYPE_VELOCITY_TOTAL); config.addPlotDataType(FlightDataType.TYPE_ACCELERATION_TOTAL); @@ -45,7 +51,8 @@ public class PlotConfiguration implements Cloneable { config.setEvent(FlightEvent.Type.GROUND_HIT, true); configs.add(config); - config = new PlotConfiguration("Flight side profile", FlightDataType.TYPE_POSITION_X); + //// Flight side profile + config = new PlotConfiguration(trans.get("PlotConfiguration.Flightside"), FlightDataType.TYPE_POSITION_X); config.addPlotDataType(FlightDataType.TYPE_ALTITUDE); config.setEvent(FlightEvent.Type.IGNITION, true); config.setEvent(FlightEvent.Type.BURNOUT, true); @@ -55,6 +62,7 @@ public class PlotConfiguration implements Cloneable { config.setEvent(FlightEvent.Type.GROUND_HIT, true); configs.add(config); + //// Stability vs. time config = new PlotConfiguration("Stability vs. time"); config.addPlotDataType(FlightDataType.TYPE_STABILITY, 0); config.addPlotDataType(FlightDataType.TYPE_CP_LOCATION, 1); @@ -67,6 +75,7 @@ public class PlotConfiguration implements Cloneable { config.setEvent(FlightEvent.Type.GROUND_HIT, true); configs.add(config); + //// Drag coefficients vs. Mach number config = new PlotConfiguration("Drag coefficients vs. Mach number", FlightDataType.TYPE_MACH_NUMBER); config.addPlotDataType(FlightDataType.TYPE_DRAG_COEFF, 0); @@ -75,6 +84,7 @@ public class PlotConfiguration implements Cloneable { config.addPlotDataType(FlightDataType.TYPE_PRESSURE_DRAG_COEFF, 0); configs.add(config); + //// Roll characteristics config = new PlotConfiguration("Roll characteristics"); config.addPlotDataType(FlightDataType.TYPE_ROLL_RATE, 0); config.addPlotDataType(FlightDataType.TYPE_ROLL_MOMENT_COEFF, 1); @@ -89,6 +99,7 @@ public class PlotConfiguration implements Cloneable { config.setEvent(FlightEvent.Type.GROUND_HIT, true); configs.add(config); + //// Angle of attack and orientation vs. time config = new PlotConfiguration("Angle of attack and orientation vs. time"); config.addPlotDataType(FlightDataType.TYPE_AOA, 0); config.addPlotDataType(FlightDataType.TYPE_ORIENTATION_PHI); @@ -101,6 +112,7 @@ public class PlotConfiguration implements Cloneable { config.setEvent(FlightEvent.Type.GROUND_HIT, true); configs.add(config); + //// Simulation time step and computation time config = new PlotConfiguration("Simulation time step and computation time"); config.addPlotDataType(FlightDataType.TYPE_TIME_STEP); config.addPlotDataType(FlightDataType.TYPE_COMPUTATION_TIME); diff --git a/src/net/sf/openrocket/gui/plot/PlotDialog.java b/src/net/sf/openrocket/gui/plot/PlotDialog.java index b36ff30b..714a0530 100644 --- a/src/net/sf/openrocket/gui/plot/PlotDialog.java +++ b/src/net/sf/openrocket/gui/plot/PlotDialog.java @@ -33,9 +33,11 @@ import javax.swing.JPanel; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.document.Simulation; import net.sf.openrocket.gui.components.StyledLabel; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.simulation.FlightDataBranch; import net.sf.openrocket.simulation.FlightDataType; import net.sf.openrocket.simulation.FlightEvent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.Unit; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.BugException; @@ -66,7 +68,8 @@ import org.jfree.ui.TextAnchor; public class PlotDialog extends JDialog { private static final float PLOT_STROKE_WIDTH = 1.5f; - + private static final Translator trans = Application.getTranslator(); + private static final Color DEFAULT_EVENT_COLOR = new Color(0, 0, 0); private static final Map EVENT_COLORS = new HashMap(); @@ -126,7 +129,8 @@ public class PlotDialog extends JDialog { new ArrayList(); private PlotDialog(Window parent, Simulation simulation, PlotConfiguration config) { - super(parent, "Flight data plot"); + //// Flight data plot + super(parent, trans.get("PlotDialog.title.Flightdataplot")); this.setModalityType(ModalityType.DOCUMENT_MODAL); final boolean initialShowPoints = Prefs.getBoolean(Prefs.PLOT_SHOW_POINTS, false); @@ -195,7 +199,8 @@ public class PlotDialog extends JDialog { // Create the chart using the factory to get all default settings JFreeChart chart = ChartFactory.createXYLineChart( - "Simulated flight", + //// Simulated flight + trans.get("PlotDialog.Chart.Simulatedflight"), null, null, null, @@ -405,7 +410,8 @@ public class PlotDialog extends JDialog { panel.add(chartPanel, "grow, wrap 20lp"); - final JCheckBox check = new JCheckBox("Show data points"); + //// Show data points + final JCheckBox check = new JCheckBox(trans.get("PlotDialog.CheckBox.Showdatapoints")); check.setSelected(initialShowPoints); check.addActionListener(new ActionListener() { @Override @@ -420,13 +426,14 @@ public class PlotDialog extends JDialog { panel.add(check, "split, left"); - JLabel label = new StyledLabel("Click+drag down+right to zoom in, up+left to zoom out", -2); + JLabel label = new StyledLabel(trans.get("PlotDialog.lbl.Chart"), -2); panel.add(label, "gapleft para"); panel.add(new JPanel(), "growx"); - JButton button = new JButton("Close"); + //// Close button + JButton button = new JButton(trans.get("dlg.but.close")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { diff --git a/src/net/sf/openrocket/gui/plot/SimulationPlotPanel.java b/src/net/sf/openrocket/gui/plot/SimulationPlotPanel.java index 4e18be37..eb646dc5 100644 --- a/src/net/sf/openrocket/gui/plot/SimulationPlotPanel.java +++ b/src/net/sf/openrocket/gui/plot/SimulationPlotPanel.java @@ -24,25 +24,32 @@ import net.miginfocom.swing.MigLayout; import net.sf.openrocket.document.Simulation; import net.sf.openrocket.gui.components.DescriptionArea; import net.sf.openrocket.gui.components.UnitSelector; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.simulation.FlightDataBranch; import net.sf.openrocket.simulation.FlightDataType; import net.sf.openrocket.simulation.FlightEvent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.Unit; import net.sf.openrocket.util.GUIUtil; import net.sf.openrocket.util.Icons; public class SimulationPlotPanel extends JPanel { - + private static final Translator trans = Application.getTranslator(); + // TODO: LOW: Should these be somewhere else? public static final int AUTO = -1; public static final int LEFT = 0; public static final int RIGHT = 1; - public static final String AUTO_NAME = "Auto"; - public static final String LEFT_NAME = "Left"; - public static final String RIGHT_NAME = "Right"; + //// Auto + public static final String AUTO_NAME = trans.get("simplotpanel.AUTO_NAME"); + //// Left + public static final String LEFT_NAME = trans.get("simplotpanel.LEFT_NAME"); + //// Right + public static final String RIGHT_NAME = trans.get("simplotpanel.RIGHT_NAME"); - private static final String CUSTOM = "Custom"; + //// Custom + private static final String CUSTOM = trans.get("simplotpanel.CUSTOM"); /** The "Custom" configuration - not to be used for anything other than the title. */ private static final PlotConfiguration CUSTOM_CONFIGURATION; @@ -120,15 +127,16 @@ public class SimulationPlotPanel extends JPanel { modifying--; } }); - this.add(new JLabel("Preset plot configurations: "), "spanx, split"); + //// Preset plot configurations: + this.add(new JLabel(trans.get("simplotpanel.lbl.Presetplotconf")), "spanx, split"); this.add(configurationSelector, "growx, wrap 20lp"); //// X axis - - this.add(new JLabel("X axis type:"), "spanx, split"); + //// X axis type: + this.add(new JLabel(trans.get("simplotpanel.lbl.Xaxistype")), "spanx, split"); domainTypeSelector = new JComboBox(types); domainTypeSelector.setSelectedItem(configuration.getDomainAxisType()); domainTypeSelector.addItemListener(new ItemListener() { @@ -145,8 +153,8 @@ public class SimulationPlotPanel extends JPanel { }); this.add(domainTypeSelector, "gapright para"); - - this.add(new JLabel("Unit:")); + //// Unit: + this.add(new JLabel(trans.get("simplotpanel.lbl.Unit"))); domainUnitSelector = new UnitSelector(configuration.getDomainAxisType().getUnitGroup()); domainUnitSelector.setSelectedUnit(configuration.getDomainAxisUnit()); domainUnitSelector.addItemListener(new ItemListener() { @@ -159,19 +167,18 @@ public class SimulationPlotPanel extends JPanel { }); this.add(domainUnitSelector, "width 40lp, gapright para"); - - DescriptionArea desc = new DescriptionArea("The data will be plotted in time order " + - "even if the X axis type is not time.", 2, -2f); + //// The data will be plotted in time order even if the X axis type is not time. + DescriptionArea desc = new DescriptionArea(trans.get("simplotpanel.Desc"), 2, -2f); desc.setViewportBorder(BorderFactory.createEmptyBorder()); this.add(desc, "width 1px, growx 1, wrap unrel"); //// Y axis selector panel - - this.add(new JLabel("Y axis types:")); - - this.add(new JLabel("Flight events:"), "wrap rel"); + //// Y axis types: + this.add(new JLabel(trans.get("simplotpanel.lbl.Yaxistypes"))); + //// Flight events: + this.add(new JLabel(trans.get("simplotpanel.lbl.Flightevents")), "wrap rel"); typeSelectorPanel = new JPanel(new MigLayout("gapy rel")); JScrollPane scroll = new JScrollPane(typeSelectorPanel); @@ -197,7 +204,7 @@ public class SimulationPlotPanel extends JPanel { //// All + None buttons - JButton button = new JButton("All"); + JButton button = new JButton(trans.get("simplotpanel.but.All")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -208,7 +215,8 @@ public class SimulationPlotPanel extends JPanel { }); this.add(button, "split 2, gapleft para, gapright para, growx, sizegroup buttons"); - button = new JButton("None"); + //// None + button = new JButton(trans.get("simplotpanel.but.None")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -221,14 +229,17 @@ public class SimulationPlotPanel extends JPanel { - - button = new JButton("New Y axis plot type"); + //// New Y axis plot type + button = new JButton(trans.get("simplotpanel.but.NewYaxisplottype")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (configuration.getTypeCount() >= 15) { JOptionPane.showMessageDialog(SimulationPlotPanel.this, - "A maximum of 15 plots is allowed.", "Cannot add plot", + //// A maximum of 15 plots is allowed. + //// Cannot add plot + trans.get("simplotpanel.OptionPane.lbl1"), + trans.get("simplotpanel.OptionPane.lbl2"), JOptionPane.ERROR_MESSAGE); return; } @@ -270,7 +281,8 @@ public class SimulationPlotPanel extends JPanel { this.add(new JPanel(), "growx"); - button = new JButton("Plot flight"); + //// Plot flight + button = new JButton(trans.get("simplotpanel.but.Plotflight")); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -353,7 +365,8 @@ public class SimulationPlotPanel extends JPanel { }); this.add(typeSelector, "gapright para"); - this.add(new JLabel("Unit:")); + //// Unit: + this.add(new JLabel(trans.get("simplotpanel.lbl.Unit"))); unitSelector = new UnitSelector(type.getUnitGroup()); if (unit != null) unitSelector.setSelectedUnit(unit); @@ -368,7 +381,8 @@ public class SimulationPlotPanel extends JPanel { }); this.add(unitSelector, "width 40lp, gapright para"); - this.add(new JLabel("Axis:")); + //// Axis: + this.add(new JLabel(trans.get("simplotpanel.lbl.Axis"))); axisSelector = new JComboBox(POSITIONS); if (position == LEFT) axisSelector.setSelectedIndex(1); @@ -389,7 +403,8 @@ public class SimulationPlotPanel extends JPanel { JButton button = new JButton(Icons.DELETE); - button.setToolTipText("Remove this plot"); + //// Remove this plot + button.setToolTipText(trans.get("simplotpanel.but.ttip.Removethisplot")); button.setBorderPainted(false); button.addActionListener(new ActionListener() { @Override diff --git a/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java b/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java index 774ad152..c367d7e2 100644 --- a/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java +++ b/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java @@ -20,6 +20,7 @@ import net.sf.openrocket.gui.figureelements.Caret; import net.sf.openrocket.gui.figureelements.RocketInfo; import net.sf.openrocket.gui.main.SimulationWorker; import net.sf.openrocket.gui.main.componenttree.ComponentTreeModel; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.masscalc.BasicMassCalculator; import net.sf.openrocket.masscalc.MassCalculator; import net.sf.openrocket.masscalc.MassCalculator.MassCalcType; @@ -31,6 +32,7 @@ import net.sf.openrocket.simulation.FlightData; import net.sf.openrocket.simulation.listeners.SimulationListener; import net.sf.openrocket.simulation.listeners.system.ApogeeEndListener; import net.sf.openrocket.simulation.listeners.system.InterruptListener; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.ChangeSource; import net.sf.openrocket.util.Chars; @@ -73,6 +75,7 @@ import java.util.concurrent.ThreadFactory; */ public class RocketPanel extends JPanel implements TreeSelectionListener, ChangeSource { + private static final Translator trans = Application.getTranslator(); private final RocketFigure figure; private final ScaleScrollPane scrollPane; @@ -179,14 +182,18 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change // Side/back buttons FigureTypeAction action = new FigureTypeAction(RocketFigure.TYPE_SIDE); - action.putValue(Action.NAME, "Side view"); - action.putValue(Action.SHORT_DESCRIPTION, "Side view"); + //// Side view + action.putValue(Action.NAME, trans.get("RocketPanel.FigTypeAct.Sideview")); + //// Side view + action.putValue(Action.SHORT_DESCRIPTION, trans.get("RocketPanel.FigTypeAct.ttip.Sideview")); JToggleButton toggle = new JToggleButton(action); add(toggle, "spanx, split"); action = new FigureTypeAction(RocketFigure.TYPE_BACK); - action.putValue(Action.NAME, "Back view"); - action.putValue(Action.SHORT_DESCRIPTION, "Rear view"); + //// Back view + action.putValue(Action.NAME, trans.get("RocketPanel.FigTypeAct.Backview")); + //// Back view + action.putValue(Action.SHORT_DESCRIPTION, trans.get("RocketPanel.FigTypeAct.ttip.Backview")); toggle = new JToggleButton(action); add(toggle, "gap rel"); @@ -204,8 +211,8 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change // Motor configuration selector - - JLabel label = new JLabel("Motor configuration:"); + //// Motor configuration: + JLabel label = new JLabel(trans.get("RocketPanel.lbl.Motorcfg")); label.setHorizontalAlignment(JLabel.RIGHT); add(label, "growx, right"); add(new JComboBox(new MotorConfigurationModel(configuration)), "wrap"); @@ -234,12 +241,9 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change add(new BasicSlider(theta.getSliderModel(0, 2 * Math.PI), JSlider.VERTICAL, true), "ax 50%, wrap, width " + (d.width + 6) + "px:null:null, growy"); - - infoMessage = new JLabel("" + - "Click to select    " + - "Shift+click to select other    " + - "Double-click to edit    " + - "Click+drag to move"); + + //// 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"); diff --git a/src/net/sf/openrocket/l10n/DebugTranslator.java b/src/net/sf/openrocket/l10n/DebugTranslator.java index 19e6c84a..5a2bf592 100644 --- a/src/net/sf/openrocket/l10n/DebugTranslator.java +++ b/src/net/sf/openrocket/l10n/DebugTranslator.java @@ -2,14 +2,32 @@ package net.sf.openrocket.l10n; /** * A translator implementation that returns the logical key in brackets instead - * of an actual translation. + * of an actual translation. The class optionally verifies that the translation + * is actually obtainable from some other translator. * * @author Sampo Niskanen */ public class DebugTranslator implements Translator { + private final Translator translator; + + + /** + * Sole constructor. + * + * @param translator the translator to verify the translation exists, or null not to verify. + */ + public DebugTranslator(Translator translator) { + this.translator = translator; + } + + + @Override public String get(String key) { + if (translator != null) { + translator.get(key); + } return "[" + key + "]"; } diff --git a/src/net/sf/openrocket/rocketcomponent/BodyTube.java b/src/net/sf/openrocket/rocketcomponent/BodyTube.java index adf0aa19..0b53eb02 100644 --- a/src/net/sf/openrocket/rocketcomponent/BodyTube.java +++ b/src/net/sf/openrocket/rocketcomponent/BodyTube.java @@ -1,13 +1,15 @@ package net.sf.openrocket.rocketcomponent; -import net.sf.openrocket.motor.Motor; -import net.sf.openrocket.util.Coordinate; -import net.sf.openrocket.util.MathUtil; - import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.motor.Motor; +import net.sf.openrocket.startup.Application; +import net.sf.openrocket.util.Coordinate; +import net.sf.openrocket.util.MathUtil; + /** * Rocket body tube component. Has only two parameters, a radius and length. @@ -16,20 +18,21 @@ import java.util.HashMap; */ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial { - + private static final Translator trans = Application.getTranslator(); + private double radius = 0; private boolean autoRadius = false; // Radius chosen automatically based on parent component - + // When changing the inner radius, thickness is modified - + private boolean motorMount = false; private HashMap ejectionDelays = new HashMap(); private HashMap motors = new HashMap(); private IgnitionEvent ignitionEvent = IgnitionEvent.AUTOMATIC; private double ignitionDelay = 0; private double overhang = 0; - - + + public BodyTube() { super(); @@ -37,35 +40,35 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial this.radius = DEFAULT_RADIUS; this.autoRadius = true; } - + public BodyTube(double length, double radius) { super(); this.radius = Math.max(radius, 0); this.length = Math.max(length, 0); } - - + + public BodyTube(double length, double radius, boolean filled) { this(length, radius); this.filled = filled; } - + public BodyTube(double length, double radius, double thickness) { this(length, radius); this.filled = false; this.thickness = thickness; } - - + + /************ Get/set component parameter methods ************/ - + /** * Return the outer radius of the body tube. - * - * @return the outside radius of the tube + * + * @return the outside radius of the tube */ - @Override - public double getOuterRadius () { + @Override + public double getOuterRadius() { if (autoRadius) { // Return auto radius from front or rear double r = -1; @@ -85,29 +88,29 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial } return radius; } - - + + /** * Set the outer radius of the body tube. If the radius is less than the wall thickness, * the wall thickness is decreased accordingly of the value of the radius. * This method sets the automatic radius off. - * - * @param radius the outside radius in standard units + * + * @param radius the outside radius in standard units */ - @Override - public void setOuterRadius (double radius) { + @Override + public void setOuterRadius(double radius) { if ((this.radius == radius) && (autoRadius == false)) return; - + this.autoRadius = false; this.radius = Math.max(radius, 0); - + if (this.thickness > this.radius) this.thickness = this.radius; fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); } - - + + /** * Returns whether the radius is selected automatically or not. * Returns false also in case automatic radius selection is not possible. @@ -115,34 +118,40 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial public boolean isRadiusAutomatic() { return autoRadius; } - + /** * Sets whether the radius is selected automatically or not. */ public void setRadiusAutomatic(boolean auto) { if (autoRadius == auto) return; - + autoRadius = auto; fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); } - - + + @Override - public double getAftRadius() { return getOuterRadius(); } + public double getAftRadius() { + return getOuterRadius(); + } + @Override - public double getForeRadius() { return getOuterRadius(); } + public double getForeRadius() { + return getOuterRadius(); + } + @Override public boolean isAftRadiusAutomatic() { return isRadiusAutomatic(); } - + @Override public boolean isForeRadiusAutomatic() { return isRadiusAutomatic(); } - - + + @Override protected double getFrontAutoRadius() { @@ -157,7 +166,7 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial } return getOuterRadius(); } - + @Override protected double getRearAutoRadius() { if (isRadiusAutomatic()) { @@ -171,27 +180,24 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial } return getOuterRadius(); } + + - - - - - - @Override + @Override public double getInnerRadius() { if (filled) return 0; - return Math.max(getOuterRadius()-thickness, 0); + return Math.max(getOuterRadius() - thickness, 0); } - - @Override + + @Override public void setInnerRadius(double r) { - setThickness(getOuterRadius()-r); + setThickness(getOuterRadius() - r); } - - + + /** @@ -199,12 +205,13 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial */ @Override public String getComponentName() { - return "Body tube"; + //// Body tube + return trans.get("BodyTube.BodyTube"); } - - + + /************ Component calculations ***********/ - + // From SymmetricComponent /** * Returns the outer radius at the position x. This returns the same value as getOuterRadius(). @@ -213,7 +220,7 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial public double getRadius(double x) { return getOuterRadius(); } - + /** * Returns the inner radius at the position x. If the tube is filled, returns always zero. */ @@ -222,10 +229,10 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial if (filled) return 0.0; else - return Math.max(getOuterRadius()-thickness,0); + return Math.max(getOuterRadius() - thickness, 0); } - - + + /** * Returns the body tube's center of gravity. */ @@ -233,7 +240,7 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial public Coordinate getComponentCG() { return new Coordinate(length / 2, 0, 0, getComponentMass()); } - + /** * Returns the body tube's volume. */ @@ -245,22 +252,21 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial else return getFilledVolume(r, length) - getFilledVolume(getInnerRadius(0), length); } - - + + @Override public double getLongitudinalUnitInertia() { // 1/12 * (3 * (r1^2 + r2^2) + h^2) - return (3 * (MathUtil.pow2(getInnerRadius())) + MathUtil.pow2(getOuterRadius()) + - MathUtil.pow2(getLength())) / 12; + return (3 * (MathUtil.pow2(getInnerRadius())) + MathUtil.pow2(getOuterRadius()) + MathUtil.pow2(getLength())) / 12; } - + @Override public double getRotationalUnitInertia() { // 1/2 * (r1^2 + r2^2) - return (MathUtil.pow2(getInnerRadius()) + MathUtil.pow2(getOuterRadius()))/2; + return (MathUtil.pow2(getInnerRadius()) + MathUtil.pow2(getOuterRadius())) / 2; } - - + + /** @@ -269,8 +275,8 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial private static double getFilledVolume(double r, double l) { return Math.PI * r * r * l; } - - + + /** * Adds bounding coordinates to the given set. The body tube will fit within the * convex hull of the points. @@ -285,8 +291,8 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial addBound(bounds, length, r); return bounds; } - - + + /** * Check whether the given type can be added to this component. BodyTubes allow any @@ -304,14 +310,14 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial return true; return false; } - + //////////////// Motor mount ///////////////// - + @Override public boolean isMotorMount() { return motorMount; } - + @Override public void setMotorMount(boolean mount) { if (motorMount == mount) @@ -319,22 +325,22 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial motorMount = mount; fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE); } - + @Override public Motor getMotor(String id) { if (id == null) return null; - + // Check whether the id is valid for the current rocket RocketComponent root = this.getRoot(); if (!(root instanceof Rocket)) return null; if (!((Rocket) root).isMotorConfigurationID(id)) return null; - + return motors.get(id); } - + @Override public void setMotor(String id, Motor motor) { if (id == null) { @@ -349,7 +355,7 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial motors.put(id, motor); fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE); } - + @Override public double getMotorDelay(String id) { Double delay = ejectionDelays.get(id); @@ -357,28 +363,28 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial return Motor.PLUGGED; return delay; } - + @Override public void setMotorDelay(String id, double delay) { ejectionDelays.put(id, delay); fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE); } - + @Override public int getMotorCount() { return 1; } - + @Override public double getMotorMountDiameter() { return getInnerRadius() * 2; } - + @Override public IgnitionEvent getIgnitionEvent() { return ignitionEvent; } - + @Override public void setIgnitionEvent(IgnitionEvent event) { if (ignitionEvent == event) @@ -386,13 +392,13 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial ignitionEvent = event; fireComponentChangeEvent(ComponentChangeEvent.EVENT_CHANGE); } - - + + @Override public double getIgnitionDelay() { return ignitionDelay; } - + @Override public void setIgnitionDelay(double delay) { if (MathUtil.equals(delay, ignitionDelay)) @@ -400,13 +406,13 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial ignitionDelay = delay; fireComponentChangeEvent(ComponentChangeEvent.EVENT_CHANGE); } - - + + @Override public double getMotorOverhang() { return overhang; } - + @Override public void setMotorOverhang(double overhang) { if (MathUtil.equals(this.overhang, overhang)) @@ -414,19 +420,19 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial this.overhang = overhang; fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); } - - + + @Override public Coordinate getMotorPosition(String id) { Motor motor = motors.get(id); if (motor == null) { throw new IllegalArgumentException("No motor with id " + id + " defined."); } - + return new Coordinate(this.getLength() - motor.getLength() + this.getMotorOverhang()); } - - + + /* diff --git a/src/net/sf/openrocket/rocketcomponent/Bulkhead.java b/src/net/sf/openrocket/rocketcomponent/Bulkhead.java index 4c0e6c0e..88e2130f 100644 --- a/src/net/sf/openrocket/rocketcomponent/Bulkhead.java +++ b/src/net/sf/openrocket/rocketcomponent/Bulkhead.java @@ -1,8 +1,12 @@ package net.sf.openrocket.rocketcomponent; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.startup.Application; + public class Bulkhead extends RadiusRingComponent { - + private static final Translator trans = Application.getTranslator(); + public Bulkhead() { setOuterRadiusAutomatic(true); setLength(0.002); @@ -25,7 +29,8 @@ public class Bulkhead extends RadiusRingComponent { @Override public String getComponentName() { - return "Bulkhead"; + //// Bulkhead + return trans.get("Bulkhead.Bulkhead"); } @Override diff --git a/src/net/sf/openrocket/rocketcomponent/ExternalComponent.java b/src/net/sf/openrocket/rocketcomponent/ExternalComponent.java index a7fdbcec..ed543c12 100644 --- a/src/net/sf/openrocket/rocketcomponent/ExternalComponent.java +++ b/src/net/sf/openrocket/rocketcomponent/ExternalComponent.java @@ -1,6 +1,8 @@ package net.sf.openrocket.rocketcomponent; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.Prefs; @@ -17,11 +19,16 @@ import java.util.List; public abstract class ExternalComponent extends RocketComponent { public enum Finish { - ROUGH("Rough", 500e-6), - UNFINISHED("Unfinished", 150e-6), - NORMAL("Regular paint", 60e-6), - SMOOTH("Smooth paint", 20e-6), - POLISHED("Polished", 2e-6); + //// Rough + ROUGH("ExternalComponent.Rough", 500e-6), + //// Unfinished + UNFINISHED("ExternalComponent.Unfinished", 150e-6), + //// Regular paint + NORMAL("ExternalComponent.Regularpaint", 60e-6), + //// Smooth paint + SMOOTH("ExternalComponent.Smoothpaint", 20e-6), + //// Polished + POLISHED("ExternalComponent.Polished", 2e-6); private final String name; private final double roughnessSize; @@ -37,7 +44,8 @@ public abstract class ExternalComponent extends RocketComponent { @Override public String toString() { - return name + " (" + UnitGroup.UNITS_ROUGHNESS.toStringUnit(roughnessSize) + ")"; + final Translator trans = Application.getTranslator(); + return trans.get(name) + " (" + UnitGroup.UNITS_ROUGHNESS.toStringUnit(roughnessSize) + ")"; } } diff --git a/src/net/sf/openrocket/rocketcomponent/FinSet.java b/src/net/sf/openrocket/rocketcomponent/FinSet.java index 8d6a77f4..d218ba68 100644 --- a/src/net/sf/openrocket/rocketcomponent/FinSet.java +++ b/src/net/sf/openrocket/rocketcomponent/FinSet.java @@ -5,13 +5,16 @@ import java.util.Arrays; import java.util.Collection; import java.util.List; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.Coordinate; import net.sf.openrocket.util.MathUtil; import net.sf.openrocket.util.Transformation; public abstract class FinSet extends ExternalComponent { - + private static final Translator trans = Application.getTranslator(); + /** * Maximum allowed cant of fins. */ @@ -19,9 +22,12 @@ public abstract class FinSet extends ExternalComponent { public enum CrossSection { - SQUARE("Square", 1.00), - ROUNDED("Rounded", 0.99), - AIRFOIL("Airfoil", 0.85); + //// Square + SQUARE(trans.get("FinSet.CrossSection.SQUARE"), 1.00), + //// Rounded + ROUNDED(trans.get("FinSet.CrossSection.ROUNDED"), 0.99), + //// Airfoil + AIRFOIL(trans.get("FinSet.CrossSection.AIRFOIL"), 0.85); private final String name; private final double volume; @@ -42,9 +48,12 @@ public abstract class FinSet extends ExternalComponent { } public enum TabRelativePosition { - FRONT("Root chord leading edge"), - CENTER("Root chord midpoint"), - END("Root chord trailing edge"); + //// Root chord leading edge + FRONT(trans.get("FinSet.TabRelativePosition.FRONT")), + //// Root chord midpoint + CENTER(trans.get("FinSet.TabRelativePosition.CENTER")), + //// Root chord trailing edge + END(trans.get("FinSet.TabRelativePosition.END")); private final String name; diff --git a/src/net/sf/openrocket/rocketcomponent/FreeformFinSet.java b/src/net/sf/openrocket/rocketcomponent/FreeformFinSet.java index 792483d2..ffa44be3 100644 --- a/src/net/sf/openrocket/rocketcomponent/FreeformFinSet.java +++ b/src/net/sf/openrocket/rocketcomponent/FreeformFinSet.java @@ -1,35 +1,37 @@ package net.sf.openrocket.rocketcomponent; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.ArrayList; import net.sf.openrocket.util.BugException; import net.sf.openrocket.util.Coordinate; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - public class FreeformFinSet extends FinSet { private static final LogHelper log = Application.getLogger(); - + private static final Translator trans = Application.getTranslator(); + private ArrayList points = new ArrayList(); - + public FreeformFinSet() { points.add(Coordinate.NUL); points.add(new Coordinate(0.025, 0.05)); points.add(new Coordinate(0.075, 0.05)); points.add(new Coordinate(0.05, 0)); - + this.length = 0.05; } - - + + public FreeformFinSet(Coordinate[] finpoints) throws IllegalFinPointException { setPoints(finpoints); } - + /* public FreeformFinSet(FinSet finset) { Coordinate[] finpoints = finset.getFinPoints(); @@ -59,12 +61,12 @@ public class FreeformFinSet extends FinSet { final RocketComponent root = finset.getRoot(); FreeformFinSet freeform; List toInvalidate = Collections.emptyList(); - + try { if (root instanceof Rocket) { ((Rocket) root).freeze(); } - + // Get fin set position and remove fin set final RocketComponent parent = finset.getParent(); final int position; @@ -74,7 +76,7 @@ public class FreeformFinSet extends FinSet { } else { position = -1; } - + // Create the freeform fin set Coordinate[] finpoints = finset.getFinPoints(); @@ -85,24 +87,24 @@ public class FreeformFinSet extends FinSet { "freeform fin, fin=" + finset + " points=" + Arrays.toString(finpoints), e); } - + // Copy component attributes toInvalidate = freeform.copyFrom(finset); - + // Set name final String componentTypeName = finset.getComponentName(); final String name = freeform.getName(); - + if (name.startsWith(componentTypeName)) { freeform.setName(freeform.getComponentName() + name.substring(componentTypeName.length())); } - + // Add freeform fin set to parent if (parent != null) { parent.addChild(freeform, position); } - + } finally { if (root instanceof Rocket) { ((Rocket) root).thaw(); @@ -114,8 +116,8 @@ public class FreeformFinSet extends FinSet { } return freeform; } - - + + /** * Add a fin point between indices index-1 and index. @@ -125,18 +127,18 @@ public class FreeformFinSet extends FinSet { */ public void addPoint(int index) { double x0, y0, x1, y1; - + x0 = points.get(index - 1).x; y0 = points.get(index - 1).y; x1 = points.get(index).x; y1 = points.get(index).y; - + points.add(index, new Coordinate((x0 + x1) / 2, (y0 + y1) / 2)); // adding a point within the segment affects neither mass nor aerodynamics fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE); } - - + + /** * Remove the fin point with the given index. The first and last fin points * cannot be removed, and will cause an IllegalFinPointException @@ -149,20 +151,20 @@ public class FreeformFinSet extends FinSet { if (index == 0 || index == points.size() - 1) { throw new IllegalFinPointException("cannot remove first or last point"); } - + ArrayList 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 list = new ArrayList(points.length); for (Coordinate p : points) { @@ -170,12 +172,12 @@ public class FreeformFinSet extends FinSet { } validate(list); this.points = list; - + this.length = points[points.length - 1].x; fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); } - - + + /** * Set the point at position i to coordinates (x,y). *

@@ -196,11 +198,11 @@ public class FreeformFinSet extends FinSet { public void setPoint(int index, double x, double y) throws IllegalFinPointException { if (y < 0) y = 0; - + double x0, y0, x1, y1; - + if (index == 0) { - + // Restrict point x = Math.min(x, points.get(points.size() - 1).x); y = 0; @@ -208,9 +210,9 @@ public class FreeformFinSet extends FinSet { y0 = Double.NaN; x1 = points.get(1).x; y1 = points.get(1).y; - + } else if (index == points.size() - 1) { - + // Restrict point x = Math.max(x, 0); y = 0; @@ -218,16 +220,16 @@ public class FreeformFinSet extends FinSet { y0 = points.get(index - 1).y; x1 = Double.NaN; y1 = Double.NaN; - + } else { - + x0 = points.get(index - 1).x; y0 = points.get(index - 1).y; x1 = points.get(index + 1).x; y1 = points.get(index + 1).y; - + } - + // Check for intersecting @@ -237,7 +239,7 @@ public class FreeformFinSet extends FinSet { for (int i = 1; i < points.size(); i++) { px1 = points.get(i).x; py1 = points.get(i).y; - + if (i != index - 1 && i != index && i != index + 1) { if (intersects(x0, y0, x, y, px0, py0, px1, py1)) { throw new IllegalFinPointException("segments intersect"); @@ -248,49 +250,49 @@ public class FreeformFinSet extends FinSet { throw new IllegalFinPointException("segments intersect"); } } - + px0 = px1; py0 = py1; } - + if (index == 0) { - + System.out.println("Set point zero to x:" + x); for (int i = 1; i < points.size(); i++) { Coordinate c = points.get(i); points.set(i, c.setX(c.x - x)); } - + } else { - + points.set(index, new Coordinate(x, y)); - + } if (index == 0 || index == points.size() - 1) { this.length = points.get(points.size() - 1).x; } fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); } - - + + private boolean intersects(double ax0, double ay0, double ax1, double ay1, double bx0, double by0, double bx1, double by1) { - + double d = ((by1 - by0) * (ax1 - ax0) - (bx1 - bx0) * (ay1 - ay0)); - + double ua = ((bx1 - bx0) * (ay0 - by0) - (by1 - by0) * (ax0 - bx0)) / d; double ub = ((ax1 - ax0) * (ay0 - by0) - (ay1 - ay0) * (ax0 - bx0)) / d; - + return (ua >= 0) && (ua <= 1) && (ub >= 0) && (ub <= 1); } - - + + @Override public Coordinate[] getFinPoints() { return points.toArray(new Coordinate[0]); } - + @Override public double getSpan() { double max = 0; @@ -300,37 +302,38 @@ public class FreeformFinSet extends FinSet { } return max; } - + @Override public String getComponentName() { - return "Freeform fin set"; + //// Freeform fin set + return trans.get("FreeformFinSet.FreeformFinSet"); } - - + + @Override protected RocketComponent copyWithOriginalID() { RocketComponent c = super.copyWithOriginalID(); ((FreeformFinSet) c).points = this.points.clone(); return c; } - - private void validate(ArrayList 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 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"); } } } - + } diff --git a/src/net/sf/openrocket/rocketcomponent/InnerTube.java b/src/net/sf/openrocket/rocketcomponent/InnerTube.java index a4d5af4d..0b8c92d2 100644 --- a/src/net/sf/openrocket/rocketcomponent/InnerTube.java +++ b/src/net/sf/openrocket/rocketcomponent/InnerTube.java @@ -1,14 +1,16 @@ package net.sf.openrocket.rocketcomponent; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.motor.Motor; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.BugException; import net.sf.openrocket.util.Coordinate; import net.sf.openrocket.util.MathUtil; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - /** * This class defines an inner tube that can be used as a motor mount. The component @@ -18,11 +20,12 @@ import java.util.List; */ public class InnerTube extends ThicknessRingComponent implements Clusterable, RadialParent, MotorMount { - + private static final Translator trans = Application.getTranslator(); + private ClusterConfiguration cluster = ClusterConfiguration.SINGLE; private double clusterScale = 1.0; private double clusterRotation = 0.0; - + private boolean motorMount = false; private HashMap ejectionDelays = new HashMap(); @@ -30,8 +33,8 @@ public class InnerTube extends ThicknessRingComponent private IgnitionEvent ignitionEvent = IgnitionEvent.AUTOMATIC; private double ignitionDelay = 0; private double overhang = 0; - - + + /** * Main constructor. */ @@ -41,30 +44,31 @@ public class InnerTube extends ThicknessRingComponent this.setInnerRadius(0.018 / 2); this.setLength(0.070); } - - + + @Override public double getInnerRadius(double x) { return getInnerRadius(); } - - + + @Override public double getOuterRadius(double x) { return getOuterRadius(); } - - + + @Override public String getComponentName() { - return "Inner Tube"; + //// Inner Tube + return trans.get("InnerTube.InnerTube"); } - + @Override public boolean allowsChildren() { return true; } - + /** * Allow all InternalComponents to be added to this component. */ @@ -72,28 +76,30 @@ public class InnerTube extends ThicknessRingComponent public boolean isCompatible(Class type) { return InternalComponent.class.isAssignableFrom(type); } - - + + ///////////// Cluster methods ////////////// - + /** * Get the current cluster configuration. * @return The current cluster configuration. */ + @Override public ClusterConfiguration getClusterConfiguration() { return cluster; } - + /** * Set the current cluster configuration. * @param cluster The cluster configuration. */ + @Override public void setClusterConfiguration(ClusterConfiguration cluster) { this.cluster = cluster; fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); } - + /** * Return the number of tubes in the cluster. * @return Number of tubes in the current cluster. @@ -102,7 +108,7 @@ public class InnerTube extends ThicknessRingComponent public int getClusterCount() { return cluster.getClusterCount(); } - + /** * Get the cluster scaling. A value of 1.0 indicates that the tubes are packed * touching each other, larger values separate the tubes and smaller values @@ -111,7 +117,7 @@ public class InnerTube extends ThicknessRingComponent public double getClusterScale() { return clusterScale; } - + /** * Set the cluster scaling. * @see #getClusterScale() @@ -123,8 +129,8 @@ public class InnerTube extends ThicknessRingComponent clusterScale = scale; fireComponentChangeEvent(new ComponentChangeEvent(this, ComponentChangeEvent.MASS_CHANGE)); } - - + + /** * @return the clusterRotation @@ -132,8 +138,8 @@ public class InnerTube extends ThicknessRingComponent public double getClusterRotation() { return clusterRotation; } - - + + /** * @param rotation the clusterRotation to set */ @@ -144,8 +150,8 @@ public class InnerTube extends ThicknessRingComponent this.clusterRotation = rotation; fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); } - - + + /** * Return the distance between the closest two cluster inner tube center points. * This is equivalent to the cluster scale multiplied by the tube diameter. @@ -154,8 +160,8 @@ public class InnerTube extends ThicknessRingComponent public double getClusterSeparation() { return 2 * getOuterRadius() * clusterScale; } - - + + public List getClusterPoints() { List list = new ArrayList(getClusterCount()); List points = cluster.getPoints(clusterRotation - getRadialDirection()); @@ -165,16 +171,16 @@ public class InnerTube extends ThicknessRingComponent } return list; } - - + + @Override public Coordinate[] shiftCoordinates(Coordinate[] array) { array = super.shiftCoordinates(array); - + int count = getClusterCount(); if (count == 1) return array; - + List points = getClusterPoints(); if (points.size() != count) { throw new BugException("Inconsistent cluster configuration, cluster count=" + count + @@ -186,20 +192,20 @@ public class InnerTube extends ThicknessRingComponent newArray[i * count + j] = array[i].add(points.get(j)); } } - + return newArray; } - - + + //////////////// Motor mount ///////////////// - + @Override public boolean isMotorMount() { return motorMount; } - + @Override public void setMotorMount(boolean mount) { if (motorMount == mount) @@ -207,22 +213,22 @@ public class InnerTube extends ThicknessRingComponent motorMount = mount; fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE); } - + @Override public Motor getMotor(String id) { if (id == null) return null; - + // Check whether the id is valid for the current rocket RocketComponent root = this.getRoot(); if (!(root instanceof Rocket)) return null; if (!((Rocket) root).isMotorConfigurationID(id)) return null; - + return motors.get(id); } - + @Override public void setMotor(String id, Motor motor) { if (id == null) { @@ -237,7 +243,7 @@ public class InnerTube extends ThicknessRingComponent motors.put(id, motor); fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE); } - + @Override public double getMotorDelay(String id) { Double delay = ejectionDelays.get(id); @@ -245,29 +251,29 @@ public class InnerTube extends ThicknessRingComponent return Motor.PLUGGED; return delay; } - + @Override public void setMotorDelay(String id, double delay) { ejectionDelays.put(id, delay); fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE); } - + @Deprecated @Override public int getMotorCount() { return getClusterCount(); } - + @Override public double getMotorMountDiameter() { return getInnerRadius() * 2; } - + @Override public IgnitionEvent getIgnitionEvent() { return ignitionEvent; } - + @Override public void setIgnitionEvent(IgnitionEvent event) { if (ignitionEvent == event) @@ -275,13 +281,13 @@ public class InnerTube extends ThicknessRingComponent ignitionEvent = event; fireComponentChangeEvent(ComponentChangeEvent.EVENT_CHANGE); } - - + + @Override public double getIgnitionDelay() { return ignitionDelay; } - + @Override public void setIgnitionDelay(double delay) { if (MathUtil.equals(delay, ignitionDelay)) @@ -289,13 +295,13 @@ public class InnerTube extends ThicknessRingComponent ignitionDelay = delay; fireComponentChangeEvent(ComponentChangeEvent.EVENT_CHANGE); } - - + + @Override public double getMotorOverhang() { return overhang; } - + @Override public void setMotorOverhang(double overhang) { if (MathUtil.equals(this.overhang, overhang)) @@ -303,15 +309,15 @@ public class InnerTube extends ThicknessRingComponent this.overhang = overhang; fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); } - - + + @Override public Coordinate getMotorPosition(String id) { Motor motor = motors.get(id); if (motor == null) { throw new IllegalArgumentException("No motor with id " + id + " defined."); } - + return new Coordinate(this.getLength() - motor.getLength() + this.getMotorOverhang()); } @@ -329,5 +335,5 @@ public class InnerTube extends ThicknessRingComponent ((InnerTube) c).ejectionDelays = (HashMap) ejectionDelays.clone(); return c; } - + } \ No newline at end of file diff --git a/src/net/sf/openrocket/rocketcomponent/LaunchLug.java b/src/net/sf/openrocket/rocketcomponent/LaunchLug.java index 70f92a7f..8a6b2751 100644 --- a/src/net/sf/openrocket/rocketcomponent/LaunchLug.java +++ b/src/net/sf/openrocket/rocketcomponent/LaunchLug.java @@ -1,5 +1,7 @@ package net.sf.openrocket.rocketcomponent; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.Coordinate; import net.sf.openrocket.util.MathUtil; @@ -10,6 +12,8 @@ import java.util.Collection; public class LaunchLug extends ExternalComponent implements Coaxial { + private static final Translator trans = Application.getTranslator(); + private double radius; private double thickness; @@ -169,7 +173,8 @@ public class LaunchLug extends ExternalComponent implements Coaxial { @Override public String getComponentName() { - return "Launch lug"; + //// Launch lug + return trans.get("LaunchLug.Launchlug"); } @Override diff --git a/src/net/sf/openrocket/rocketcomponent/MassComponent.java b/src/net/sf/openrocket/rocketcomponent/MassComponent.java index 0a84e3fe..47911aa0 100644 --- a/src/net/sf/openrocket/rocketcomponent/MassComponent.java +++ b/src/net/sf/openrocket/rocketcomponent/MassComponent.java @@ -1,8 +1,12 @@ package net.sf.openrocket.rocketcomponent; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.MathUtil; public class MassComponent extends MassObject { + private static final Translator trans = Application.getTranslator(); + private double mass = 0; @@ -32,7 +36,8 @@ public class MassComponent extends MassObject { @Override public String getComponentName() { - return "Mass component"; + //// Mass component + return trans.get("MassComponent.MassComponent"); } @Override diff --git a/src/net/sf/openrocket/rocketcomponent/MotorMount.java b/src/net/sf/openrocket/rocketcomponent/MotorMount.java index d7ea658f..15ea70f8 100644 --- a/src/net/sf/openrocket/rocketcomponent/MotorMount.java +++ b/src/net/sf/openrocket/rocketcomponent/MotorMount.java @@ -1,14 +1,18 @@ package net.sf.openrocket.rocketcomponent; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.motor.Motor; import net.sf.openrocket.simulation.FlightEvent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.ChangeSource; import net.sf.openrocket.util.Coordinate; public interface MotorMount extends ChangeSource { - + static final Translator trans = Application.getTranslator(); + public static enum IgnitionEvent { - AUTOMATIC("Automatic (launch or ejection charge)") { + //// Automatic (launch or ejection charge) + AUTOMATIC(trans.get("MotorMount.IgnitionEvent.AUTOMATIC")) { @Override public boolean isActivationEvent(FlightEvent e, RocketComponent source) { int count = source.getRocket().getStageCount(); @@ -21,13 +25,15 @@ public interface MotorMount extends ChangeSource { } } }, - LAUNCH("Launch") { + //// Launch + LAUNCH(trans.get("MotorMount.IgnitionEvent.LAUNCH")) { @Override public boolean isActivationEvent(FlightEvent e, RocketComponent source) { return (e.getType() == FlightEvent.Type.LAUNCH); } }, - EJECTION_CHARGE("First ejection charge of previous stage") { + //// First ejection charge of previous stage + EJECTION_CHARGE(trans.get("MotorMount.IgnitionEvent.EJECTION_CHARGE")) { @Override public boolean isActivationEvent(FlightEvent e, RocketComponent source) { if (e.getType() != FlightEvent.Type.EJECTION_CHARGE) @@ -38,7 +44,8 @@ public interface MotorMount extends ChangeSource { return (mount+1 == charge); } }, - BURNOUT("First burnout of previous stage") { + //// First burnout of previous stage + BURNOUT(trans.get("MotorMount.IgnitionEvent.BURNOUT")) { @Override public boolean isActivationEvent(FlightEvent e, RocketComponent source) { if (e.getType() != FlightEvent.Type.BURNOUT) @@ -49,7 +56,8 @@ public interface MotorMount extends ChangeSource { return (mount+1 == charge); } }, - NEVER("Never") { + //// Never + NEVER(trans.get("MotorMount.IgnitionEvent.NEVER")) { @Override public boolean isActivationEvent(FlightEvent e, RocketComponent source) { return false; diff --git a/src/net/sf/openrocket/rocketcomponent/NoseCone.java b/src/net/sf/openrocket/rocketcomponent/NoseCone.java index 229fcbf5..a4de3a9c 100644 --- a/src/net/sf/openrocket/rocketcomponent/NoseCone.java +++ b/src/net/sf/openrocket/rocketcomponent/NoseCone.java @@ -1,5 +1,8 @@ package net.sf.openrocket.rocketcomponent; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.startup.Application; + /** * Rocket nose cones of various types. Implemented as a transition with the * fore radius == 0. @@ -8,111 +11,113 @@ package net.sf.openrocket.rocketcomponent; */ public class NoseCone extends Transition { - - + private static final Translator trans = Application.getTranslator(); + + /********* Constructors **********/ public NoseCone() { - this(Transition.Shape.OGIVE, 6*DEFAULT_RADIUS, DEFAULT_RADIUS); + this(Transition.Shape.OGIVE, 6 * DEFAULT_RADIUS, DEFAULT_RADIUS); } - + public NoseCone(Transition.Shape type, double length, double radius) { super(); super.setType(type); super.setForeRadiusAutomatic(false); super.setForeRadius(0); super.setForeShoulderLength(0); - super.setForeShoulderRadius(0.9*radius); + super.setForeShoulderRadius(0.9 * radius); super.setForeShoulderThickness(0); super.setForeShoulderCapped(filled); super.setThickness(0.002); super.setLength(length); super.setClipped(false); - + } - - + + /********** Get/set methods for component parameters **********/ - + @Override public double getForeRadius() { return 0; } - + @Override public void setForeRadius(double r) { // No-op } - + @Override public boolean isForeRadiusAutomatic() { return false; } - + @Override public void setForeRadiusAutomatic(boolean b) { // No-op } - + @Override public double getForeShoulderLength() { return 0; } - + @Override public double getForeShoulderRadius() { return 0; } - + @Override public double getForeShoulderThickness() { return 0; } - + @Override public boolean isForeShoulderCapped() { return false; } - + @Override public void setForeShoulderCapped(boolean capped) { // No-op } - + @Override public void setForeShoulderLength(double foreShoulderLength) { // No-op } - + @Override public void setForeShoulderRadius(double foreShoulderRadius) { // No-op } - + @Override public void setForeShoulderThickness(double foreShoulderThickness) { // No-op } - + @Override public boolean isClipped() { return false; } - + @Override public void setClipped(boolean b) { // No-op } - - + + /********** RocketComponent methods **********/ - + /** * Return component name. */ @Override public String getComponentName() { - return "Nose cone"; + //// Nose cone + return trans.get("NoseCone.NoseCone"); } - + } diff --git a/src/net/sf/openrocket/rocketcomponent/Parachute.java b/src/net/sf/openrocket/rocketcomponent/Parachute.java index 080ab635..0ce768f9 100644 --- a/src/net/sf/openrocket/rocketcomponent/Parachute.java +++ b/src/net/sf/openrocket/rocketcomponent/Parachute.java @@ -1,11 +1,14 @@ package net.sf.openrocket.rocketcomponent; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.MathUtil; import net.sf.openrocket.util.Prefs; public class Parachute extends RecoveryDevice { - + private static final Translator trans = Application.getTranslator(); + public static final double DEFAULT_CD = 0.8; private double diameter; @@ -103,7 +106,8 @@ public class Parachute extends RecoveryDevice { @Override public String getComponentName() { - return "Parachute"; + //// Parachute + return trans.get("Parachute.Parachute"); } @Override diff --git a/src/net/sf/openrocket/rocketcomponent/RecoveryDevice.java b/src/net/sf/openrocket/rocketcomponent/RecoveryDevice.java index e8596511..0c7fe7c4 100644 --- a/src/net/sf/openrocket/rocketcomponent/RecoveryDevice.java +++ b/src/net/sf/openrocket/rocketcomponent/RecoveryDevice.java @@ -1,7 +1,9 @@ package net.sf.openrocket.rocketcomponent; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.simulation.FlightEvent; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.MathUtil; import net.sf.openrocket.util.Pair; import net.sf.openrocket.util.Prefs; @@ -20,15 +22,18 @@ import net.sf.openrocket.util.Prefs; * @author Sampo Niskanen */ public abstract class RecoveryDevice extends MassObject { + private static final Translator trans = Application.getTranslator(); public static enum DeployEvent { - LAUNCH("Launch (plus NN seconds)") { + //// Launch (plus NN seconds) + LAUNCH(trans.get("RecoveryDevice.DeployEvent.LAUNCH")) { @Override public boolean isActivationEvent(FlightEvent e, RocketComponent source) { return e.getType() == FlightEvent.Type.LAUNCH; } }, - EJECTION("First ejection charge of this stage") { + //// First ejection charge of this stage + EJECTION(trans.get("RecoveryDevice.DeployEvent.EJECTION")) { @Override public boolean isActivationEvent(FlightEvent e, RocketComponent source) { if (e.getType() != FlightEvent.Type.EJECTION_CHARGE) @@ -37,13 +42,15 @@ public abstract class RecoveryDevice extends MassObject { return charge.getStageNumber() == source.getStageNumber(); } }, - APOGEE("Apogee") { + //// Apogee + APOGEE(trans.get("RecoveryDevice.DeployEvent.APOGEE")) { @Override public boolean isActivationEvent(FlightEvent e, RocketComponent source) { return e.getType() == FlightEvent.Type.APOGEE; } }, - ALTITUDE("Specific altitude during descent") { + //// Specific altitude during descent + ALTITUDE(trans.get("RecoveryDevice.DeployEvent.ALTITUDE")) { @SuppressWarnings("unchecked") @Override public boolean isActivationEvent(FlightEvent e, RocketComponent source) { @@ -56,7 +63,8 @@ public abstract class RecoveryDevice extends MassObject { return (altitude.getU() >= alt) && (altitude.getV() <= alt); } }, - NEVER("Never") { + //// Never + NEVER(trans.get("RecoveryDevice.DeployEvent.NEVER")) { @Override public boolean isActivationEvent(FlightEvent e, RocketComponent source) { return false; diff --git a/src/net/sf/openrocket/rocketcomponent/Rocket.java b/src/net/sf/openrocket/rocketcomponent/Rocket.java index 64c1f687..4115c87b 100644 --- a/src/net/sf/openrocket/rocketcomponent/Rocket.java +++ b/src/net/sf/openrocket/rocketcomponent/Rocket.java @@ -1,15 +1,26 @@ package net.sf.openrocket.rocketcomponent; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.UUID; + +import javax.swing.event.ChangeListener; +import javax.swing.event.EventListenerList; + import net.sf.openrocket.gui.main.ExceptionHandler; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.motor.Motor; import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.ArrayList; -import net.sf.openrocket.util.*; - -import javax.swing.event.ChangeListener; -import javax.swing.event.EventListenerList; -import java.util.*; +import net.sf.openrocket.util.Chars; +import net.sf.openrocket.util.Coordinate; +import net.sf.openrocket.util.MathUtil; +import net.sf.openrocket.util.UniqueID; /** @@ -24,40 +35,41 @@ import java.util.*; public class Rocket extends RocketComponent { private static final LogHelper log = Application.getLogger(); - + private static final Translator trans = Application.getTranslator(); + public static final double DEFAULT_REFERENCE_LENGTH = 0.01; - + /** * List of component change listeners. */ private EventListenerList listenerList = new EventListenerList(); - + /** * When freezeList != null, events are not dispatched but stored in the list. * When the structure is thawed, a single combined event will be fired. */ private List 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 motorConfigurationIDs = new ArrayList(); @@ -65,15 +77,15 @@ public class Rocket extends RocketComponent { { motorConfigurationIDs.add(null); } - + // Does the rocket have a perfect finish (a notable amount of laminar flow) private boolean perfectFinish = false; - - + + ///////////// Constructor ///////////// - + public Rocket() { super(RocketComponent.Position.AFTER); modID = UniqueID.next(); @@ -83,35 +95,35 @@ public class Rocket extends RocketComponent { functionalModID = modID; defaultConfiguration = new Configuration(this); } - - + + public String getDesigner() { checkState(); return designer; } - + public void setDesigner(String s) { if (s == null) s = ""; designer = s; fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE); } - - + + public String getRevision() { checkState(); return revision; } - + public void setRevision(String s) { if (s == null) s = ""; revision = s; fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE); } - - + + /** @@ -123,8 +135,8 @@ public class Rocket extends RocketComponent { checkState(); return this.getChildCount(); } - - + + /** * Return the non-negative modification ID of this rocket. The ID is changed * every time any change occurs in the rocket. This can be used to check @@ -146,7 +158,7 @@ public class Rocket extends RocketComponent { public int getModID() { return modID; } - + /** * Return the non-negative mass modification ID of this rocket. See * {@link #getModID()} for details. @@ -156,7 +168,7 @@ public class Rocket extends RocketComponent { public int getMassModID() { return massModID; } - + /** * Return the non-negative aerodynamic modification ID of this rocket. See * {@link #getModID()} for details. @@ -166,7 +178,7 @@ public class Rocket extends RocketComponent { public int getAerodynamicModID() { return aeroModID; } - + /** * Return the non-negative tree modification ID of this rocket. See * {@link #getModID()} for details. @@ -176,7 +188,7 @@ public class Rocket extends RocketComponent { public int getTreeModID() { return treeModID; } - + /** * Return the non-negative functional modificationID of this rocket. * This changes every time a functional change occurs. @@ -186,40 +198,40 @@ public class Rocket extends RocketComponent { public int getFunctionalModID() { return functionalModID; } - - + + public ReferenceType getReferenceType() { checkState(); return refType; } - + public void setReferenceType(ReferenceType type) { if (refType == type) return; refType = type; fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE); } - - + + public double getCustomReferenceLength() { checkState(); return customReferenceLength; } - + public void setCustomReferenceLength(double length) { if (MathUtil.equals(customReferenceLength, length)) return; - + this.customReferenceLength = Math.max(length, 0.001); - + if (refType == ReferenceType.CUSTOM) { fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE); } } - - + + @@ -235,8 +247,8 @@ public class Rocket extends RocketComponent { this.perfectFinish = perfectFinish; fireComponentChangeEvent(ComponentChangeEvent.AERODYNAMIC_CHANGE); } - - + + /** * Get whether the rocket has a perfect finish. @@ -246,8 +258,8 @@ public class Rocket extends RocketComponent { public boolean isPerfectFinish() { return perfectFinish; } - - + + @@ -263,10 +275,10 @@ public class Rocket extends RocketComponent { copy.motorConfigurationNames = (HashMap) 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 source. @@ -279,10 +291,10 @@ public class Rocket extends RocketComponent { */ @SuppressWarnings("unchecked") public void loadFrom(Rocket r) { - + // Store list of components to invalidate after event has been fired List toInvalidate = this.copyFrom(r); - + int type = ComponentChangeEvent.UNDO_CHANGE | ComponentChangeEvent.NONFUNCTIONAL_CHANGE; if (this.massModID != r.massModID) type |= ComponentChangeEvent.MASS_CHANGE; @@ -290,7 +302,7 @@ public class Rocket extends RocketComponent { type |= ComponentChangeEvent.AERODYNAMIC_CHANGE; // Loading a rocket is always a tree change since the component objects change type |= ComponentChangeEvent.TREE_CHANGE; - + this.modID = r.modID; this.massModID = r.massModID; this.aeroModID = r.aeroModID; @@ -298,31 +310,31 @@ public class Rocket extends RocketComponent { this.functionalModID = r.functionalModID; this.refType = r.refType; this.customReferenceLength = r.customReferenceLength; - + this.motorConfigurationIDs = r.motorConfigurationIDs.clone(); this.motorConfigurationNames = (HashMap) r.motorConfigurationNames.clone(); this.perfectFinish = r.perfectFinish; - + String id = defaultConfiguration.getMotorConfigurationID(); if (!this.motorConfigurationIDs.contains(id)) defaultConfiguration.setMotorConfigurationID(null); - + this.checkComponentStructure(); - + fireComponentChangeEvent(type); - + // Invalidate obsolete components after event for (RocketComponent c : toInvalidate) { c.invalidate(); } } - - + + /////// Implement the ComponentChangeListener lists - + /** * Creates a new EventListenerList for this component. This is necessary when cloning * the structure. @@ -331,15 +343,15 @@ public class Rocket extends RocketComponent { // System.out.println("RESETTING LISTENER LIST of Rocket "+this); listenerList = new EventListenerList(); } - - + + public void printListeners() { System.out.println("" + this + " has " + listenerList.getListenerCount() + " listeners:"); Object[] list = listenerList.getListenerList(); for (int i = 1; i < list.length; i += 2) System.out.println(" " + ((i + 1) / 2) + ": " + list[i]); } - + @Override public void addComponentChangeListener(ComponentChangeListener l) { checkState(); @@ -347,15 +359,15 @@ public class Rocket extends RocketComponent { log.verbose("Added ComponentChangeListener " + l + ", current number of listeners is " + listenerList.getListenerCount()); } - + @Override public void removeComponentChangeListener(ComponentChangeListener l) { listenerList.remove(ComponentChangeListener.class, l); log.verbose("Removed ComponentChangeListener " + l + ", current number of listeners is " + listenerList.getListenerCount()); } - - + + @Override public void addChangeListener(ChangeListener l) { checkState(); @@ -363,21 +375,21 @@ public class Rocket extends RocketComponent { log.verbose("Added ChangeListener " + l + ", current number of listeners is " + listenerList.getListenerCount()); } - + @Override public void removeChangeListener(ChangeListener l) { listenerList.remove(ChangeListener.class, l); log.verbose("Removed ChangeListener " + l + ", current number of listeners is " + listenerList.getListenerCount()); } - - + + @Override protected void fireComponentChangeEvent(ComponentChangeEvent e) { mutex.lock("fireComponentChangeEvent"); try { checkState(); - + // Update modification ID's only for normal (not undo/redo) events if (!e.isUndoChange()) { modID = UniqueID.next(); @@ -390,22 +402,22 @@ public class Rocket extends RocketComponent { if (e.getType() != ComponentChangeEvent.NONFUNCTIONAL_CHANGE) functionalModID = modID; } - + // Check whether frozen if (freezeList != null) { log.debug("Rocket is in frozen state, adding event " + e + " info freeze list"); freezeList.add(e); return; } - + log.debug("Firing rocket change event " + e); - + // Notify all components first Iterator iterator = this.iterator(true); while (iterator.hasNext()) { iterator.next().componentChanged(e); } - + // Notify all listeners Object[] listeners = listenerList.getListenerList(); for (int i = listeners.length - 2; i >= 0; i -= 2) { @@ -419,8 +431,8 @@ public class Rocket extends RocketComponent { mutex.unlock("fireComponentChangeEvent"); } } - - + + /** * Freezes the rocket structure from firing any events. This may be performed to * combine several actions on the structure into a single large action. @@ -449,7 +461,7 @@ public class Rocket extends RocketComponent { "freezeList=" + freezeList); } } - + /** * Thaws a frozen rocket structure and fires a combination of the events fired during * the freeze. The event type is a combination of those fired and the source is the @@ -468,9 +480,9 @@ public class Rocket extends RocketComponent { freezeList = null; return; } - + log.debug("Thawing rocket, freezeList=" + freezeList); - + int type = 0; Object c = null; for (ComponentChangeEvent e : freezeList) { @@ -478,15 +490,15 @@ public class Rocket extends RocketComponent { c = e.getSource(); } freezeList = null; - + fireComponentChangeEvent(new ComponentChangeEvent((RocketComponent) c, type)); } - - + + //////// Motor configurations //////// - + /** * Return the default configuration. This should be used in the user interface @@ -499,8 +511,8 @@ public class Rocket extends RocketComponent { checkState(); return defaultConfiguration; } - - + + /** * Return an array of the motor configuration IDs. This array is guaranteed * to contain the null ID as the first element. @@ -511,7 +523,7 @@ public class Rocket extends RocketComponent { checkState(); return motorConfigurationIDs.toArray(new String[0]); } - + /** * Add a new motor configuration ID to the motor configurations. The new ID * is returned. @@ -525,7 +537,7 @@ public class Rocket extends RocketComponent { fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE); return id; } - + /** * Add a specified motor configuration ID to the motor configurations. * @@ -540,7 +552,7 @@ public class Rocket extends RocketComponent { fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE); return true; } - + /** * Remove a motor configuration ID from the configuration IDs. The null * ID cannot be removed, and an attempt to remove it will be silently ignored. @@ -554,8 +566,8 @@ public class Rocket extends RocketComponent { motorConfigurationIDs.remove(id); fireComponentChangeEvent(ComponentChangeEvent.MOTOR_CHANGE); } - - + + /** * Check whether id is a valid motor configuration ID. * @@ -566,8 +578,8 @@ public class Rocket extends RocketComponent { checkState(); return motorConfigurationIDs.contains(id); } - - + + /** * Check whether the given motor configuration ID has motors defined for it. @@ -579,11 +591,11 @@ public class Rocket extends RocketComponent { checkState(); if (id == null) return false; - + Iterator iterator = this.iterator(); while (iterator.hasNext()) { RocketComponent c = iterator.next(); - + if (c instanceof MotorMount) { MotorMount mount = (MotorMount) c; if (!mount.isMotorMount()) @@ -595,8 +607,8 @@ public class Rocket extends RocketComponent { } return false; } - - + + /** * Return the user-set name of the motor configuration. If no name has been set, * returns an empty string (not null). @@ -613,8 +625,8 @@ public class Rocket extends RocketComponent { return ""; return s; } - - + + /** * Set the name of the motor configuration. A name can be unset by passing * null or an empty string. @@ -627,8 +639,8 @@ public class Rocket extends RocketComponent { motorConfigurationNames.put(id, name); fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE); } - - + + /** * Return either the motor configuration name (if set) or its description. * @@ -638,14 +650,14 @@ public class Rocket extends RocketComponent { public String getMotorConfigurationNameOrDescription(String id) { checkState(); String name; - + name = getMotorConfigurationName(id); if (name != null && !name.equals("")) return name; - + return getMotorConfigurationDescription(id); } - + /** * Return a description for the motor configuration, generated from the motor * designations of the components. @@ -658,59 +670,60 @@ public class Rocket extends RocketComponent { checkState(); String name; int motorCount = 0; - + // Generate the description - + // First iterate over each stage and store the designations of each motor List> list = new ArrayList>(); List currentList = null; - + Iterator iterator = this.iterator(); while (iterator.hasNext()) { RocketComponent c = iterator.next(); - + if (c instanceof Stage) { - + currentList = new ArrayList(); 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 stages = new ArrayList(); - + for (List stage : list) { String stageName = ""; String previous = null; int count = 0; - + Collections.sort(stage); for (String current : stage) { if (current.equals(previous)) { - + count++; - + } else { - + if (previous != null) { String s = ""; if (count > 1) { @@ -718,16 +731,16 @@ public class Rocket extends RocketComponent { } else { s = previous; } - + if (stageName.equals("")) stageName = s; else stageName = stageName + "," + s; } - + previous = current; count = 1; - + } } if (previous != null) { @@ -737,16 +750,16 @@ public class Rocket extends RocketComponent { } else { s = previous; } - + if (stageName.equals("")) stageName = s; else stageName = stageName + "," + s; } - + stages.add(stageName); } - + name = "["; for (int i = 0; i < stages.size(); i++) { String s = stages.get(i); @@ -760,57 +773,58 @@ public class Rocket extends RocketComponent { name += "]"; return name; } - - + + //////// Obligatory component information - + @Override public String getComponentName() { - return "Rocket"; + //// Rocket + return trans.get("Rocket.compname.Rocket"); } - + @Override public Coordinate getComponentCG() { return new Coordinate(0, 0, 0, 0); } - + @Override public double getComponentMass() { return 0; } - + @Override public double getLongitudinalUnitInertia() { return 0; } - + @Override public double getRotationalUnitInertia() { return 0; } - + @Override public Collection getComponentBounds() { return Collections.emptyList(); } - + @Override public boolean isAerodynamic() { return false; } - + @Override public boolean isMassive() { return false; } - + @Override public boolean allowsChildren() { return true; } - + /** * Allows only Stage components to be added to the type Rocket. */ @@ -818,5 +832,5 @@ public class Rocket extends RocketComponent { public boolean isCompatible(Class type) { return (Stage.class.isAssignableFrom(type)); } - + } diff --git a/src/net/sf/openrocket/rocketcomponent/RocketComponent.java b/src/net/sf/openrocket/rocketcomponent/RocketComponent.java index e109f6b3..158c1b7d 100644 --- a/src/net/sf/openrocket/rocketcomponent/RocketComponent.java +++ b/src/net/sf/openrocket/rocketcomponent/RocketComponent.java @@ -1,66 +1,85 @@ package net.sf.openrocket.rocketcomponent; +import java.awt.Color; +import java.util.ArrayDeque; +import java.util.Collection; +import java.util.Deque; +import java.util.Iterator; +import java.util.List; +import java.util.NoSuchElementException; + +import javax.swing.event.ChangeListener; + +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.ArrayList; -import net.sf.openrocket.util.*; - -import javax.swing.event.ChangeListener; -import java.awt.*; -import java.util.*; -import java.util.List; +import net.sf.openrocket.util.BugException; +import net.sf.openrocket.util.ChangeSource; +import net.sf.openrocket.util.Coordinate; +import net.sf.openrocket.util.Invalidator; +import net.sf.openrocket.util.LineStyle; +import net.sf.openrocket.util.MathUtil; +import net.sf.openrocket.util.SafetyMutex; +import net.sf.openrocket.util.UniqueID; public abstract class RocketComponent implements ChangeSource, Cloneable, Iterable { private static final LogHelper log = Application.getLogger(); - + private static final Translator trans = Application.getTranslator(); + /* * Text is suitable to the form * Position relative to: */ public enum Position { /** Position relative to the top of the parent component. */ - TOP("Top of the parent component"), + //// Top of the parent component + TOP(trans.get("RocketComponent.Position.TOP")), /** Position relative to the middle of the parent component. */ - MIDDLE("Middle of the parent component"), + //// Middle of the parent component + MIDDLE(trans.get("RocketComponent.Position.MIDDLE")), /** Position relative to the bottom of the parent component. */ - BOTTOM("Bottom of the parent component"), + //// Bottom of the parent component + BOTTOM(trans.get("RocketComponent.Position.BOTTOM")), /** Position after the parent component (for body components). */ - AFTER("After the parent component"), + //// After the parent component + AFTER(trans.get("RocketComponent.Position.AFTER")), /** Specify an absolute X-coordinate position. */ - ABSOLUTE("Tip of the nose cone"); - + //// Tip of the nose cone + ABSOLUTE(trans.get("RocketComponent.Position.ABSOLUTE")); + private String title; - + Position(String title) { this.title = title; } - + @Override public String toString() { return title; } } - + /** * A safety mutex that can be used to prevent concurrent access to this component. */ protected SafetyMutex mutex = SafetyMutex.newInstance(); - + //////// Parent/child trees /** * Parent component of the current component, or null if none exists. */ private RocketComponent parent = null; - + /** * List of child components of this component. */ private ArrayList<RocketComponent> children = new ArrayList<RocketComponent>(); - + //////// Parameters common to all components: - + /** * Characteristic length of the component. This is used in calculating the coordinate * transformations and positions of other components in reference to this component. @@ -68,50 +87,50 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab * By default it is zero, i.e. no translation. */ protected double length = 0; - + /** * Positioning of this component relative to the parent component. */ protected Position relativePosition; - + /** * Offset of the position of this component relative to the normal position given by * relativePosition. By default zero, i.e. no position change. */ protected double position = 0; - + // Color of the component, null means to use the default color private Color color = null; private LineStyle lineStyle = null; - + // Override mass/CG private double overrideMass = 0; private boolean massOverriden = false; private double overrideCGX = 0; private boolean cgOverriden = false; - + private boolean overrideSubcomponents = false; - + // User-given name of the component private String name = null; - + // User-specified comment private String comment = ""; - + // Unique ID of the component private String id = null; - + /** * Used to invalidate the component after calling {@link #copyFrom(RocketComponent)}. */ private Invalidator invalidator = new Invalidator(this); - - + + //// NOTE !!! All fields must be copied in the method copyFrom()! //// - + /** @@ -124,25 +143,25 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab this.relativePosition = relativePosition; newID(); } - + //////////// Methods that must be implemented //////////// - + /** * Static component name. The name may not vary of the parameters, it must be static. */ public abstract String getComponentName(); // Static component type name - + /** * Return the component mass (regardless of mass overriding). */ public abstract double getComponentMass(); // Mass of non-overridden component - + /** * Return the component CG and mass (regardless of CG or mass overriding). */ public abstract Coordinate getComponentCG(); // CG of non-overridden component - + /** * Return the longitudinal (around the y- or z-axis) unitary moment of inertia. @@ -153,8 +172,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab * @return the longitudinal unitary moment of inertia of this component. */ public abstract double getLongitudinalUnitInertia(); - - + + /** * Return the rotational (around the x-axis) unitary moment of inertia. * The unitary moment of inertia is the moment of inertia with the assumption that @@ -164,8 +183,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab * @return the rotational unitary moment of inertia of this component. */ public abstract double getRotationalUnitInertia(); - - + + /** * Test whether this component allows any children components. This method must * return true if and only if {@link #isCompatible(Class)} returns true for any @@ -174,7 +193,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab * @return <code>true</code> if children can be attached to this component, <code>false</code> otherwise. */ public abstract boolean allowsChildren(); - + /** * Test whether the given component type can be added to this component. This type safety * is enforced by the <code>addChild()</code> methods. The return value of this method @@ -185,8 +204,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab * @return Whether such a component can be added. */ public abstract boolean isCompatible(Class<? extends RocketComponent> type); - - + + /* Non-abstract helper method */ /** * Test whether the given component can be added to this component. This is equivalent @@ -200,8 +219,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab mutex.verify(); return isCompatible(c.getClass()); } - - + + /** * Return a collection of bounding coordinates. The coordinates must be such that @@ -210,23 +229,23 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab * @return a collection of coordinates that bound the component. */ public abstract Collection<Coordinate> getComponentBounds(); - + /** * Return true if the component may have an aerodynamic effect on the rocket. */ public abstract boolean isAerodynamic(); - + /** * Return true if the component may have an effect on the rocket's mass. */ public abstract boolean isMassive(); - - + + //////////// Methods that may be overridden //////////// - + /** * Shift the coordinates in the array corresponding to radial movement. A component @@ -244,8 +263,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab checkState(); return c; } - - + + /** * Called when any component in the tree fires a ComponentChangeEvent. This is by * default a no-op, but subclasses may override this method to e.g. invalidate @@ -258,8 +277,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab // No-op checkState(); } - - + + /** @@ -276,8 +295,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab else return name; } - - + + /** * Create a string describing the basic component structure from this component downwards. * @return a string containing the rocket structure @@ -292,7 +311,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab mutex.unlock("toDebugString"); } } - + private void toDebugString(StringBuilder sb) { sb.append(this.getClass().getSimpleName()).append('@').append(System.identityHashCode(this)); sb.append("[\"").append(this.getName()).append('"'); @@ -302,8 +321,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab } sb.append(']'); } - - + + /** * Make a deep copy of the rocket component tree structure from this component * downwards for copying purposes. Each component in the copy will be assigned @@ -313,15 +332,15 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab */ public final RocketComponent copy() { RocketComponent clone = copyWithOriginalID(); - + Iterator<RocketComponent> iterator = clone.iterator(true); while (iterator.hasNext()) { iterator.next().newID(); } return clone; } - - + + /** * Make a deep copy of the rocket component tree structure from this component @@ -349,14 +368,14 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab } catch (CloneNotSupportedException e) { throw new BugException("CloneNotSupportedException encountered, report a bug!", e); } - + // Reset the mutex clone.mutex = SafetyMutex.newInstance(); - + // Reset all parent/child information clone.parent = null; clone.children = new ArrayList<RocketComponent>(); - + // Add copied children to the structure without firing events. for (RocketComponent child : this.children) { RocketComponent childCopy = child.copyWithOriginalID(); @@ -364,23 +383,23 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab clone.children.add(childCopy); childCopy.parent = clone; } - + this.checkComponentStructure(); clone.checkComponentStructure(); - + return clone; } finally { mutex.unlock("copyWithOriginalID"); } } - - + + ////////////// Methods that may not be overridden //////////// - + ////////// Common parameter setting/getting ////////// - + /** * Return the color of the object to use in 2D figures, or <code>null</code> * to use the default color. @@ -389,7 +408,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab mutex.verify(); return color; } - + /** * Set the color of the object to use in 2D figures. */ @@ -397,18 +416,18 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab if ((color == null && c == null) || (color != null && color.equals(c))) return; - + checkState(); this.color = c; fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE); } - - + + public final LineStyle getLineStyle() { mutex.verify(); return lineStyle; } - + public final void setLineStyle(LineStyle style) { if (this.lineStyle == style) return; @@ -416,8 +435,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab this.lineStyle = style; fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE); } - - + + /** @@ -430,7 +449,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab mutex.verify(); return overrideMass; } - + /** * Set the current override mass. The mass is not set to use by this * method. @@ -445,7 +464,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab if (massOverriden) fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); } - + /** * Return whether mass override is active for this component. This does NOT * take into account whether a parent component is overriding the mass. @@ -456,7 +475,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab mutex.verify(); return massOverriden; } - + /** * Set whether the mass is currently overridden. * @@ -470,8 +489,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab massOverriden = o; fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); } - - + + @@ -484,7 +503,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab mutex.verify(); return getComponentCG().setX(overrideCGX); } - + /** * Return the x-coordinate of the current override CG. * @@ -494,7 +513,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab mutex.verify(); return overrideCGX; } - + /** * Set the current override CG to (x,0,0). * @@ -510,7 +529,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab else fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE); } - + /** * Return whether the CG is currently overridden. * @@ -520,7 +539,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab mutex.verify(); return cgOverriden; } - + /** * Set whether the CG is currently overridden. * @@ -534,8 +553,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab cgOverriden = o; fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); } - - + + /** * Return whether the mass and/or CG override overrides all subcomponent values @@ -551,8 +570,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab mutex.verify(); return overrideSubcomponents; } - - + + /** * Set whether the mass and/or CG override overrides all subcomponent values * as well. See {@link #getOverrideSubcomponents()} for details. @@ -567,7 +586,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab overrideSubcomponents = override; fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); } - + /** * Return whether the option to override all subcomponents is enabled or not. * The default implementation returns <code>false</code> if neither mass nor @@ -582,8 +601,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab mutex.verify(); return isCGOverridden() || isMassOverridden(); } - - + + /** @@ -593,7 +612,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab mutex.verify(); return name; } - + /** * Set the user-defined name of the component. If name==null, sets the name to * the default name, currently the component name. @@ -609,8 +628,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab this.name = name; fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE); } - - + + /** * Return the comment of the component. The component may contain multiple lines * using \n as a newline separator. @@ -621,7 +640,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab mutex.verify(); return comment; } - + /** * Set the comment of the component. * @@ -637,8 +656,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab this.comment = comment; fireComponentChangeEvent(ComponentChangeEvent.NONFUNCTIONAL_CHANGE); } - - + + /** * Returns the unique ID of the component. @@ -648,7 +667,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab public final String getID() { return id; } - + /** * Generate a new ID for this component. */ @@ -656,8 +675,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab mutex.verify(); this.id = UniqueID.uuid(); } - - + + /** @@ -672,7 +691,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab mutex.verify(); return length; } - + /** * Get the positioning of the component relative to its parent component. * This is one of the enums of {@link Position}. A setter method is not provided, @@ -682,8 +701,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab mutex.verify(); return relativePosition; } - - + + /** * Set the positioning of the component relative to its parent component. * The actual position of the component is maintained to the best ability. @@ -699,38 +718,38 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab if (this.relativePosition == position) return; checkState(); - + // Update position so as not to move the component if (this.parent != null) { double thisPos = this.toRelative(Coordinate.NUL, this.parent)[0].x; - + switch (position) { case ABSOLUTE: this.position = this.toAbsolute(Coordinate.NUL)[0].x; break; - + case TOP: this.position = thisPos; break; - + case MIDDLE: this.position = thisPos - (this.parent.length - this.length) / 2; break; - + case BOTTOM: this.position = thisPos - (this.parent.length - this.length); break; - + default: throw new BugException("Unknown position type: " + position); } } - + this.relativePosition = position; fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); } - - + + /** @@ -743,8 +762,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab mutex.verify(); return position; } - - + + /** * Set the position value of the component. The exact meaning of the value * depends on the current relative positioning. @@ -762,11 +781,11 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab checkState(); this.position = value; } - - + + /////////// Coordinate changes /////////// - + /** * Returns coordinate c in absolute coordinates. Equivalent to toComponent(c,null). */ @@ -774,8 +793,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab checkState(); return toRelative(c, null); } - - + + /** * Return coordinate <code>c</code> described in the coordinate system of * <code>dest</code>. If <code>dest</code> is <code>null</code> returns @@ -800,33 +819,33 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab RocketComponent search = dest; Coordinate[] array = new Coordinate[1]; array[0] = c; - + RocketComponent component = this; while ((component != search) && (component.parent != null)) { - + array = component.shiftCoordinates(array); - + switch (component.relativePosition) { case TOP: for (int i = 0; i < array.length; i++) { array[i] = array[i].add(component.position, 0, 0); } break; - + case MIDDLE: for (int i = 0; i < array.length; i++) { array[i] = array[i].add(component.position + (component.parent.length - component.length) / 2, 0, 0); } break; - + case BOTTOM: for (int i = 0; i < array.length; i++) { array[i] = array[i].add(component.position + (component.parent.length - component.length), 0, 0); } break; - + case AFTER: // Add length of all previous brother-components with POSITION_RELATIVE_AFTER int index = component.parent.children.indexOf(component); @@ -842,28 +861,28 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab array[i] = array[i].add(component.position + component.parent.length, 0, 0); } break; - + case ABSOLUTE: search = null; // Requires back-search if dest!=null if (Double.isNaN(absoluteX)) { absoluteX = component.position; } break; - + default: throw new BugException("Unknown relative positioning type of component" + component + ": " + component.relativePosition); } - + component = component.parent; // parent != null } - + if (!Double.isNaN(absoluteX)) { for (int i = 0; i < array.length; i++) { array[i] = array[i].setX(absoluteX + c.x); } } - + // Check whether destination has been found or whether to backtrack // TODO: LOW: Backtracking into clustered components uses only one component if ((dest != null) && (component != dest)) { @@ -872,14 +891,14 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab array[i] = array[i].sub(origin[0]); } } - + return array; } finally { mutex.unlock("toRelative"); } } - - + + /** * Recursively sum the lengths of all subcomponents that have position * Position.AFTER. @@ -901,11 +920,11 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab mutex.unlock("getTotalLength"); } } - - + + /////////// Total mass and CG calculation //////////// - + /** * Return the (possibly overridden) mass of component. * @@ -917,7 +936,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab return overrideMass; return getComponentMass(); } - + /** * Return the (possibly overridden) center of gravity and mass. * @@ -930,14 +949,14 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab checkState(); if (cgOverriden) return getOverrideCG().setWeight(getMass()); - + if (massOverriden) return getComponentCG().setWeight(getMass()); - + return getComponentCG(); } - - + + /** * Return the longitudinal (around the y- or z-axis) moment of inertia of this component. * The moment of inertia is scaled in reference to the (possibly overridden) mass @@ -949,7 +968,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab checkState(); return getLongitudinalUnitInertia() * getMass(); } - + /** * Return the rotational (around the y- or z-axis) moment of inertia of this component. * The moment of inertia is scaled in reference to the (possibly overridden) mass @@ -961,11 +980,11 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab checkState(); return getRotationalUnitInertia() * getMass(); } - - + + /////////// Children handling /////////// - + /** * Adds a child to the rocket component tree. The component is added to the end @@ -981,8 +1000,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab checkState(); addChild(component, children.size()); } - - + + /** * Adds a child to the rocket component tree. The component is added to * the given position of the component's child list. @@ -1005,17 +1024,17 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab throw new IllegalStateException("Component " + component.getComponentName() + " not currently compatible with component " + getComponentName()); } - + children.add(index, component); component.parent = this; - + this.checkComponentStructure(); component.checkComponentStructure(); - + fireAddRemoveEvent(component); } - - + + /** * Removes a child from the rocket component tree. * @@ -1026,13 +1045,13 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab checkState(); RocketComponent component = children.remove(n); component.parent = null; - + this.checkComponentStructure(); component.checkComponentStructure(); - + fireAddRemoveEvent(component); } - + /** * Removes a child from the rocket component tree. Does nothing if the component * is not present as a child. @@ -1042,22 +1061,22 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab */ public final boolean removeChild(RocketComponent component) { checkState(); - + component.checkComponentStructure(); - + if (children.remove(component)) { component.parent = null; - + this.checkComponentStructure(); component.checkComponentStructure(); - + fireAddRemoveEvent(component); return true; } return false; } - - + + /** @@ -1071,15 +1090,15 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab checkState(); if (children.remove(component)) { children.add(index, component); - + this.checkComponentStructure(); component.checkComponentStructure(); - + fireAddRemoveEvent(component); } } - - + + /** * Fires an AERODYNAMIC_CHANGE, MASS_CHANGE or OTHER_CHANGE event depending on the * type of component removed. @@ -1094,30 +1113,30 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab if (c.isMassive()) type |= ComponentChangeEvent.MASS_CHANGE; } - + fireComponentChangeEvent(type); } - - + + public final int getChildCount() { checkState(); this.checkComponentStructure(); return children.size(); } - + public final RocketComponent getChild(int n) { checkState(); this.checkComponentStructure(); return children.get(n); } - + public final List<RocketComponent> getChildren() { checkState(); this.checkComponentStructure(); return children.clone(); } - - + + /** * Returns the position of the child in this components child list, or -1 if the * component is not a child of this component. @@ -1130,7 +1149,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab this.checkComponentStructure(); return children.indexOf(child); } - + /** * Get the parent component of this component. Returns <code>null</code> if the component * has no parent. @@ -1141,7 +1160,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab checkState(); return parent; } - + /** * Get the root component of the component tree. * @@ -1154,7 +1173,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab gp = gp.parent; return gp; } - + /** * Returns the root Rocket component of this component tree. Throws an * IllegalStateException if the root component is not a Rocket. @@ -1170,8 +1189,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab throw new IllegalStateException("getRocket() called with root component " + r.getComponentName()); } - - + + /** * Return the Stage component that this component belongs to. Throws an * IllegalStateException if a Stage is not in the parentage of this component. @@ -1189,7 +1208,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab } throw new IllegalStateException("getStage() called without Stage as a parent."); } - + /** * Return the stage number of the stage this component belongs to. The stages * are numbered from zero upwards. @@ -1201,7 +1220,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab if (parent == null) { throw new IllegalArgumentException("getStageNumber() called for root component"); } - + RocketComponent stage = this; while (!(stage instanceof Stage)) { stage = stage.parent; @@ -1212,8 +1231,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab } return stage.parent.getChildPosition(stage); } - - + + /** * Find a component with the given ID. The component tree is searched from this component * down (including this component) for the ID and the corresponding component is returned, @@ -1232,8 +1251,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab } return null; } - - + + // TODO: Move these methods elsewhere (used only in SymmetricComponent) public final RocketComponent getPreviousComponent() { checkState(); @@ -1264,34 +1283,34 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab c = c.getChild(c.getChildCount() - 1); return c; } - + // TODO: Move these methods elsewhere (used only in SymmetricComponent) public final RocketComponent getNextComponent() { checkState(); if (getChildCount() > 0) return getChild(0); - + RocketComponent current = this; RocketComponent nextParent = this.parent; - + while (nextParent != null) { int pos = nextParent.getChildPosition(current); if (pos < nextParent.getChildCount() - 1) return nextParent.getChild(pos + 1); - + current = nextParent; nextParent = current.parent; } return null; } - - + + /////////// Event handling ////////// // // Listener lists are provided by the root Rocket component, // a single listener list for the whole rocket. // - + /** * Adds a ComponentChangeListener to the rocket tree. The listener is added to the root * component, which must be of type Rocket (which overrides this method). Events of all @@ -1303,7 +1322,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab checkState(); getRocket().addComponentChangeListener(l); } - + /** * Removes a ComponentChangeListener from the rocket tree. The listener is removed from * the root component, which must be of type Rocket (which overrides this method). @@ -1317,8 +1336,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab getRoot().removeComponentChangeListener(l); } } - - + + /** * Adds a <code>ChangeListener</code> to the rocket tree. This is identical to * <code>addComponentChangeListener()</code> except that it uses a @@ -1333,7 +1352,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab checkState(); getRocket().addChangeListener(l); } - + /** * Removes a ChangeListener from the rocket tree. This is identical to * removeComponentChangeListener() except it uses a ChangeListener. @@ -1348,8 +1367,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab getRoot().removeChangeListener(l); } } - - + + /** * Fires a ComponentChangeEvent on the rocket structure. The call is passed to the * root component, which must be of type Rocket (which overrides this method). @@ -1370,8 +1389,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab } getRoot().fireComponentChangeEvent(e); } - - + + /** * Fires a ComponentChangeEvent of the given type. The source of the event is set to * this component. @@ -1382,8 +1401,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab protected void fireComponentChangeEvent(int type) { fireComponentChangeEvent(new ComponentChangeEvent(this, type)); } - - + + /** * Checks whether this component has been invalidated and should no longer be used. * This is a safety check that in-place replaced components are no longer used. @@ -1396,8 +1415,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab invalidator.check(true); mutex.verify(); } - - + + /** * Check that the local component structure is correct. This can be called after changing * the component structure in order to verify the integrity. @@ -1420,7 +1439,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab } } } - + // Check whether the list contains exactly the searched-for component (with == operator) private boolean containsExact(List<RocketComponent> haystack, RocketComponent needle) { for (RocketComponent c : haystack) { @@ -1430,10 +1449,10 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab } return false; } - - + + /////////// Iterators ////////// - + /** * Returns an iterator that iterates over all children and sub-children. * <p> @@ -1455,8 +1474,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab public final Iterator<RocketComponent> deepIterator(boolean returnSelf) { return iterator(returnSelf); } - - + + /** * Returns an iterator that iterates over all children and sub-children, including itself. * <p> @@ -1471,8 +1490,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab public final Iterator<RocketComponent> deepIterator() { return iterator(); } - - + + /** * Returns an iterator that iterates over all children and sub-children. @@ -1492,8 +1511,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab checkState(); return new RocketComponentIterator(this, returnSelf); } - - + + /** * Returns an iterator that iterates over this components, its children and sub-children. * <p> @@ -1505,8 +1524,8 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab public final Iterator<RocketComponent> iterator() { return iterator(true); } - - + + @@ -1525,18 +1544,18 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab RocketComponent other = (RocketComponent) obj; return this.id.equals(other.id); } - - + + @Override public int hashCode() { return id.hashCode(); } - - + + //////////// Helper methods for subclasses - + @@ -1551,36 +1570,36 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab bounds.add(new Coordinate(x, r, r)); bounds.add(new Coordinate(x, -r, r)); } - - + + protected static final Coordinate ringCG(double outerRadius, double innerRadius, double x1, double x2, double density) { return new Coordinate((x1 + x2) / 2, 0, 0, ringMass(outerRadius, innerRadius, x2 - x1, density)); } - + protected static final double ringMass(double outerRadius, double innerRadius, double length, double density) { return Math.PI * (MathUtil.pow2(outerRadius) - MathUtil.pow2(innerRadius)) * length * density; } - + protected static final double ringLongitudinalUnitInertia(double outerRadius, double innerRadius, double length) { // 1/12 * (3 * (r1^2 + r2^2) + h^2) return (3 * (MathUtil.pow2(innerRadius) + MathUtil.pow2(outerRadius)) + MathUtil.pow2(length)) / 12; } - + protected static final double ringRotationalUnitInertia(double outerRadius, double innerRadius) { // 1/2 * (r1^2 + r2^2) return (MathUtil.pow2(innerRadius) + MathUtil.pow2(outerRadius)) / 2; } - - + + //////////// OTHER - + /** * Loads the RocketComponent fields from the given component. This method is meant @@ -1602,34 +1621,34 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab protected List<RocketComponent> copyFrom(RocketComponent src) { checkState(); List<RocketComponent> toInvalidate = new ArrayList<RocketComponent>(); - + if (this.parent != null) { throw new UnsupportedOperationException("copyFrom called for non-root component, parent=" + this.parent.toDebugString() + ", this=" + this.toDebugString()); } - + // Add current structure to be invalidated Iterator<RocketComponent> iterator = this.iterator(false); while (iterator.hasNext()) { toInvalidate.add(iterator.next()); } - + // Remove previous components for (RocketComponent child : this.children) { child.parent = null; } this.children.clear(); - + // Copy new children to this component for (RocketComponent c : src.children) { RocketComponent copy = c.copyWithOriginalID(); this.children.add(copy); copy.parent = this; } - + this.checkComponentStructure(); src.checkComponentStructure(); - + // Set all parameters this.length = src.length; this.relativePosition = src.relativePosition; @@ -1644,22 +1663,22 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab this.name = src.name; this.comment = src.comment; this.id = src.id; - + // Add source components to invalidation tree for (RocketComponent c : src) { toInvalidate.add(c); } - + return toInvalidate; } - + protected void invalidate() { invalidator.invalidate(); } - - + + ////////// Iterator implementation /////////// - + /** * Private inner class to implement the Iterator. * @@ -1668,16 +1687,16 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab private static class RocketComponentIterator implements Iterator<RocketComponent> { // Stack holds iterators which still have some components left. private final Deque<Iterator<RocketComponent>> iteratorStack = new ArrayDeque<Iterator<RocketComponent>>(); - + private final Rocket root; private final int treeModID; - + private final RocketComponent original; private boolean returnSelf = false; - + // Construct iterator with component's child's iterator, if it has elements public RocketComponentIterator(RocketComponent c, boolean returnSelf) { - + RocketComponent gp = c.getRoot(); if (gp instanceof Rocket) { root = (Rocket) gp; @@ -1686,15 +1705,15 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab root = null; treeModID = -1; } - + Iterator<RocketComponent> i = c.children.iterator(); if (i.hasNext()) iteratorStack.push(i); - + this.original = c; this.returnSelf = returnSelf; } - + @Override public boolean hasNext() { checkID(); @@ -1702,38 +1721,38 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab return true; return !iteratorStack.isEmpty(); // Elements remain if stack is not empty } - + @Override public RocketComponent next() { Iterator<RocketComponent> i; - + checkID(); - + // Return original component first if (returnSelf) { returnSelf = false; return original; } - + // Peek first iterator from stack, throw exception if empty i = iteratorStack.peek(); if (i == null) { throw new NoSuchElementException("No further elements in RocketComponent iterator"); } - + // Retrieve next component of the iterator, remove iterator from stack if empty RocketComponent c = i.next(); if (!i.hasNext()) iteratorStack.pop(); - + // Add iterator of component children to stack if it has children i = c.children.iterator(); if (i.hasNext()) iteratorStack.push(i); - + return c; } - + private void checkID() { if (root != null) { if (root.getTreeModID() != treeModID) { @@ -1741,12 +1760,12 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab } } } - + @Override public void remove() { throw new UnsupportedOperationException("remove() not supported by " + "RocketComponent iterator"); } } - + } diff --git a/src/net/sf/openrocket/rocketcomponent/ShockCord.java b/src/net/sf/openrocket/rocketcomponent/ShockCord.java index 6a23a75b..719473d8 100644 --- a/src/net/sf/openrocket/rocketcomponent/ShockCord.java +++ b/src/net/sf/openrocket/rocketcomponent/ShockCord.java @@ -1,12 +1,15 @@ package net.sf.openrocket.rocketcomponent; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.BugException; import net.sf.openrocket.util.MathUtil; import net.sf.openrocket.util.Prefs; public class ShockCord extends MassObject { - + private static final Translator trans = Application.getTranslator(); + private Material material; private double cordLength; @@ -52,7 +55,8 @@ public class ShockCord extends MassObject { @Override public String getComponentName() { - return "Shock cord"; + //// Shock cord + return trans.get("ShockCord.ShockCord"); } @Override diff --git a/src/net/sf/openrocket/rocketcomponent/Stage.java b/src/net/sf/openrocket/rocketcomponent/Stage.java index 5acbe854..f5079bfe 100644 --- a/src/net/sf/openrocket/rocketcomponent/Stage.java +++ b/src/net/sf/openrocket/rocketcomponent/Stage.java @@ -1,10 +1,16 @@ package net.sf.openrocket.rocketcomponent; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.startup.Application; + public class Stage extends ComponentAssembly { + private static final Translator trans = Application.getTranslator(); + @Override public String getComponentName () { - return "Stage"; + //// Stage + return trans.get("Stage.Stage"); } diff --git a/src/net/sf/openrocket/rocketcomponent/Transition.java b/src/net/sf/openrocket/rocketcomponent/Transition.java index 0daa5f7f..1c2adb36 100644 --- a/src/net/sf/openrocket/rocketcomponent/Transition.java +++ b/src/net/sf/openrocket/rocketcomponent/Transition.java @@ -1,29 +1,28 @@ package net.sf.openrocket.rocketcomponent; -import net.sf.openrocket.util.Coordinate; -import net.sf.openrocket.util.MathUtil; +import static java.lang.Math.*; +import static net.sf.openrocket.util.MathUtil.*; import java.util.Collection; -import static java.lang.Math.sin; -import static java.lang.Math.sqrt; -import static net.sf.openrocket.util.Chars.FRAC12; -import static net.sf.openrocket.util.Chars.FRAC34; -import static net.sf.openrocket.util.MathUtil.pow2; -import static net.sf.openrocket.util.MathUtil.pow3; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.startup.Application; +import net.sf.openrocket.util.Coordinate; +import net.sf.openrocket.util.MathUtil; public class Transition extends SymmetricComponent { + private static final Translator trans = Application.getTranslator(); private static final double CLIP_PRECISION = 0.0001; - + private Shape type; private double shapeParameter; private boolean clipped; // Not to be read - use isClipped(), which may be overriden - + private double radius1, radius2; private boolean autoRadius1, autoRadius2; // Whether the start radius is automatic - + private double foreShoulderRadius; private double foreShoulderThickness; @@ -33,30 +32,30 @@ public class Transition extends SymmetricComponent { private double aftShoulderThickness; private double aftShoulderLength; private boolean aftShoulderCapped; - + // Used to cache the clip length private double clipLength = -1; - + public Transition() { super(); - + this.radius1 = DEFAULT_RADIUS; this.radius2 = DEFAULT_RADIUS; this.length = DEFAULT_RADIUS * 3; this.autoRadius1 = true; this.autoRadius2 = true; - + this.type = Shape.CONICAL; this.shapeParameter = 0; this.clipped = true; } - - + + //////// Fore radius //////// - + @Override public double getForeRadius() { @@ -73,35 +72,35 @@ public class Transition extends SymmetricComponent { } return radius1; } - + public void setForeRadius(double radius) { if ((this.radius1 == radius) && (autoRadius1 == false)) return; - + this.autoRadius1 = false; this.radius1 = Math.max(radius, 0); - + if (this.thickness > this.radius1 && this.thickness > this.radius2) this.thickness = Math.max(this.radius1, this.radius2); fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); } - + @Override public boolean isForeRadiusAutomatic() { return autoRadius1; } - + public void setForeRadiusAutomatic(boolean auto) { if (autoRadius1 == auto) return; - + autoRadius1 = auto; fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); } - - + + //////// Aft radius ///////// - + @Override public double getAftRadius() { if (isAftRadiusAutomatic()) { @@ -117,62 +116,62 @@ public class Transition extends SymmetricComponent { } return radius2; } - - + + public void setAftRadius(double radius) { if ((this.radius2 == radius) && (autoRadius2 == false)) return; - + this.autoRadius2 = false; this.radius2 = Math.max(radius, 0); - + if (this.thickness > this.radius1 && this.thickness > this.radius2) this.thickness = Math.max(this.radius1, this.radius2); fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); } - + @Override public boolean isAftRadiusAutomatic() { return autoRadius2; } - + public void setAftRadiusAutomatic(boolean auto) { if (autoRadius2 == auto) return; - + autoRadius2 = auto; fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); } - - + + //// Radius automatics - + @Override protected double getFrontAutoRadius() { if (isAftRadiusAutomatic()) return -1; return getAftRadius(); } - - + + @Override protected double getRearAutoRadius() { if (isForeRadiusAutomatic()) return -1; return getForeRadius(); } - - + + //////// Type & shape ///////// - + public Shape getType() { return type; } - + public void setType(Shape type) { if (type == null) { throw new IllegalArgumentException("setType called with null argument"); @@ -184,142 +183,142 @@ public class Transition extends SymmetricComponent { this.shapeParameter = type.defaultParameter(); fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); } - + public double getShapeParameter() { return shapeParameter; } - + public void setShapeParameter(double n) { if (shapeParameter == n) return; this.shapeParameter = MathUtil.clamp(n, type.minParameter(), type.maxParameter()); fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); } - + public boolean isClipped() { if (!type.isClippable()) return false; return clipped; } - + public void setClipped(boolean c) { if (clipped == c) return; clipped = c; fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); } - + public boolean isClippedEnabled() { return type.isClippable(); } - + public double getShapeParameterMin() { return type.minParameter(); } - + public double getShapeParameterMax() { return type.maxParameter(); } - - + + //////// Shoulders //////// - + public double getForeShoulderRadius() { return foreShoulderRadius; } - + public void setForeShoulderRadius(double foreShoulderRadius) { if (MathUtil.equals(this.foreShoulderRadius, foreShoulderRadius)) return; this.foreShoulderRadius = foreShoulderRadius; fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); } - + public double getForeShoulderThickness() { return foreShoulderThickness; } - + public void setForeShoulderThickness(double foreShoulderThickness) { if (MathUtil.equals(this.foreShoulderThickness, foreShoulderThickness)) return; this.foreShoulderThickness = foreShoulderThickness; fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); } - + public double getForeShoulderLength() { return foreShoulderLength; } - + public void setForeShoulderLength(double foreShoulderLength) { if (MathUtil.equals(this.foreShoulderLength, foreShoulderLength)) return; this.foreShoulderLength = foreShoulderLength; fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); } - + public boolean isForeShoulderCapped() { return foreShoulderCapped; } - + public void setForeShoulderCapped(boolean capped) { if (this.foreShoulderCapped == capped) return; this.foreShoulderCapped = capped; fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); } - - + + public double getAftShoulderRadius() { return aftShoulderRadius; } - + public void setAftShoulderRadius(double aftShoulderRadius) { if (MathUtil.equals(this.aftShoulderRadius, aftShoulderRadius)) return; this.aftShoulderRadius = aftShoulderRadius; fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); } - + public double getAftShoulderThickness() { return aftShoulderThickness; } - + public void setAftShoulderThickness(double aftShoulderThickness) { if (MathUtil.equals(this.aftShoulderThickness, aftShoulderThickness)) return; this.aftShoulderThickness = aftShoulderThickness; fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); } - + public double getAftShoulderLength() { return aftShoulderLength; } - + public void setAftShoulderLength(double aftShoulderLength) { if (MathUtil.equals(this.aftShoulderLength, aftShoulderLength)) return; this.aftShoulderLength = aftShoulderLength; fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); } - + public boolean isAftShoulderCapped() { return aftShoulderCapped; } - + public void setAftShoulderCapped(boolean capped) { if (this.aftShoulderCapped == capped) return; this.aftShoulderCapped = capped; fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); } - - + + /////////// Shape implementations //////////// - + /** @@ -329,20 +328,20 @@ public class Transition extends SymmetricComponent { public double getRadius(double x) { if (x < 0 || x > length) return 0; - + double r1 = getForeRadius(); double r2 = getAftRadius(); - + if (r1 == r2) return r1; - + if (r1 > r2) { x = length - x; double tmp = r1; r1 = r2; r2 = tmp; } - + if (isClipped()) { // Check clip calculation if (clipLength < 0) @@ -353,7 +352,7 @@ public class Transition extends SymmetricComponent { return r1 + type.getRadius(x, r2 - r1, length, shapeParameter); } } - + /** * Numerically solve clipLength from the equation * r1 == type.getRadius(clipLength,r2,clipLength+length) @@ -361,27 +360,27 @@ public class Transition extends SymmetricComponent { */ private void calculateClip(double r1, double r2) { double min = 0, max = length; - + if (r1 >= r2) { double tmp = r1; r1 = r2; r2 = tmp; } - + if (r1 == 0) { clipLength = 0; return; } - + if (length <= 0) { clipLength = 0; return; } - + // Required: // getR(min,min+length,r2) - r1 < 0 // getR(max,max+length,r2) - r1 > 0 - + int n = 0; while (type.getRadius(max, r2, max + length, shapeParameter) - r1 < 0) { min = max; @@ -390,7 +389,7 @@ public class Transition extends SymmetricComponent { if (n > 10) break; } - + while (true) { clipLength = (min + max) / 2; if ((max - min) < CLIP_PRECISION) @@ -403,14 +402,14 @@ public class Transition extends SymmetricComponent { } } } - - + + @Override public double getInnerRadius(double x) { return Math.max(getRadius(x) - thickness, 0); } - - + + @Override public Collection<Coordinate> getComponentBounds() { @@ -421,7 +420,7 @@ public class Transition extends SymmetricComponent { addBound(bounds, getLength() + aftShoulderLength, aftShoulderRadius); return bounds; } - + @Override public double getComponentMass() { double mass = super.getComponentMass(); @@ -434,7 +433,7 @@ public class Transition extends SymmetricComponent { final double ir = Math.max(getForeShoulderRadius() - getForeShoulderThickness(), 0); mass += ringMass(ir, 0, getForeShoulderThickness(), getMaterial().getDensity()); } - + if (getAftShoulderLength() > 0.001) { final double or = getAftShoulderRadius(); final double ir = Math.max(getAftShoulderRadius() - getAftShoulderThickness(), 0); @@ -444,10 +443,10 @@ public class Transition extends SymmetricComponent { final double ir = Math.max(getAftShoulderRadius() - getAftShoulderThickness(), 0); mass += ringMass(ir, 0, getAftShoulderThickness(), getMaterial().getDensity()); } - + return mass; } - + @Override public Coordinate getComponentCG() { Coordinate cg = super.getComponentCG(); @@ -462,7 +461,7 @@ public class Transition extends SymmetricComponent { getForeShoulderThickness() - getForeShoulderLength(), getMaterial().getDensity())); } - + if (getAftShoulderLength() > 0.001) { final double ir = Math.max(getAftShoulderRadius() - getAftShoulderThickness(), 0); cg = cg.average(ringCG(getAftShoulderRadius(), ir, getLength(), @@ -476,8 +475,8 @@ public class Transition extends SymmetricComponent { } return cg; } - - + + /* * The moments of inertia are not explicitly corrected for the shoulders. * However, since the mass is corrected, the inertia is automatically corrected @@ -491,30 +490,31 @@ public class Transition extends SymmetricComponent { */ @Override public String getComponentName() { - return "Transition"; + //// Transition + return trans.get("Transition.Transition"); } - + @Override protected void componentChanged(ComponentChangeEvent e) { super.componentChanged(e); clipLength = -1; } - + /** * Check whether the given type can be added to this component. Transitions allow any * InternalComponents to be added. * - * @param type The RocketComponent class type to add. + * @param ctype The RocketComponent class type to add. * @return Whether such a component can be added. */ @Override - public boolean isCompatible(Class<? extends RocketComponent> type) { - if (InternalComponent.class.isAssignableFrom(type)) + public boolean isCompatible(Class<? extends RocketComponent> ctype) { + if (InternalComponent.class.isAssignableFrom(ctype)) return true; return false; } - - + + /** * An enumeration listing the possible shapes of transitions. @@ -522,13 +522,16 @@ public class Transition extends SymmetricComponent { * @author Sampo Niskanen <sampo.niskanen@iki.fi> */ public static enum Shape { - + /** * Conical shape. */ - CONICAL("Conical", - "A conical nose cone has a profile of a triangle.", - "A conical transition has straight sides.") { + //// Conical + CONICAL(trans.get("Shape.Conical"), + //// A conical nose cone has a profile of a triangle. + trans.get("Shape.Conical.desc1"), + //// A conical transition has straight sides. + trans.get("Shape.Conical.desc2")) { @Override public double getRadius(double x, double radius, double length, double param) { assert x >= 0; @@ -537,31 +540,28 @@ public class Transition extends SymmetricComponent { return radius * x / length; } }, - + /** * Ogive shape. The shape parameter is the portion of an extended tangent ogive * that will be used. That is, for param==1 a tangent ogive will be produced, and * for smaller values the shape straightens out into a cone at param==0. */ - OGIVE("Ogive", - "An ogive nose cone has a profile that is a segment of a circle. " + - "The shape parameter value 1 produces a <b>tangent ogive</b>, which has " + - "a smooth transition to the body tube, values less than 1 produce " + - "<b>secant ogives</b>.", - "An ogive transition has a profile that is a segment of a circle. " + - "The shape parameter value 1 produces a <b>tangent ogive</b>, which has " + - "a smooth transition to the body tube at the aft end, values less than 1 " + - "produce <b>secant ogives</b>.") { + //// Ogive + OGIVE(trans.get("Shape.Ogive"), + //// An ogive nose cone has a profile that is a segment of a circle. The shape parameter value 1 produces a <b>tangent ogive</b>, which has a smooth transition to the body tube, values less than 1 produce <b>secant ogives</b>. + trans.get("Shape.Ogive.desc1"), + //// An ogive transition has a profile that is a segment of a circle. The shape parameter value 1 produces a <b>tangent ogive</b>, which has a smooth transition to the body tube at the aft end, values less than 1 produce <b>secant ogives</b>. + trans.get("Shape.Ogive.desc2")) { @Override public boolean usesParameter() { return true; // Range 0...1 is default } - + @Override public double defaultParameter() { return 1.0; // Tangent ogive by default } - + @Override public double getRadius(double x, double radius, double length, double param) { assert x >= 0; @@ -569,17 +569,17 @@ public class Transition extends SymmetricComponent { assert radius >= 0; assert param >= 0; assert param <= 1; - + // Impossible to calculate ogive for length < radius, scale instead // TODO: LOW: secant ogive could be calculated lower if (length < radius) { x = x * radius / length; length = radius; } - + if (param < 0.001) return CONICAL.getRadius(x, radius, length, param); - + // Radius of circle is: double R = sqrt((pow2(length) + pow2(radius)) * (pow2((2 - param) * length) + pow2(param * radius)) / (4 * pow2(param * radius))); @@ -589,17 +589,16 @@ public class Transition extends SymmetricComponent { return sqrt(R * R - (L - x) * (L - x)) - y0; } }, - + /** * Ellipsoidal shape. */ - ELLIPSOID("Ellipsoid", - "An ellipsoidal nose cone has a profile of a half-ellipse " + - "with major axes of lengths 2×<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; @@ -609,30 +608,21 @@ public class Transition extends SymmetricComponent { return sqrt(2 * radius * x - x * x); // radius/length * sphere } }, - - POWER("Power series", - "A power series nose cone has a profile of " + - "<i>Radius</i> × (<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; @@ -648,34 +638,29 @@ public class Transition extends SymmetricComponent { } return radius * Math.pow(x / length, param); } - + }, - - PARABOLIC("Parabolic series", - "A parabolic series nose cone has a profile of a parabola. The shape " + - "parameter defines the segment of the parabola to utilize. The shape " + - "parameter 1.0 produces a <b>full parabola</b> which is tangent to the body " + - "tube, 0.75 produces a <b>3/4 parabola</b>, 0.5 procudes a " + - "<b>1/2 parabola</b> and 0 produces a <b>conical</b> nose cone.", - "A parabolic series transition has a profile of a parabola. The shape " + - "parameter defines the segment of the parabola to utilize. The shape " + - "parameter 1.0 produces a <b>full parabola</b> which is tangent to the body " + - "tube at the aft end, 0.75 produces a <b>3/4 parabola</b>, 0.5 procudes a " + - "<b>1/2 parabola</b> and 0 produces a <b>conical</b> transition.") { - + + //// Parabolic series + PARABOLIC(trans.get("Shape.Parabolicseries"), + ////A parabolic series nose cone has a profile of a parabola. The shape parameter defines the segment of the parabola to utilize. The shape parameter 1.0 produces a <b>full parabola</b> which is tangent to the body tube, 0.75 produces a <b>3/4 parabola</b>, 0.5 procudes a <b>1/2 parabola</b> and 0 produces a <b>conical</b> nose cone. + trans.get("Shape.Parabolicseries.desc1"), + ////A parabolic series transition has a profile of a parabola. The shape parameter defines the segment of the parabola to utilize. The shape parameter 1.0 produces a <b>full parabola</b> which is tangent to the body tube at the aft end, 0.75 produces a <b>3/4 parabola</b>, 0.5 procudes a <b>1/2 parabola</b> and 0 produces a <b>conical</b> transition. + trans.get("Shape.Parabolicseries.desc2")) { + // In principle a parabolic transition is clippable, but the difference is // negligible. - + @Override public boolean usesParameter() { // Range 0...1 return true; } - + @Override public double defaultParameter() { return 1.0; } - + @Override public double getRadius(double x, double radius, double length, double param) { assert x >= 0; @@ -683,33 +668,28 @@ public class Transition extends SymmetricComponent { assert radius >= 0; assert param >= 0; assert param <= 1; - + return radius * ((2 * x / length - param * pow2(x / length)) / (2 - param)); } }, - - - - HAACK("Haack series", - "The Haack series nose cones are designed to minimize drag. The shape parameter " + - "0 produces an <b>LD-Haack</b> or <b>Von Karman</b> nose cone, which minimizes " + - "drag for fixed length and diameter, while a value of 0.333 produces an " + - "<b>LV-Haack</b> nose cone, which minimizes drag for fixed length and volume.", - "The Haack series <i>nose cones</i> are designed to minimize drag. " + - "These transition shapes are their equivalents, but do not necessarily produce " + - "optimal drag for transitions. " + - "The shape parameter 0 produces an <b>LD-Haack</b> or <b>Von Karman</b> shape, " + - "while a value of 0.333 produces an <b>LV-Haack</b> shape.", true) { + + //// Haack series + HAACK(trans.get("Shape.Haackseries"), + //// The Haack series nose cones are designed to minimize drag. The shape parameter 0 produces an <b>LD-Haack</b> or <b>Von Karman</b> nose cone, which minimizes drag for fixed length and diameter, while a value of 0.333 produces an <b>LV-Haack</b> nose cone, which minimizes drag for fixed length and volume. + trans.get("Shape.Haackseries.desc1"), + //// The Haack series <i>nose cones</i> are designed to minimize drag. These transition shapes are their equivalents, but do not necessarily produce optimal drag for transitions. The shape parameter 0 produces an <b>LD-Haack</b> or <b>Von Karman</b> shape, while a value of 0.333 produces an <b>LV-Haack</b> shape. + trans.get("Shape.Haackseries.desc2"), true) { + @Override public boolean usesParameter() { return true; } - + @Override public double maxParameter() { return 1.0 / 3.0; // Range 0...1/3 } - + @Override public double getRadius(double x, double radius, double length, double param) { assert x >= 0; @@ -717,7 +697,7 @@ public class Transition extends SymmetricComponent { assert radius >= 0; assert param >= 0; assert param <= 2; - + double theta = Math.acos(1 - 2 * x / length); if (param == 0) { return radius * sqrt((theta - sin(2 * theta) / 2) / Math.PI); @@ -725,7 +705,7 @@ public class Transition extends SymmetricComponent { return radius * sqrt((theta - sin(2 * theta) / 2 + param * pow3(sin(theta))) / Math.PI); } }, - + // POLYNOMIAL("Smooth polynomial", // "A polynomial is fitted such that the nose cone profile is horizontal "+ // "at the aft end of the transition. The angle at the tip is defined by "+ @@ -757,18 +737,18 @@ public class Transition extends SymmetricComponent { // } // } ; - + // Privete fields of the shapes private final String name; private final String transitionDesc; private final String noseconeDesc; private final boolean canClip; - + // Non-clippable constructor Shape(String name, String noseconeDesc, String transitionDesc) { this(name, noseconeDesc, transitionDesc, false); } - + // Clippable constructor Shape(String name, String noseconeDesc, String transitionDesc, boolean canClip) { this.name = name; @@ -776,29 +756,29 @@ public class Transition extends SymmetricComponent { this.noseconeDesc = noseconeDesc; this.transitionDesc = transitionDesc; } - - + + /** * Return the name of the transition shape name. */ public String getName() { return name; } - + /** * Get a description of the Transition shape. */ public String getTransitionDescription() { return transitionDesc; } - + /** * Get a description of the NoseCone shape. */ public String getNoseConeDescription() { return noseconeDesc; } - + /** * Check whether the shape differs in clipped mode. The clipping should be * enabled by default if possible. @@ -806,35 +786,35 @@ public class Transition extends SymmetricComponent { public boolean isClippable() { return canClip; } - + /** * Return whether the shape uses the shape parameter. (Default false.) */ public boolean usesParameter() { return false; } - + /** * Return the minimum value of the shape parameter. (Default 0.) */ public double minParameter() { return 0.0; } - + /** * Return the maximum value of the shape parameter. (Default 1.) */ public double maxParameter() { return 1.0; } - + /** * Return the default value of the shape parameter. (Default 0.) */ public double defaultParameter() { return 0.0; } - + /** * Calculate the basic radius of a transition with the given radius, length and * shape parameter at the point x from the tip of the component. It is assumed @@ -848,8 +828,8 @@ public class Transition extends SymmetricComponent { * @return The basic radius at the given position. */ public abstract double getRadius(double x, double radius, double length, double param); - - + + /** * Returns the name of the shape (same as getName()). */ diff --git a/src/net/sf/openrocket/rocketcomponent/TrapezoidFinSet.java b/src/net/sf/openrocket/rocketcomponent/TrapezoidFinSet.java index 9c3076a3..288726b1 100644 --- a/src/net/sf/openrocket/rocketcomponent/TrapezoidFinSet.java +++ b/src/net/sf/openrocket/rocketcomponent/TrapezoidFinSet.java @@ -1,5 +1,7 @@ package net.sf.openrocket.rocketcomponent; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.Coordinate; /** @@ -10,6 +12,8 @@ import net.sf.openrocket.util.Coordinate; */ public class TrapezoidFinSet extends FinSet { + private static final Translator trans = Application.getTranslator(); + public static final double MAX_SWEEP_ANGLE=(89*Math.PI/180.0); /* @@ -163,7 +167,8 @@ public class TrapezoidFinSet extends FinSet { @Override public String getComponentName() { - return "Trapezoidal fin set"; + //// Trapezoidal fin set + return trans.get("TrapezoidFinSet.TrapezoidFinSet"); } } diff --git a/src/net/sf/openrocket/rocketcomponent/TubeCoupler.java b/src/net/sf/openrocket/rocketcomponent/TubeCoupler.java index 540535e1..5e22ec0c 100644 --- a/src/net/sf/openrocket/rocketcomponent/TubeCoupler.java +++ b/src/net/sf/openrocket/rocketcomponent/TubeCoupler.java @@ -1,8 +1,12 @@ package net.sf.openrocket.rocketcomponent; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.startup.Application; + public class TubeCoupler extends ThicknessRingComponent implements RadialParent { - + private static final Translator trans = Application.getTranslator(); + public TubeCoupler() { setOuterRadiusAutomatic(true); setThickness(0.002); @@ -19,7 +23,8 @@ public class TubeCoupler extends ThicknessRingComponent implements RadialParent @Override public String getComponentName() { - return "Tube coupler"; + //// Tube coupler + return trans.get("TubeCoupler.TubeCoupler"); } @Override diff --git a/src/net/sf/openrocket/simulation/FlightDataType.java b/src/net/sf/openrocket/simulation/FlightDataType.java index a089d4c1..eea84dde 100644 --- a/src/net/sf/openrocket/simulation/FlightDataType.java +++ b/src/net/sf/openrocket/simulation/FlightDataType.java @@ -3,6 +3,8 @@ package net.sf.openrocket.simulation; import java.util.HashMap; import java.util.Map; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; /** @@ -19,7 +21,8 @@ import net.sf.openrocket.unit.UnitGroup; * @author Sampo Niskanen <sampo.niskanen@iki.fi> */ public class FlightDataType implements Comparable<FlightDataType> { - + private static final Translator trans = Application.getTranslator(); + /** Priority of custom-created variables */ private static final int DEFAULT_PRIORITY = 999; @@ -29,98 +32,145 @@ public class FlightDataType implements Comparable<FlightDataType> { //// Time - public static final FlightDataType TYPE_TIME = newType("Time", UnitGroup.UNITS_FLIGHT_TIME, 1); + public static final FlightDataType TYPE_TIME = newType(trans.get("FlightDataType.TYPE_TIME"), UnitGroup.UNITS_FLIGHT_TIME, 1); //// Vertical position and motion - public static final FlightDataType TYPE_ALTITUDE = newType("Altitude", UnitGroup.UNITS_DISTANCE, 10); - public static final FlightDataType TYPE_VELOCITY_Z = newType("Vertical velocity", UnitGroup.UNITS_VELOCITY, 11); - public static final FlightDataType TYPE_ACCELERATION_Z = newType("Vertical acceleration", UnitGroup.UNITS_ACCELERATION, 12); + //// Altitude + public static final FlightDataType TYPE_ALTITUDE = newType(trans.get("FlightDataType.TYPE_ALTITUDE"), UnitGroup.UNITS_DISTANCE, 10); + //// Vertical velocity + public static final FlightDataType TYPE_VELOCITY_Z = newType(trans.get("FlightDataType.TYPE_VELOCITY_Z"), UnitGroup.UNITS_VELOCITY, 11); + //// Vertical acceleration + public static final FlightDataType TYPE_ACCELERATION_Z = newType(trans.get("FlightDataType.TYPE_ACCELERATION_Z"), UnitGroup.UNITS_ACCELERATION, 12); //// Total motion - public static final FlightDataType TYPE_VELOCITY_TOTAL = newType("Total velocity", UnitGroup.UNITS_VELOCITY, 20); - public static final FlightDataType TYPE_ACCELERATION_TOTAL = newType("Total acceleration", UnitGroup.UNITS_ACCELERATION, 21); + //// Total velocity + public static final FlightDataType TYPE_VELOCITY_TOTAL = newType(trans.get("FlightDataType.TYPE_VELOCITY_TOTAL"), UnitGroup.UNITS_VELOCITY, 20); + //// Total acceleration + public static final FlightDataType TYPE_ACCELERATION_TOTAL = newType(trans.get("FlightDataType.TYPE_ACCELERATION_TOTAL"), UnitGroup.UNITS_ACCELERATION, 21); //// Lateral position and motion - - public static final FlightDataType TYPE_POSITION_X = newType("Position upwind", UnitGroup.UNITS_DISTANCE, 30); - public static final FlightDataType TYPE_POSITION_Y = newType("Position parallel to wind", UnitGroup.UNITS_DISTANCE, 31); - public static final FlightDataType TYPE_POSITION_XY = newType("Lateral distance", UnitGroup.UNITS_DISTANCE, 32); - public static final FlightDataType TYPE_POSITION_DIRECTION = newType("Lateral direction", UnitGroup.UNITS_ANGLE, 33); - - public static final FlightDataType TYPE_VELOCITY_XY = newType("Lateral velocity", UnitGroup.UNITS_VELOCITY, 34); - public static final FlightDataType TYPE_ACCELERATION_XY = newType("Lateral acceleration", UnitGroup.UNITS_ACCELERATION, 35); + //// Position upwind + public static final FlightDataType TYPE_POSITION_X = newType(trans.get("FlightDataType.TYPE_POSITION_X"), UnitGroup.UNITS_DISTANCE, 30); + //// Position parallel to wind + public static final FlightDataType TYPE_POSITION_Y = newType(trans.get("FlightDataType.TYPE_POSITION_Y"), UnitGroup.UNITS_DISTANCE, 31); + //// Lateral distance + public static final FlightDataType TYPE_POSITION_XY = newType(trans.get("FlightDataType.TYPE_POSITION_XY"), UnitGroup.UNITS_DISTANCE, 32); + //// Lateral direction + public static final FlightDataType TYPE_POSITION_DIRECTION = newType(trans.get("FlightDataType.TYPE_POSITION_DIRECTION"), UnitGroup.UNITS_ANGLE, 33); + //// Lateral velocity + public static final FlightDataType TYPE_VELOCITY_XY = newType(trans.get("FlightDataType.TYPE_VELOCITY_XY"), UnitGroup.UNITS_VELOCITY, 34); + //// Lateral acceleration + public static final FlightDataType TYPE_ACCELERATION_XY = newType(trans.get("FlightDataType.TYPE_ACCELERATION_XY"), UnitGroup.UNITS_ACCELERATION, 35); //// Angular motion - public static final FlightDataType TYPE_AOA = newType("Angle of attack", UnitGroup.UNITS_ANGLE, 40); - public static final FlightDataType TYPE_ROLL_RATE = newType("Roll rate", UnitGroup.UNITS_ROLL, 41); - public static final FlightDataType TYPE_PITCH_RATE = newType("Pitch rate", UnitGroup.UNITS_ROLL, 42); - public static final FlightDataType TYPE_YAW_RATE = newType("Yaw rate", UnitGroup.UNITS_ROLL, 43); + //// Angle of attack + public static final FlightDataType TYPE_AOA = newType(trans.get("FlightDataType.TYPE_AOA"), UnitGroup.UNITS_ANGLE, 40); + //// Roll rate + public static final FlightDataType TYPE_ROLL_RATE = newType(trans.get("FlightDataType.TYPE_ROLL_RATE"), UnitGroup.UNITS_ROLL, 41); + //// Pitch rate + public static final FlightDataType TYPE_PITCH_RATE = newType(trans.get("FlightDataType.TYPE_PITCH_RATE"), UnitGroup.UNITS_ROLL, 42); + //// Yaw rate + public static final FlightDataType TYPE_YAW_RATE = newType(trans.get("FlightDataType.TYPE_YAW_RATE"), UnitGroup.UNITS_ROLL, 43); //// Stability information - public static final FlightDataType TYPE_MASS = newType("Mass", UnitGroup.UNITS_MASS, 50); - public static final FlightDataType TYPE_LONGITUDINAL_INERTIA = newType("Longitudinal moment of inertia", UnitGroup.UNITS_INERTIA, 51); - public static final FlightDataType TYPE_ROTATIONAL_INERTIA = newType("Rotational moment of inertia", UnitGroup.UNITS_INERTIA, 52); - public static final FlightDataType TYPE_CP_LOCATION = newType("CP location", UnitGroup.UNITS_LENGTH, 53); - public static final FlightDataType TYPE_CG_LOCATION = newType("CG location", UnitGroup.UNITS_LENGTH, 54); - public static final FlightDataType TYPE_STABILITY = newType("Stability margin calibers", UnitGroup.UNITS_COEFFICIENT, 55); + //// Mass + public static final FlightDataType TYPE_MASS = newType(trans.get("FlightDataType.TYPE_MASS"), UnitGroup.UNITS_MASS, 50); + //// Longitudinal moment of inertia + public static final FlightDataType TYPE_LONGITUDINAL_INERTIA = newType(trans.get("FlightDataType.TYPE_LONGITUDINAL_INERTIA"), UnitGroup.UNITS_INERTIA, 51); + //// Rotational moment of inertia + public static final FlightDataType TYPE_ROTATIONAL_INERTIA = newType(trans.get("FlightDataType.TYPE_ROTATIONAL_INERTIA"), UnitGroup.UNITS_INERTIA, 52); + //// CP location + public static final FlightDataType TYPE_CP_LOCATION = newType(trans.get("FlightDataType.TYPE_CP_LOCATION"), UnitGroup.UNITS_LENGTH, 53); + //// CG location + public static final FlightDataType TYPE_CG_LOCATION = newType(trans.get("FlightDataType.TYPE_CG_LOCATION"), UnitGroup.UNITS_LENGTH, 54); + //// Stability margin calibers + public static final FlightDataType TYPE_STABILITY = newType(trans.get("FlightDataType.TYPE_STABILITY"), UnitGroup.UNITS_COEFFICIENT, 55); //// Characteristic numbers - public static final FlightDataType TYPE_MACH_NUMBER = newType("Mach number", UnitGroup.UNITS_COEFFICIENT, 60); - public static final FlightDataType TYPE_REYNOLDS_NUMBER = newType("Reynolds number", UnitGroup.UNITS_COEFFICIENT, 61); + //// Mach number + public static final FlightDataType TYPE_MACH_NUMBER = newType(trans.get("FlightDataType.TYPE_MACH_NUMBER"), UnitGroup.UNITS_COEFFICIENT, 60); + //// Reynolds number + public static final FlightDataType TYPE_REYNOLDS_NUMBER = newType(trans.get("FlightDataType.TYPE_REYNOLDS_NUMBER"), UnitGroup.UNITS_COEFFICIENT, 61); //// Thrust and drag - public static final FlightDataType TYPE_THRUST_FORCE = newType("Thrust", UnitGroup.UNITS_FORCE, 70); - public static final FlightDataType TYPE_DRAG_FORCE = newType("Drag force", UnitGroup.UNITS_FORCE, 71); - public static final FlightDataType TYPE_DRAG_COEFF = newType("Drag coefficient", UnitGroup.UNITS_COEFFICIENT, 72); - public static final FlightDataType TYPE_AXIAL_DRAG_COEFF = newType("Axial drag coefficient", UnitGroup.UNITS_COEFFICIENT, 73); + //// Thrust + public static final FlightDataType TYPE_THRUST_FORCE = newType(trans.get("FlightDataType.TYPE_THRUST_FORCE"), UnitGroup.UNITS_FORCE, 70); + //// Drag force + public static final FlightDataType TYPE_DRAG_FORCE = newType(trans.get("FlightDataType.TYPE_DRAG_FORCE"), UnitGroup.UNITS_FORCE, 71); + //// Drag coefficient + public static final FlightDataType TYPE_DRAG_COEFF = newType(trans.get("FlightDataType.TYPE_DRAG_COEFF"), UnitGroup.UNITS_COEFFICIENT, 72); + //// Axial drag coefficient + public static final FlightDataType TYPE_AXIAL_DRAG_COEFF = newType(trans.get("FlightDataType.TYPE_AXIAL_DRAG_COEFF"), UnitGroup.UNITS_COEFFICIENT, 73); //// Component drag coefficients - public static final FlightDataType TYPE_FRICTION_DRAG_COEFF = newType("Friction drag coefficient", UnitGroup.UNITS_COEFFICIENT, 80); - public static final FlightDataType TYPE_PRESSURE_DRAG_COEFF = newType("Pressure drag coefficient", UnitGroup.UNITS_COEFFICIENT, 81); - public static final FlightDataType TYPE_BASE_DRAG_COEFF = newType("Base drag coefficient", UnitGroup.UNITS_COEFFICIENT, 82); + //// Friction drag coefficient + public static final FlightDataType TYPE_FRICTION_DRAG_COEFF = newType(trans.get("FlightDataType.TYPE_FRICTION_DRAG_COEFF"), UnitGroup.UNITS_COEFFICIENT, 80); + //// Pressure drag coefficient + public static final FlightDataType TYPE_PRESSURE_DRAG_COEFF = newType(trans.get("FlightDataType.TYPE_PRESSURE_DRAG_COEFF"), UnitGroup.UNITS_COEFFICIENT, 81); + //// Base drag coefficient + public static final FlightDataType TYPE_BASE_DRAG_COEFF = newType(trans.get("FlightDataType.TYPE_BASE_DRAG_COEFF"), UnitGroup.UNITS_COEFFICIENT, 82); //// Other coefficients - public static final FlightDataType TYPE_NORMAL_FORCE_COEFF = newType("Normal force coefficient", UnitGroup.UNITS_COEFFICIENT, 90); - public static final FlightDataType TYPE_PITCH_MOMENT_COEFF = newType("Pitch moment coefficient", UnitGroup.UNITS_COEFFICIENT, 91); - public static final FlightDataType TYPE_YAW_MOMENT_COEFF = newType("Yaw moment coefficient", UnitGroup.UNITS_COEFFICIENT, 92); - public static final FlightDataType TYPE_SIDE_FORCE_COEFF = newType("Side force coefficient", UnitGroup.UNITS_COEFFICIENT, 93); - public static final FlightDataType TYPE_ROLL_MOMENT_COEFF = newType("Roll moment coefficient", UnitGroup.UNITS_COEFFICIENT, 94); - public static final FlightDataType TYPE_ROLL_FORCING_COEFF = newType("Roll forcing coefficient", UnitGroup.UNITS_COEFFICIENT, 95); - public static final FlightDataType TYPE_ROLL_DAMPING_COEFF = newType("Roll damping coefficient", UnitGroup.UNITS_COEFFICIENT, 96); - - public static final FlightDataType TYPE_PITCH_DAMPING_MOMENT_COEFF = newType("Pitch damping coefficient", UnitGroup.UNITS_COEFFICIENT, 97); - public static final FlightDataType TYPE_YAW_DAMPING_MOMENT_COEFF = newType("Yaw damping coefficient", UnitGroup.UNITS_COEFFICIENT, 98); + //// Normal force coefficient + public static final FlightDataType TYPE_NORMAL_FORCE_COEFF = newType(trans.get("FlightDataType.TYPE_NORMAL_FORCE_COEFF"), UnitGroup.UNITS_COEFFICIENT, 90); + //// Pitch moment coefficient + public static final FlightDataType TYPE_PITCH_MOMENT_COEFF = newType(trans.get("FlightDataType.TYPE_PITCH_MOMENT_COEFF"), UnitGroup.UNITS_COEFFICIENT, 91); + //// Yaw moment coefficient + public static final FlightDataType TYPE_YAW_MOMENT_COEFF = newType(trans.get("FlightDataType.TYPE_YAW_MOMENT_COEFF"), UnitGroup.UNITS_COEFFICIENT, 92); + //// Side force coefficient + public static final FlightDataType TYPE_SIDE_FORCE_COEFF = newType(trans.get("FlightDataType.TYPE_SIDE_FORCE_COEFF"), UnitGroup.UNITS_COEFFICIENT, 93); + //// Roll moment coefficient + public static final FlightDataType TYPE_ROLL_MOMENT_COEFF = newType(trans.get("FlightDataType.TYPE_ROLL_MOMENT_COEFF"), UnitGroup.UNITS_COEFFICIENT, 94); + //// Roll forcing coefficient + public static final FlightDataType TYPE_ROLL_FORCING_COEFF = newType(trans.get("FlightDataType.TYPE_ROLL_FORCING_COEFF"), UnitGroup.UNITS_COEFFICIENT, 95); + //// Roll damping coefficient + public static final FlightDataType TYPE_ROLL_DAMPING_COEFF = newType(trans.get("FlightDataType.TYPE_ROLL_DAMPING_COEFF"), UnitGroup.UNITS_COEFFICIENT, 96); + + //// Pitch damping coefficient + public static final FlightDataType TYPE_PITCH_DAMPING_MOMENT_COEFF = newType(trans.get("FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF"), UnitGroup.UNITS_COEFFICIENT, 97); + //// Yaw damping coefficient + public static final FlightDataType TYPE_YAW_DAMPING_MOMENT_COEFF = newType(trans.get("FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF"), UnitGroup.UNITS_COEFFICIENT, 98); //// Reference length + area - public static final FlightDataType TYPE_REFERENCE_LENGTH = newType("Reference length", UnitGroup.UNITS_LENGTH, 100); - public static final FlightDataType TYPE_REFERENCE_AREA = newType("Reference area", UnitGroup.UNITS_AREA, 101); + //// Reference length + public static final FlightDataType TYPE_REFERENCE_LENGTH = newType(trans.get("FlightDataType.TYPE_REFERENCE_LENGTH"), UnitGroup.UNITS_LENGTH, 100); + //// Reference area + public static final FlightDataType TYPE_REFERENCE_AREA = newType(trans.get("FlightDataType.TYPE_REFERENCE_AREA"), UnitGroup.UNITS_AREA, 101); //// Orientation - public static final FlightDataType TYPE_ORIENTATION_THETA = newType("Vertical orientation (zenith)", UnitGroup.UNITS_ANGLE, 106); - public static final FlightDataType TYPE_ORIENTATION_PHI = newType("Lateral orientation (azimuth)", UnitGroup.UNITS_ANGLE, 107); + //// Vertical orientation (zenith) + public static final FlightDataType TYPE_ORIENTATION_THETA = newType(trans.get("FlightDataType.TYPE_ORIENTATION_THETA"), UnitGroup.UNITS_ANGLE, 106); + //// Lateral orientation (azimuth) + public static final FlightDataType TYPE_ORIENTATION_PHI = newType(trans.get("FlightDataType.TYPE_ORIENTATION_PHI"), UnitGroup.UNITS_ANGLE, 107); //// Atmospheric conditions - public static final FlightDataType TYPE_WIND_VELOCITY = newType("Wind velocity", UnitGroup.UNITS_VELOCITY, 110); - public static final FlightDataType TYPE_AIR_TEMPERATURE = newType("Air temperature", UnitGroup.UNITS_TEMPERATURE, 111); - public static final FlightDataType TYPE_AIR_PRESSURE = newType("Air pressure", UnitGroup.UNITS_PRESSURE, 112); - public static final FlightDataType TYPE_SPEED_OF_SOUND = newType("Speed of sound", UnitGroup.UNITS_VELOCITY, 113); + //// Wind velocity + public static final FlightDataType TYPE_WIND_VELOCITY = newType(trans.get("FlightDataType.TYPE_WIND_VELOCITY"), UnitGroup.UNITS_VELOCITY, 110); + //// Air temperature + public static final FlightDataType TYPE_AIR_TEMPERATURE = newType(trans.get("FlightDataType.TYPE_AIR_TEMPERATURE"), UnitGroup.UNITS_TEMPERATURE, 111); + //// Air pressure + public static final FlightDataType TYPE_AIR_PRESSURE = newType(trans.get("FlightDataType.TYPE_AIR_PRESSURE"), UnitGroup.UNITS_PRESSURE, 112); + //// Speed of sound + public static final FlightDataType TYPE_SPEED_OF_SOUND = newType(trans.get("FlightDataType.TYPE_SPEED_OF_SOUND"), UnitGroup.UNITS_VELOCITY, 113); //// Simulation information - public static final FlightDataType TYPE_TIME_STEP = newType("Simulation time step", UnitGroup.UNITS_TIME_STEP, 200); - public static final FlightDataType TYPE_COMPUTATION_TIME = newType("Computation time", UnitGroup.UNITS_SHORT_TIME, 201); + //// Simulation time step + public static final FlightDataType TYPE_TIME_STEP = newType(trans.get("FlightDataType.TYPE_TIME_STEP"), UnitGroup.UNITS_TIME_STEP, 200); + //// Computation time + public static final FlightDataType TYPE_COMPUTATION_TIME = newType(trans.get("FlightDataType.TYPE_COMPUTATION_TIME"), UnitGroup.UNITS_SHORT_TIME, 201); diff --git a/src/net/sf/openrocket/simulation/FlightEvent.java b/src/net/sf/openrocket/simulation/FlightEvent.java index 843f6c88..ead84eec 100644 --- a/src/net/sf/openrocket/simulation/FlightEvent.java +++ b/src/net/sf/openrocket/simulation/FlightEvent.java @@ -1,6 +1,8 @@ package net.sf.openrocket.simulation; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.startup.Application; /** @@ -9,7 +11,8 @@ import net.sf.openrocket.rocketcomponent.RocketComponent; * @author Sampo Niskanen <sampo.niskanen@iki.fi> */ public class FlightEvent implements Comparable<FlightEvent> { - + private static final Translator trans = Application.getTranslator(); + /** * The type of the flight event. * @@ -19,57 +22,69 @@ public class FlightEvent implements Comparable<FlightEvent> { /** * Rocket launch. */ - LAUNCH("Launch"), + //// Launch + LAUNCH(trans.get("FlightEvent.Type.LAUNCH")), /** * Ignition of a motor. Source is the motor mount the motor of which has ignited, * and the data is the MotorId of the motor instance. */ - IGNITION("Motor ignition"), + //// Motor ignition + IGNITION(trans.get("FlightEvent.Type.IGNITION")), /** * When the motor has lifted off the ground. */ - LIFTOFF("Lift-off"), + //// Lift-off + LIFTOFF(trans.get("FlightEvent.Type.LIFTOFF")), /** * Launch rod has been cleared. */ - LAUNCHROD("Launch rod clearance"), + //// Launch rod clearance + LAUNCHROD(trans.get("FlightEvent.Type.LAUNCHROD")), /** * Burnout of a motor. Source is the motor mount the motor of which has burnt out, * and the data is the MotorId of the motor instance. */ - BURNOUT("Motor burnout"), + //// Motor burnout + BURNOUT(trans.get("FlightEvent.Type.BURNOUT")), /** * Ejection charge of a motor fired. Source is the motor mount the motor of * which has exploded its ejection charge, and data is the MotorId of the motor instance. */ - EJECTION_CHARGE("Ejection charge"), + //// Ejection charge + EJECTION_CHARGE(trans.get("FlightEvent.Type.EJECTION_CHARGE")), /** * Separation of a stage. Source is the stage which has separated all lower stages. */ - STAGE_SEPARATION("Stage separation"), + //// Stage separation + STAGE_SEPARATION(trans.get("FlightEvent.Type.STAGE_SEPARATION")), /** * Apogee has been reached. */ - APOGEE("Apogee"), + //// Apogee + APOGEE(trans.get("FlightEvent.Type.APOGEE")), /** * Opening of a recovery device. Source is the RecoveryComponent which has opened. */ - RECOVERY_DEVICE_DEPLOYMENT("Recovery device deployment"), + //// Recovery device deployment + RECOVERY_DEVICE_DEPLOYMENT(trans.get("FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT")), /** * Ground has been hit after flight. */ - GROUND_HIT("Ground hit"), + //// Ground hit + GROUND_HIT(trans.get("FlightEvent.Type.GROUND_HIT")), /** * End of simulation. Placing this to the queue will end the simulation. */ - SIMULATION_END("Simulation end"), + //// Simulation end + SIMULATION_END(trans.get("FlightEvent.Type.SIMULATION_END")), /** * A change in altitude has occurred. Data is a <code>Pair<Double,Double></code> * which contains the old and new altitudes. */ - ALTITUDE("Altitude change"); + //// Altitude change + ALTITUDE(trans.get("FlightEvent.Type.ALTITUDE")); private final String name; diff --git a/src/net/sf/openrocket/startup/Application.java b/src/net/sf/openrocket/startup/Application.java index 78d2941a..bb8b20f7 100644 --- a/src/net/sf/openrocket/startup/Application.java +++ b/src/net/sf/openrocket/startup/Application.java @@ -20,7 +20,7 @@ public final class Application { private static LogHelper logger; private static LogLevelBufferLogger logBuffer; - private static Translator baseTranslator = new DebugTranslator(); + private static Translator baseTranslator = new DebugTranslator(null); private static ThrustCurveMotorSetDatabase motorSetDatabase; diff --git a/src/net/sf/openrocket/startup/Startup.java b/src/net/sf/openrocket/startup/Startup.java index f1c4aa4d..f4141f9b 100644 --- a/src/net/sf/openrocket/startup/Startup.java +++ b/src/net/sf/openrocket/startup/Startup.java @@ -139,10 +139,9 @@ public class Startup { } Translator t; + t = new ResourceBundleTranslator("l10n.messages"); if (Locale.getDefault().getLanguage().equals("xx")) { - t = new DebugTranslator(); - } else { - t = new ResourceBundleTranslator("l10n.messages"); + t = new DebugTranslator(t); } log.info("Set up translation for locale " + Locale.getDefault() + diff --git a/src/net/sf/openrocket/util/LineStyle.java b/src/net/sf/openrocket/util/LineStyle.java index efc946ba..edd562b3 100644 --- a/src/net/sf/openrocket/util/LineStyle.java +++ b/src/net/sf/openrocket/util/LineStyle.java @@ -2,22 +2,33 @@ package net.sf.openrocket.util; import java.util.Arrays; +import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.startup.Application; + /** * An enumeration of line styles. The line styles are defined by an array of * floats suitable for <code>BasicStroke</code>. * * @author Sampo Niskanen <sampo.niskanen@iki.fi> */ + public enum LineStyle { - SOLID("Solid",new float[] { 10f, 0f }), - DASHED("Dashed",new float[] { 6f, 4f }), - DOTTED("Dotted",new float[] { 2f, 3f }), - DASHDOT("Dash-dotted",new float[] { 8f, 3f, 2f, 3f}) + + //// Solid + SOLID("LineStyle.Solid",new float[] { 10f, 0f }), + //// Dashed + DASHED("LineStyle.Dashed",new float[] { 6f, 4f }), + //// Dotted + DOTTED("LineStyle.Dotted",new float[] { 2f, 3f }), + //// Dash-dotted + DASHDOT("LineStyle.Dash-dotted",new float[] { 8f, 3f, 2f, 3f}) ; private final String name; private final float[] dashes; + LineStyle(String name, float[] dashes) { + this.name = name; this.dashes = dashes; } @@ -26,6 +37,7 @@ public enum LineStyle { } @Override public String toString() { - return name; + final Translator trans = Application.getTranslator(); + return trans.get(name); } } \ No newline at end of file diff --git a/src/net/sf/openrocket/util/Prefs.java b/src/net/sf/openrocket/util/Prefs.java index 9cd9e7ab..047db50c 100644 --- a/src/net/sf/openrocket/util/Prefs.java +++ b/src/net/sf/openrocket/util/Prefs.java @@ -23,6 +23,7 @@ import net.sf.openrocket.database.Databases; import net.sf.openrocket.document.Simulation; import net.sf.openrocket.gui.main.ExceptionHandler; import net.sf.openrocket.gui.print.PrintSettings; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.BodyComponent; @@ -199,13 +200,18 @@ public class Prefs { * Within a holder class so they will load only when needed. */ private static class DefaultMaterialHolder { + private static final Translator trans = Application.getTranslator(); + + //// Elastic cord (round 2mm, 1/16 in) private static final Material DEFAULT_LINE_MATERIAL = - Databases.findMaterial(Material.Type.LINE, "Elastic cord (round 2mm, 1/16 in)", + Databases.findMaterial(Material.Type.LINE, trans.get("Databases.materials.Elasticcordround2mm"), 0.0018, false); + //// Ripstop nylon private static final Material DEFAULT_SURFACE_MATERIAL = - Databases.findMaterial(Material.Type.SURFACE, "Ripstop nylon", 0.067, false); + Databases.findMaterial(Material.Type.SURFACE, trans.get("Databases.materials.Ripstopnylon"), 0.067, false); + //// Cardboard private static final Material DEFAULT_BULK_MATERIAL = - Databases.findMaterial(Material.Type.BULK, "Cardboard", 680, false); + Databases.findMaterial(Material.Type.BULK, trans.get("Databases.materials.Cardboard"), 680, false); } ////////////////////// diff --git a/src/net/sf/openrocket/utils/MotorPlot.java b/src/net/sf/openrocket/utils/MotorPlot.java index 1f3eb90c..96814695 100644 --- a/src/net/sf/openrocket/utils/MotorPlot.java +++ b/src/net/sf/openrocket/utils/MotorPlot.java @@ -20,8 +20,10 @@ import javax.swing.SwingUtilities; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.file.motor.GeneralMotorLoader; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.motor.Motor; import net.sf.openrocket.motor.ThrustCurveMotor; +import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.GUIUtil; import org.jfree.chart.ChartFactory; @@ -35,15 +37,18 @@ import org.jfree.data.xy.XYSeriesCollection; public class MotorPlot extends JDialog { private int selected = -1; + private static final Translator trans = Application.getTranslator(); public MotorPlot(List<String> filenames, List<ThrustCurveMotor> motors) { - super((JFrame) null, "Motor plot", true); + //// Motor plot + super((JFrame) null, trans.get("MotorPlot.title.Motorplot"), true); JTabbedPane tabs = new JTabbedPane(); for (int i = 0; i < filenames.size(); i++) { JPanel pane = createPlotPanel((ThrustCurveMotor) motors.get(i)); - JButton button = new JButton("Select"); + //// Select button + JButton button = new JButton(trans.get("MotorPlot.but.Select")); final int number = i; button.addActionListener(new ActionListener() { @Override @@ -80,9 +85,12 @@ public class MotorPlot extends JDialog { // Create the chart using the factory to get all default settings JFreeChart chart = ChartFactory.createXYLineChart( - "Motor thrust curve", - "Time / s", - "Thrust / N", + //// Motor thrust curve + trans.get("MotorPlot.Chart.Motorthrustcurve"), + //// Time / s + trans.get("MotorPlot.Chart.Time"), + //// Thrust / N + trans.get("MotorPlot.Chart.Thrust"), new XYSeriesCollection(series), PlotOrientation.VERTICAL, true, @@ -109,11 +117,16 @@ public class MotorPlot extends JDialog { JTextArea area = new JTextArea(5, 40); StringBuilder sb = new StringBuilder(); - sb.append("Designation: ").append(motor.getDesignation()).append(" "); - sb.append("Manufacturer: ").append(motor.getManufacturer()).append(" "); - sb.append("Type: ").append(motor.getMotorType()).append('\n'); - sb.append("Delays: ").append(Arrays.toString(motor.getStandardDelays())).append('\n'); - sb.append("Comment:\n").append(motor.getDescription()); + //// Designation: + sb.append("MotorPlot.txt.Designation" + " ").append(motor.getDesignation()).append(" "); + //// Manufacturer: + sb.append("MotorPlot.txt.Manufacturer" + " ").append(motor.getManufacturer()).append(" "); + //// Type: + sb.append("MotorPlot.txt.Type" + " ").append(motor.getMotorType()).append('\n'); + //// Delays: + sb.append("MotorPlot.txt.Delays" +" ").append(Arrays.toString(motor.getStandardDelays())).append('\n'); + //// Comment:\n + sb.append("MotorPlot.txt.Comment" + " ").append(motor.getDescription()); area.setText(sb.toString()); panel.add(area, "grow, wrap");