diff --git a/core/ReleaseNotes b/core/ReleaseNotes index bfcef6ec6..b56b907e8 100644 --- a/core/ReleaseNotes +++ b/core/ReleaseNotes @@ -1,3 +1,12 @@ +OpenRocket 13.11.2 (2014-01-01): +------------------------------ + +Bug Fixes: + * Numerous bug fixes and usability improvements in the new + flight configuration tab. + * Fix couple of layout issues + * Updated Spanish, French and Chinese translations + OpenRocket 13.11.1 (2013-11-15): ------------------------------ diff --git a/core/resources/build.properties b/core/resources/build.properties index 77081f0c4..3b14a4201 100644 --- a/core/resources/build.properties +++ b/core/resources/build.properties @@ -1,7 +1,7 @@ # The OpenRocket build version -build.version=13.11.1dev +build.version=13.11.2dev # The source of the package. When building a package for a specific diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index 0e7615bbc..e7ba5f01c 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -57,7 +57,7 @@ RocketPanel.lbl.ViewType = View Type: ! BasicFrame BasicFrame.tab.Rocketdesign = Rocket design -BasicFrame.tab.Flightconfig = Configurations +BasicFrame.tab.Flightconfig = Motors & Configuration BasicFrame.tab.Flightsim = Flight simulations BasicFrame.title.Addnewcomp = Add new component BasicFrame.dlg.lbl1 = Design ' @@ -454,6 +454,11 @@ SimuRunDlg.lbl.Velocity = Velocity: SimuRunDlg.msg.Unabletosim = Unable to simulate: SimuRunDlg.msg.errorOccurred = An error occurred during the simulation: +BasicEventSimulationEngine.error.noMotorsDefined = No motors defined in the simulation. +BasicEventSimulationEngine.error.earlyMotorBurnout = Motor burnout without liftoff. +BasicEventSimulationEngine.error.noIgnition = No motors ignited. +BasicEventSimulationEngine.error.NaNResult = Simulation resulted in not-a-number (NaN) value, please report a bug. + RK4SimulationStepper.error.valuesTooLarge = Simulation values exceeded limits. Try selecting a shorter time step. @@ -1866,6 +1871,7 @@ MotorConfigurationPanel.btn.removeMotor = Remove motor MotorConfigurationPanel.btn.selectMotor = Select motor MotorConfigurationPanel.btn.selectIgnition = Select ignition MotorConfigurationPanel.btn.resetIgnition = Reset ignition +MotorConfigurationPanel.lbl.nomotors = No motor mounts defined. Select one or more tubes from the list on the left as motor mounts. MotorConfigurationTableModel.table.ignition.default = Default ({0}) RecoveryConfigurationPanel.table.deployment.default = Default ({0}) diff --git a/core/resources/l10n/messages_es.properties b/core/resources/l10n/messages_es.properties index 9692c803e..ad529a4e0 100644 --- a/core/resources/l10n/messages_es.properties +++ b/core/resources/l10n/messages_es.properties @@ -18,12 +18,12 @@ ! - 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 = Traducido al espa\ufffdol por: +AboutDialog.lbl.translation = Traducido al espa\u00f1ol por: AboutDialog.lbl.translator = Tripoli Spain AboutDialog.lbl.translatorIcon = logoTripoliSpain.png AboutDialog.lbl.translatorWebsite = http://www.tripoli-spain.org/ ! About Dialog -AboutDialog.lbl.version = Versi\ufffdn +AboutDialog.lbl.version = Versi\u00f3n AppearanceCfg.but.edit = Editar AppearanceCfg.but.savedefault = Guardar como apariencia por defecto @@ -37,67 +37,67 @@ AppearanceCfg.lbl.color.diffuse = Color difuso: AppearanceCfg.lbl.color.specular = Color especular: AppearanceCfg.lbl.shine = Brillo: AppearanceCfg.lbl.texture.center = Centrado: -AppearanceCfg.lbl.texture.offset = Posici\ufffdn: +AppearanceCfg.lbl.texture.offset = Posici\u00f3n: AppearanceCfg.lbl.texture.repeat = Aspecto: -AppearanceCfg.lbl.texture.rotation = Rotaci\ufffdn: +AppearanceCfg.lbl.texture.rotation = Rotaci\u00f3n: AppearanceCfg.lbl.texture.scale = Escala: -BasicFrame.SimpleFileFilter1 = Todos los dise\ufffdos de cohete(*.ork; *.rkt) -BasicFrame.SimpleFileFilter2 = Dise\ufffdos OpenRocket (*.ork) -BasicFrame.SimpleFileFilter3 = Dise\ufffdos RockSim (*.rkt) +BasicFrame.SimpleFileFilter1 = Todos los dise\u00f1os de cohete(*.ork; *.rkt) +BasicFrame.SimpleFileFilter2 = Dise\u00f1os OpenRocket (*.ork) +BasicFrame.SimpleFileFilter3 = Dise\u00f1os RockSim (*.rkt) BasicFrame.SimpleFileFilter4 = Preajustes OpenRocket (*.orc) BasicFrame.StageName.Sustainer = Etapa principal BasicFrame.WarningDialog.title = Alertas al abrir el archivo -BasicFrame.WarningDialog.txt1 = Mientras se abr\ufffda el archivo, se encontraron los siguiente problemas -BasicFrame.WarningDialog.txt2 = Algunas configuraciones del dise\ufffdo no pudieron cargarse correctamente. -!BasicFrame.item.Openrocketdesign = Abrir un dise\ufffdo de cohete -!BasicFrame.item.Openexamplerocketdesign = Abrir un ejemplo de dise\ufffdo de cohete -!BasicFrame.item.SavecurRocketdesign = Guardar el dise\ufffdo actual -!BasicFrame.item.SavecurRocketdesnewfile = Guardar el dise\ufffdo actual como un nuevo documento +BasicFrame.WarningDialog.txt1 = Mientras se abr\u00eda el archivo, se encontraron los siguiente problemas +BasicFrame.WarningDialog.txt2 = Algunas configuraciones del dise\u00f1o no pudieron cargarse correctamente. +!BasicFrame.item.Openrocketdesign = Abrir un dise\u00f1o de cohete +!BasicFrame.item.Openexamplerocketdesign = Abrir un ejemplo de dise\u00f1o de cohete +!BasicFrame.item.SavecurRocketdesign = Guardar el dise\u00f1o actual +!BasicFrame.item.SavecurRocketdesnewfile = Guardar el dise\u00f1o actual como un nuevo documento !BasicFrame.item.Printpart = Imprimir un listado de componentes y un esquema de aleta -!BasicFrame.item.Closedesign = Cerrar el dise\ufffdo actual +!BasicFrame.item.Closedesign = Cerrar el dise\u00f1o actual !BasicFrame.item.Quitprogram = Abandonar el programa !BasicFrame.menu.Rocketedt = Mostrando el cohete -BasicFrame.dlg.lbl1 = El dise\ufffdo\ufffd -BasicFrame.dlg.lbl2 = \ufffdno se ha guardado -BasicFrame.dlg.lbl3 = \ufffdQuiere guardarlo? -BasicFrame.dlg.title = Dise\ufffdo no guardado -BasicFrame.item.Closedesign = Cerrar el dise\ufffdo actual -BasicFrame.item.Openexamplerocketdesign = Abrir un ejemplo de dise\ufffdo de cohete -BasicFrame.item.Openrecentrocketdesign = Abrir un dise\ufffdo reciente -BasicFrame.item.Openrocketdesign = Abrir un dise\ufffdo de cohete +BasicFrame.dlg.lbl1 = El dise\u00f1o\u00a0 +BasicFrame.dlg.lbl2 = \u00a0no se ha guardado +BasicFrame.dlg.lbl3 = \u00bfQuiere guardarlo? +BasicFrame.dlg.title = Dise\u00f1o no guardado +BasicFrame.item.Closedesign = Cerrar el dise\u00f1o actual +BasicFrame.item.Openexamplerocketdesign = Abrir un ejemplo de dise\u00f1o de cohete +BasicFrame.item.Openrecentrocketdesign = Abrir un dise\u00f1o reciente +BasicFrame.item.Openrocketdesign = Abrir un dise\u00f1o de cohete BasicFrame.item.Printpart = Imprimir un listado de componentes y un esquema de aleta BasicFrame.item.Quitprogram = Salir del programa -BasicFrame.item.SavecurRocketdesign = Guardar el dise\ufffdo actual -BasicFrame.item.SavecurRocketdesnewfile = Guardar el dise\ufffdo actual como un nuevo documento +BasicFrame.item.SavecurRocketdesign = Guardar el dise\u00f1o actual +BasicFrame.item.SavecurRocketdesnewfile = Guardar el dise\u00f1o actual como un nuevo documento BasicFrame.menu.Rocketedt = Mostrar el cohete BasicFrame.tab.Flightconfig = Configuraciones BasicFrame.tab.Flightsim = Simulaciones de vuelo ! BasicFrame -BasicFrame.tab.Rocketdesign = Dise\ufffdo del cohete -BasicFrame.title.Addnewcomp = A\ufffdadir un nuevo componente +BasicFrame.tab.Rocketdesign = Dise\u00f1o del cohete +BasicFrame.title.Addnewcomp = A\u00f1adir un nuevo componente ! BodyTube BodyTube.BodyTube = Cuerpo -BodyTubecfg.checkbox.Automatic = Autom\ufffdtico -BodyTubecfg.checkbox.Filled = S\ufffdlido +BodyTubecfg.checkbox.Automatic = Autom\u00e1tico +BodyTubecfg.checkbox.Filled = S\u00f3lido ! Body Tube Config BodyTubecfg.lbl.Bodytubelength = Longitud del tubo: -BodyTubecfg.lbl.Innerdiameter = Di\ufffdmetro interior: -BodyTubecfg.lbl.Outerdiameter = Di\ufffdmetro exterior: +BodyTubecfg.lbl.Innerdiameter = Di\u00e1metro interior: +BodyTubecfg.lbl.Outerdiameter = Di\u00e1metro exterior: BodyTubecfg.lbl.Wallthickness = Espesor de la pared: BodyTubecfg.tab.General = General BodyTubecfg.tab.Generalproperties = Propiedades generales BodyTubecfg.tab.Motor = Motor -BodyTubecfg.tab.Motormountconf = Configuraci\ufffdn del porta motor +BodyTubecfg.tab.Motormountconf = Configuraci\u00f3n del porta motor ! Bulkhead Bulkhead.Bulkhead = Disco de enganche !RocketCompCfg.lbl.Length = Longitud: ! BulkheadConfig -BulkheadCfg.tab.Diameter = Di\ufffdmetro: +BulkheadCfg.tab.Diameter = Di\u00e1metro: BulkheadCfg.tab.General = General BulkheadCfg.tab.Generalproperties = Propiedades generales BulkheadCfg.tab.Thickness = Espesor: @@ -106,9 +106,9 @@ CenteringRing.CenteringRing = Anillo de centrado CenteringRingCfg.tab.General = General CenteringRingCfg.tab.Generalproperties = Propiedades generales -CenteringRingCfg.tab.Innerdiam = Di\ufffdmetro interior: +CenteringRingCfg.tab.Innerdiam = Di\u00e1metro interior: !CenteringRingConfig -CenteringRingCfg.tab.Outerdiam = Di\ufffdmetro exterior: +CenteringRingCfg.tab.Outerdiam = Di\u00e1metro exterior: CenteringRingCfg.tab.Thickness = Espesor: CompassRose.lbl.east = E @@ -129,48 +129,48 @@ CompassSelectionButton.lbl.W = O ComponentCfgDlg.Modify = Modificar !ComponentConfigDialog -ComponentCfgDlg.configuration = Configuraci\ufffdn -ComponentCfgDlg.configuration1 = Configuraci\ufffdn +ComponentCfgDlg.configuration = +ComponentCfgDlg.configuration1 = Configuraci\u00f3n ComponentIcons.Bodytube = Cuerpo tubular ComponentIcons.Bulkhead = Disco de enganche ComponentIcons.Centeringring = Anillo de centrado -ComponentIcons.Ellipticalfinset = Aletas el\ufffdpticas -ComponentIcons.Engineblock = Ret\ufffdn de motor +ComponentIcons.Ellipticalfinset = Aletas el\u00edpticas +ComponentIcons.Engineblock = Ret\u00e9n de motor ComponentIcons.Freeformfinset = Aletas de forma libre ComponentIcons.Innertube = Tubo interior -ComponentIcons.Launchlug = Tubo para Gu\ufffda +ComponentIcons.Launchlug = Tubo para Gu\u00eda ComponentIcons.Masscomponent = Componente masa !ComponentIcons ComponentIcons.Nosecone = Ojiva -ComponentIcons.Parachute = Paraca\ufffddas -ComponentIcons.Shockcord = Tirante de suspensi\ufffdn +ComponentIcons.Parachute = Paraca\u00eddas +ComponentIcons.Shockcord = Tirante de suspensi\u00f3n ComponentIcons.Streamer = Banderola -ComponentIcons.Transition = Transici\ufffdn +ComponentIcons.Transition = Transici\u00f3n ComponentIcons.Trapezoidalfinset = Aletas trapezoidales ComponentIcons.Tubecoupler = Tubo de acoplamiento ComponentIcons.disabled = (Deshabilitado) -ComponentPresetChooserDialog.checkbox.filterAftDiameter = Ajustado al di\ufffdmetro trasero -ComponentPresetChooserDialog.checkbox.filterForeDiameter = Ajustado al di\ufffdmetro delantero +ComponentPresetChooserDialog.checkbox.filterAftDiameter = Ajustado al di\u00e1metro trasero +ComponentPresetChooserDialog.checkbox.filterForeDiameter = Ajustado al di\u00e1metro delantero ComponentPresetChooserDialog.checkbox.showAllCompatible = Mostrar todos los compatibles ComponentPresetChooserDialog.filter.label = Filtro: -ComponentPresetChooserDialog.lbl.favorites = Seleccione los items que aparecer\ufffdn en el desplegable de materiales. +ComponentPresetChooserDialog.lbl.favorites = Seleccione los items que aparecer\u00e1n en el desplegable de materiales. ComponentPresetChooserDialog.menu.sortAsc = Orden ascendente ComponentPresetChooserDialog.menu.sortDesc = Orden descendente ComponentPresetChooserDialog.menu.units = Unidades ! Component Preset Chooser Dialog ComponentPresetChooserDialog.title = Seleccionar un prefabricado -Configuration.lbl.override = El par\ufffdmetro puede ser anulado en cada configuraci\ufffdn del vuelo. +Configuration.lbl.override = El par\u00e1metro puede ser anulado en cada configuraci\u00f3n del vuelo. CsvOptionPanel.separator.space = SPACE CsvOptionPanel.separator.tab = TAB -CustomFinImport.badFinImage = Imagen de aleta no v\ufffdlida. Debe ser una imagen en blanco y negro (negro para la aleta), sin que los bordes toquen los lados excepto la parte inferior de la imagen que debe ser la l\ufffdnea base de la aleta. +CustomFinImport.badFinImage = Imagen de aleta no v\u00e1lida. Debe ser una imagen en blanco y negro (negro para la aleta), sin que los bordes toquen los lados excepto la parte inferior de la imagen que debe ser la l\u00ednea base de la aleta. ! Custom Fin BMP Importer CustomFinImport.button.label = Importar una imagen -CustomFinImport.description = La imagen ser\ufffd convertida internamente en una imagen en blanco y negro (negro para la aleta), por tanto asegurese de que utiliza un color oscuro s\ufffdlido para la aleta, y un color blanco y claro para el fondo. La base de la aleta debe estar tocando el borde inferior de la imagen. +CustomFinImport.description = La imagen ser\u00e1 convertida internamente en una imagen en blanco y negro (negro para la aleta), por tanto asegurese de que utiliza un color oscuro s\u00f3lido para la aleta, y un color blanco y claro para el fondo. La base de la aleta debe estar tocando el borde inferior de la imagen. CustomFinImport.error.badimage = No se pudo deducir la forma de la aleta de la imagen. CustomFinImport.error.title = Error al cargar el perfil de la aleta CustomFinImport.errorLoadingFile = Error al cargar el archivo: @@ -191,16 +191,16 @@ Databases.materials.types.Surface = Superficial DecalModel.lbl.choose = Importar desde archivo... DecalModel.lbl.select = -DeploymentSelectionDialog.opt.default = Cambiar toda la configuraci\ufffdn utilizando el evento de despliegue por defecto -DeploymentSelectionDialog.opt.override = Ignorar s\ufffdlo para la configuraci\ufffdn del vuelo {0} -DeploymentSelectionDialog.opt.title = Configuraciones del vuelo que se ver\ufffdn afectadas: +DeploymentSelectionDialog.opt.default = Cambiar toda la configuraci\u00f3n utilizando el evento de despliegue por defecto +DeploymentSelectionDialog.opt.override = Ignorar s\u00f3lo para la configuraci\u00f3n del vuelo {0} +DeploymentSelectionDialog.opt.title = Configuraciones del vuelo que se ver\u00e1n afectadas: -DeploymentVelocityParameter.name = Velocidad durante la eyecci\ufffdn +DeploymentVelocityParameter.name = Velocidad durante la eyecci\u00f3n -EditDecalDialog.btn.chooser = Seleccionar un Programa editor de gr\ufffdficos +EditDecalDialog.btn.chooser = Seleccionar un Programa editor de gr\u00e1ficos EditDecalDialog.lbl.always = Utilizar siempre estos ajustes -EditDecalDialog.lbl.cmdline = L\ufffdnea de comando -EditDecalDialog.lbl.cmdline.help = El nombre del archivo ser\ufffd sustituido por ''%%'' +EditDecalDialog.lbl.cmdline = L\u00ednea de comando +EditDecalDialog.lbl.cmdline.help = El nombre del archivo ser\u00e1 sustituido por ''%%'' EditDecalDialog.lbl.prompt = Mostrar el cursor EditDecalDialog.lbl.select = Seleccionar el editor EditDecalDialog.lbl.system = Utilizar el editor por defecto @@ -208,40 +208,40 @@ EditDecalDialog.title = Editar el Calco EditDecalHelper.createFileException = No se puede crear el archivo temporal {0} EditDecalHelper.editPreferencesHelp = El editor utilizado puede modificarse en las Preferencias. -EditDecalHelper.launchCustomEditorException = No se puede abrir el editor de gr\ufffdficos con el comando ''{0}'' -EditDecalHelper.launchSystemEditorException = No se puede abrir el sistema editor de gr\ufffdficos. +EditDecalHelper.launchCustomEditorException = No se puede abrir el editor de gr\u00e1ficos con el comando ''{0}'' +EditDecalHelper.launchSystemEditorException = No se puede abrir el sistema editor de gr\u00e1ficos. !EllipticalFinSet -EllipticalFinSet.Ellipticalfinset = Aletas el\ufffdpticas +EllipticalFinSet.Ellipticalfinset = Aletas el\u00edpticas -EllipticalFinSetCfg.Fincant = Inclinaci\ufffdn de las aletas: +EllipticalFinSetCfg.Fincant = Inclinaci\u00f3n de las aletas: EllipticalFinSetCfg.FincrossSection = Borde de la aleta: EllipticalFinSetCfg.General = General EllipticalFinSetCfg.Generalproperties = Propiedades generales EllipticalFinSetCfg.Height = Altura: !EllipticalFinSetConfig -EllipticalFinSetCfg.Nbroffins = N\ufffdmero de aletas: -EllipticalFinSetCfg.Positionrelativeto = Posici\ufffdn relativa a: -EllipticalFinSetCfg.Rootchord = Longitud l\ufffdnea base: -EllipticalFinSetCfg.Rotation = Rotaci\ufffdn de las aletas: +EllipticalFinSetCfg.Nbroffins = N\u00famero de aletas: +EllipticalFinSetCfg.Positionrelativeto = Posici\u00f3n relativa a: +EllipticalFinSetCfg.Rootchord = Longitud l\u00ednea base: +EllipticalFinSetCfg.Rotation = Rotaci\u00f3n de las aletas: EllipticalFinSetCfg.Thickness = Espesor: -EllipticalFinSetCfg.plus = Localizaci\ufffdn: -EllipticalFinSetCfg.ttip.Fincant = El \ufffdngulo de inclinaci\ufffdn de las aletas respecto al eje central del fuselaje. +EllipticalFinSetCfg.plus = Localizaci\u00f3n: +EllipticalFinSetCfg.ttip.Fincant = El \u00e1ngulo de inclinaci\u00f3n de las aletas respecto al eje central del fuselaje. ! EngineBlock -EngineBlock.EngineBlock = Ret\ufffdn de motor +EngineBlock.EngineBlock = Ret\u00e9n de motor ExportDecalDialog.decalList.lbl = Calco ExportDecalDialog.exception = Imposible guardar el Calco en el archivo ''{0}'' ExportDecalDialog.title = Exportar Calco ExpressionBuilderDialog.CopyToOtherSimulations = Copiar en otras simulaciones -ExpressionBuilderDialog.CopyToOtherSimulations.ttip = Realice una copia de esta expresi\ufffdn en otras simulaciones de \ufffdste documento.
Esto no sobreescribir\ufffd o modificar\ufffd las expresiones existentes en el resto de las simulaciones. +ExpressionBuilderDialog.CopyToOtherSimulations.ttip = Realice una copia de esta expresi\u00f3n en otras simulaciones de \u00e9ste documento.
Esto no sobreescribir\u00e1 o modificar\u00e1 las expresiones existentes en el resto de las simulaciones. ExpressionBuilderDialog.InsertOperator = Insertar operador ExpressionBuilderDialog.InsertVariable = Insertar variable -ExpressionBuilderDialog.led.ttip.Expression = La expresi\ufffdn debe utilizarse s\ufffdlo con s\ufffdmbolos y operadores conocidos -ExpressionBuilderDialog.led.ttip.Name = El nombre no debe haber sido utilizado a\ufffdn -ExpressionBuilderDialog.led.ttip.Symbol = El s\ufffdmbolo no debe haber sido utilizado a\ufffdn +ExpressionBuilderDialog.led.ttip.Expression = La expresi\u00f3n debe utilizarse s\u00f3lo con s\u00edmbolos y operadores conocidos +ExpressionBuilderDialog.led.ttip.Name = El nombre no debe haber sido utilizado a\u00fan +ExpressionBuilderDialog.led.ttip.Symbol = El s\u00edmbolo no debe haber sido utilizado a\u00fan ! Custom expression builder window ExpressionBuilderDialog.title = Constructor de expresiones @@ -255,73 +255,73 @@ ExternalComponent.Unfinished = Inacabado !FinMarkingGuide FinMarkingGuide.lbl.Front = Frente -FinSet.CrossSection.AIRFOIL = Aerodin\ufffdmico +FinSet.CrossSection.AIRFOIL = Aerodin\u00e1mico FinSet.CrossSection.ROUNDED = Redondeado ! FinSet FinSet.CrossSection.SQUARE = Cuadrado -FinSet.TabRelativePosition.CENTER = Punto central de la ra\ufffdz de la aleta -FinSet.TabRelativePosition.END = Extremo trasero de la ra\ufffdz de la aleta -FinSet.TabRelativePosition.FRONT = Extremo delantero de la ra\ufffdz de la aleta +FinSet.TabRelativePosition.CENTER = Punto central de la ra\u00edz de la aleta +FinSet.TabRelativePosition.END = Extremo trasero de la ra\u00edz de la aleta +FinSet.TabRelativePosition.FRONT = Extremo delantero de la ra\u00edz de la aleta FinSetConfig.Convertfinset = Convertir aletas -FinSetConfig.but.AutoCalc = Calcular autom\ufffdticamente +FinSetConfig.but.AutoCalc = Calcular autom\u00e1ticamente FinSetConfig.but.Converttofreeform = Convertir a forma libre FinSetConfig.but.Converttofreeform.ttip = Convertir esta forma de aleta a una forma libre FinSetConfig.but.Splitfins = Separar las aletas -FinSetConfig.but.Splitfins.ttip = Dividir la configuraci\ufffdn de aleta en varias separadas -FinSetConfig.lbl.Tabheight = Altura de la ra\ufffdz: -FinSetConfig.lbl.Tablength = Longitud de la ra\ufffdz: -FinSetConfig.lbl.Tabposition = Posici\ufffdn de la ra\ufffdz: -FinSetConfig.lbl.Through-the-wall = Ra\ufffdz de la aleta a trav\ufffds del fuselaje: +FinSetConfig.but.Splitfins.ttip = Dividir la configuraci\u00f3n de aleta en varias separadas +FinSetConfig.lbl.Tabheight = Altura de la ra\u00edz: +FinSetConfig.lbl.Tablength = Longitud de la ra\u00edz: +FinSetConfig.lbl.Tabposition = Posici\u00f3n de la ra\u00edz: +FinSetConfig.lbl.Through-the-wall = Ra\u00edz de la aleta a trav\u00e9s del fuselaje: FinSetConfig.lbl.relativeto = Relativo al: ! FinSetConfig -FinSetConfig.tab.Fintabs = Ra\ufffdz de aleta -FinSetConfig.tab.Through-the-wall = Ra\ufffdz de la aleta a trav\ufffds del fuselaje -FinSetConfig.ttip.Tabheight = La altura de la ra\ufffdz de la aleta. -FinSetConfig.ttip.Tablength = La longitud de la ra\ufffdz de la aleta. -FinSetConfig.ttip.Tabposition = La posici\ufffdn de la ra\ufffdz de la aleta. +FinSetConfig.tab.Fintabs = Ra\u00edz de aleta +FinSetConfig.tab.Through-the-wall = Ra\u00edz de la aleta a trav\u00e9s del fuselaje +FinSetConfig.ttip.Tabheight = La altura de la ra\u00edz de la aleta. +FinSetConfig.ttip.Tablength = La longitud de la ra\u00edz de la aleta. +FinSetConfig.ttip.Tabposition = La posici\u00f3n de la ra\u00edz de la aleta. -FlightDataType.TYPE_ACCELERATION_TOTAL = Aceleraci\ufffdn total -FlightDataType.TYPE_ACCELERATION_XY = Aceleraci\ufffdn horizontal -FlightDataType.TYPE_ACCELERATION_Z = Aceleraci\ufffdn vertical -FlightDataType.TYPE_AIR_PRESSURE = Presi\ufffdn del aire +FlightDataType.TYPE_ACCELERATION_TOTAL = Aceleraci\u00f3n total +FlightDataType.TYPE_ACCELERATION_XY = Aceleraci\u00f3n horizontal +FlightDataType.TYPE_ACCELERATION_Z = Aceleraci\u00f3n vertical +FlightDataType.TYPE_AIR_PRESSURE = Presi\u00f3n del aire FlightDataType.TYPE_AIR_TEMPERATURE = Temperatura del aire FlightDataType.TYPE_ALTITUDE = Altitud -FlightDataType.TYPE_AOA = \ufffdngulo de ataque +FlightDataType.TYPE_AOA = \u00c1ngulo de ataque FlightDataType.TYPE_AXIAL_DRAG_COEFF = Coeficiente de rozamiento axial FlightDataType.TYPE_BASE_DRAG_COEFF = Coeficiente de rozamiento base -FlightDataType.TYPE_CG_LOCATION = Situaci\ufffdn del CG -FlightDataType.TYPE_COMPUTATION_TIME = C\ufffdlculo del tiempo -FlightDataType.TYPE_CORIOLIS_ACCELERATION = Aceleraci\ufffdn Coriolis -FlightDataType.TYPE_CP_LOCATION = Situaci\ufffdn del CP +FlightDataType.TYPE_CG_LOCATION = Situaci\u00f3n del CG +FlightDataType.TYPE_COMPUTATION_TIME = C\u00e1lculo del tiempo +FlightDataType.TYPE_CORIOLIS_ACCELERATION = Aceleraci\u00f3n Coriolis +FlightDataType.TYPE_CP_LOCATION = Situaci\u00f3n del CP FlightDataType.TYPE_DRAG_COEFF = Coeficiente de rozamiento FlightDataType.TYPE_DRAG_FORCE = Fuerza de rozamiento -FlightDataType.TYPE_FRICTION_DRAG_COEFF = Coeficiente de rozamiento por fricci\ufffdn -FlightDataType.TYPE_GRAVITY = Aceleraci\ufffdn gravitacional +FlightDataType.TYPE_FRICTION_DRAG_COEFF = Coeficiente de rozamiento por fricci\u00f3n +FlightDataType.TYPE_GRAVITY = Aceleraci\u00f3n gravitacional FlightDataType.TYPE_LATITUDE = Latitud FlightDataType.TYPE_LONGITUDE = Longitud FlightDataType.TYPE_LONGITUDINAL_INERTIA = Momento de inercia longitudinal -FlightDataType.TYPE_MACH_NUMBER = N\ufffdmero Mach +FlightDataType.TYPE_MACH_NUMBER = N\u00famero Mach FlightDataType.TYPE_MASS = Masa FlightDataType.TYPE_NORMAL_FORCE_COEFF = Coeficiente de rozamiento normal -FlightDataType.TYPE_ORIENTATION_PHI = Orientaci\ufffdn lateral (azimut) -FlightDataType.TYPE_ORIENTATION_THETA = Orientaci\ufffdn vertical (zenit) -FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF = Coeficiente de amortiguaci\ufffdn del cabeceo +FlightDataType.TYPE_ORIENTATION_PHI = Orientaci\u00f3n lateral (azimut) +FlightDataType.TYPE_ORIENTATION_THETA = Orientaci\u00f3n vertical (zenit) +FlightDataType.TYPE_PITCH_DAMPING_MOMENT_COEFF = Coeficiente de amortiguaci\u00f3n del cabeceo FlightDataType.TYPE_PITCH_MOMENT_COEFF = Coeficiente del momento del cabeceo FlightDataType.TYPE_PITCH_RATE = Tasa de cabeceo -FlightDataType.TYPE_POSITION_DIRECTION = Direcci\ufffdn lateral -FlightDataType.TYPE_POSITION_X = Posici\ufffdn contra el viento +FlightDataType.TYPE_POSITION_DIRECTION = Direcci\u00f3n lateral +FlightDataType.TYPE_POSITION_X = Posici\u00f3n contra el viento FlightDataType.TYPE_POSITION_XY = Distancia lateral -FlightDataType.TYPE_POSITION_Y = Posici\ufffdn a favor del viento -FlightDataType.TYPE_PRESSURE_DRAG_COEFF = Presi\ufffdn del Coeficiente de rozamiento +FlightDataType.TYPE_POSITION_Y = Posici\u00f3n a favor del viento +FlightDataType.TYPE_PRESSURE_DRAG_COEFF = Presi\u00f3n del Coeficiente de rozamiento FlightDataType.TYPE_PROPELLANT_MASS = Masa del propulsor -FlightDataType.TYPE_REFERENCE_AREA = \ufffdrea de referencia +FlightDataType.TYPE_REFERENCE_AREA = \u00c1rea de referencia FlightDataType.TYPE_REFERENCE_LENGTH = Longitud de referencia -FlightDataType.TYPE_REYNOLDS_NUMBER = N\ufffdmero de Reynolds -FlightDataType.TYPE_ROLL_DAMPING_COEFF = Coeficiente de amortiguaci\ufffdn de la rotaci\ufffdn -FlightDataType.TYPE_ROLL_FORCING_COEFF = Coeficiente de la fuerza de rotaci\ufffdn -FlightDataType.TYPE_ROLL_MOMENT_COEFF = Coeficiente del momento de rotaci\ufffdn -FlightDataType.TYPE_ROLL_RATE = Tasa de rotaci\ufffdn +FlightDataType.TYPE_REYNOLDS_NUMBER = N\u00famero de Reynolds +FlightDataType.TYPE_ROLL_DAMPING_COEFF = Coeficiente de amortiguaci\u00f3n de la rotaci\u00f3n +FlightDataType.TYPE_ROLL_FORCING_COEFF = Coeficiente de la fuerza de rotaci\u00f3n +FlightDataType.TYPE_ROLL_MOMENT_COEFF = Coeficiente del momento de rotaci\u00f3n +FlightDataType.TYPE_ROLL_RATE = Tasa de rotaci\u00f3n FlightDataType.TYPE_ROTATIONAL_INERTIA = Momento de inercia rotacional FlightDataType.TYPE_SIDE_FORCE_COEFF = Coeficiente de la fuerza lateral FlightDataType.TYPE_SPEED_OF_SOUND = Velocidad del sonido @@ -329,128 +329,127 @@ FlightDataType.TYPE_STABILITY = Margen de estabilidad en Calibr FlightDataType.TYPE_THRUST_FORCE = Empuje ! FlightDataType FlightDataType.TYPE_TIME = Tiempo -FlightDataType.TYPE_TIME_STEP = Intervalos de tiempo en la Simulaci\ufffdn +FlightDataType.TYPE_TIME_STEP = Intervalos de tiempo en la Simulaci\u00f3n FlightDataType.TYPE_VELOCITY_TOTAL = Velocidad total FlightDataType.TYPE_VELOCITY_XY = Velocidad horizontal FlightDataType.TYPE_VELOCITY_Z = Velocidad vertical FlightDataType.TYPE_WIND_VELOCITY = Velocidad del viento -FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF = Coeficiente de amoriguaci\ufffdn de gui\ufffdada -FlightDataType.TYPE_YAW_MOMENT_COEFF = Coeficiente del momento de gui\ufffdada -FlightDataType.TYPE_YAW_RATE = Tasa de gui\ufffdada +FlightDataType.TYPE_YAW_DAMPING_MOMENT_COEFF = Coeficiente de amoriguaci\u00f3n de gui\u00f1ada +FlightDataType.TYPE_YAW_MOMENT_COEFF = Coeficiente del momento de gui\u00f1ada +FlightDataType.TYPE_YAW_RATE = Tasa de gui\u00f1ada FlightEvent.Type.ALTITUDE = Cambio de altitud FlightEvent.Type.APOGEE = Apogeo FlightEvent.Type.BURNOUT = Apagado del motor -FlightEvent.Type.EJECTION_CHARGE = Carga de eyecci\ufffdn -FlightEvent.Type.EXCEPTION = Excepci\ufffdn +FlightEvent.Type.EJECTION_CHARGE = Carga de eyecci\u00f3n FlightEvent.Type.GROUND_HIT = Contacto con el suelo FlightEvent.Type.IGNITION = Encendido del motor ! FlightEvent FlightEvent.Type.LAUNCH = Lanzamiento -FlightEvent.Type.LAUNCHROD = Abandono de la Gu\ufffda de lanzamiento +FlightEvent.Type.LAUNCHROD = Abandono de la Gu\u00eda de lanzamiento FlightEvent.Type.LIFTOFF = Despegue -FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT = Despliegue del sistema de recuperaci\ufffdn -FlightEvent.Type.SIMULATION_END = Fin de la simulaci\ufffdn -FlightEvent.Type.STAGE_SEPARATION = Separaci\ufffdn de etapa +FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT = Despliegue del sistema de recuperaci\u00f3n +FlightEvent.Type.SIMULATION_END = Fin de la simulaci\u00f3n +FlightEvent.Type.STAGE_SEPARATION = Separaci\u00f3n de etapa FlightEvent.Type.TUMBLE = Volteo ! FreeformFinSet FreeformFinSet.FreeformFinSet = Aletas de forma libre -FreeformFinSetCfg.lbl.Fincant = Inclinaci\ufffdn de las aletas: +FreeformFinSetCfg.lbl.Fincant = Inclinaci\u00f3n de las aletas: FreeformFinSetCfg.lbl.FincrossSection = Borde de la aleta: -FreeformFinSetCfg.lbl.Finrotation = Rotaci\ufffdn de las aletas: -FreeformFinSetCfg.lbl.Numberoffins = N\ufffdmero de aletas: -FreeformFinSetCfg.lbl.Posrelativeto = Posici\ufffdn relativa a: +FreeformFinSetCfg.lbl.Finrotation = Rotaci\u00f3n de las aletas: +FreeformFinSetCfg.lbl.Numberoffins = N\u00famero de aletas: +FreeformFinSetCfg.lbl.Posrelativeto = Posici\u00f3n relativa a: FreeformFinSetCfg.lbl.Thickness = Espesor: -FreeformFinSetCfg.lbl.plus = Localizaci\ufffdn: -FreeformFinSetCfg.lbl.ttip.Fincant = El \ufffdngulo de inclinaci\ufffdn de las aletas respecto al eje central del fuselaje. +FreeformFinSetCfg.lbl.plus = Localizaci\u00f3n: +FreeformFinSetCfg.lbl.ttip.Fincant = El \u00e1ngulo de inclinaci\u00f3n de las aletas respecto al eje central del fuselaje. !FreeformFinSetConfig FreeformFinSetCfg.tab.General = General FreeformFinSetCfg.tab.Shape = Forma FreeformFinSetCfg.tab.ttip.Finshape = Forma de la aleta FreeformFinSetCfg.tab.ttip.General = Propiedades generales -FreeformFinSetConfig.lbl.clickDrag = Click (sobre l\ufffdnea)+arrastrar: Agregar punto +FreeformFinSetConfig.lbl.clickDrag = Click (sobre l\u00ednea)+arrastrar: Agregar punto FreeformFinSetConfig.lbl.ctrlClick = Control+Click (sobre punto): Eliminar punto !DobleClic 1 + 2 en el mensaje "Doble-Click para editar", corta aproximadamente por la mitad FreeformFinSetConfig.lbl.doubleClick1 = Doble Click en la lista FreeformFinSetConfig.lbl.doubleClick2 = para editar FreeformFinSetConfig.lbl.scaleFin = Dimensionar -GeneralOptimizationDialog.basicSimulationName = Simulaci\ufffdn b\ufffdsica +GeneralOptimizationDialog.basicSimulationName = Simulaci\u00f3n b\u00e1sica GeneralOptimizationDialog.btn.add = Agregar -GeneralOptimizationDialog.btn.add.ttip = Agregar el par\ufffdmetro de optimizacai\ufffdn -GeneralOptimizationDialog.btn.apply = Aplicar -GeneralOptimizationDialog.btn.apply.ttip = Aplicar los resultados de la optimizaci\ufffdn al dise\ufffdo actual del cohete. +GeneralOptimizationDialog.btn.add.ttip = Agregar el par\u00e1metro de optimizacai\u00f3n +GeneralOptimizationDialog.btn.apply = Aplicar optimizaci\u00f3n +GeneralOptimizationDialog.btn.apply.ttip = Aplicar los resultados de la optimizaci\u00f3n al dise\u00f1o del cohete. GeneralOptimizationDialog.btn.close = Cerrar -GeneralOptimizationDialog.btn.close.ttip = Cerrar el cuadro de di\ufffdlogo sin modificar el dise\ufffdo actual del cohete. -GeneralOptimizationDialog.btn.plotPath = Gr\ufffdfica del proceso -GeneralOptimizationDialog.btn.plotPath.ttip = Gr\ufffdfica del proceso de optimizaci\ufffdn (s\ufffdlo para 1 o 2 dimensiones). +GeneralOptimizationDialog.btn.close.ttip = Cerrar el cuadro de di\u00e1logo sin modificar el dise\u00f1o actual del cohete. +GeneralOptimizationDialog.btn.plotPath = Gr\u00e1fica del proceso +GeneralOptimizationDialog.btn.plotPath.ttip = Gr\u00e1fica del proceso de optimizaci\u00f3n (s\u00f3lo para 1 o 2 dimensiones). GeneralOptimizationDialog.btn.remove = Eliminar -GeneralOptimizationDialog.btn.remove.ttip = Eliminar el par\ufffdmetro seleccionado de la optimizaci\ufffdn. +GeneralOptimizationDialog.btn.remove.ttip = Eliminar el par\u00e1metro seleccionado de la optimizaci\u00f3n. GeneralOptimizationDialog.btn.removeAll = Eliminar todo -GeneralOptimizationDialog.btn.removeAll.ttip = Eliminar todos los par\ufffdmetros de optimizaci\ufffdn. +GeneralOptimizationDialog.btn.removeAll.ttip = Eliminar todos los par\u00e1metros de optimizaci\u00f3n. GeneralOptimizationDialog.btn.reset = Reiniciar -GeneralOptimizationDialog.btn.reset.ttip = Reiniciar el dise\ufffdo actual del cohete con el dise\ufffdo optimizado. +GeneralOptimizationDialog.btn.reset.ttip = Reiniciar el dise\u00f1o actual del cohete con el dise\u00f1o optimizado. GeneralOptimizationDialog.btn.save = Guardar resultados GeneralOptimizationDialog.btn.save.ttip = Guardar los resultados de las evaluaciones (simulaciones) en un archivo CSV. -GeneralOptimizationDialog.btn.start = Iniciar optimizaci\ufffdn -GeneralOptimizationDialog.btn.stop = Detener optimizaci\ufffdn -GeneralOptimizationDialog.error.optimizationFailure.text = Fall\ufffd la ejecuci\ufffdn de la optimizaci\ufffdn: -GeneralOptimizationDialog.error.optimizationFailure.title = Fallo de la optimizaci\ufffdn -GeneralOptimizationDialog.error.selectParams.text = Primero seleccione algunos par\ufffdmetros a optimizar de entre todos los par\ufffdmetros disponibles. -GeneralOptimizationDialog.error.selectParams.title = Seleccionar los par\ufffdmetros de optimizaci\ufffdn -GeneralOptimizationDialog.export.header = Incluir l\ufffdnea de cabecera -GeneralOptimizationDialog.export.header.ttip = Incluir una l\ufffdnea de cabecera en la que se indican las descripciones. +GeneralOptimizationDialog.btn.start = Iniciar optimizaci\u00f3n +GeneralOptimizationDialog.btn.stop = Detener optimizaci\u00f3n +GeneralOptimizationDialog.error.optimizationFailure.text = Fall\u00f3 la ejecuci\u00f3n de la optimizaci\u00f3n: +GeneralOptimizationDialog.error.optimizationFailure.title = Fallo de la optimizaci\u00f3n +GeneralOptimizationDialog.error.selectParams.text = Primero seleccione algunos par\u00e1metros a optimizar de entre todos los par\u00e1metros disponibles. +GeneralOptimizationDialog.error.selectParams.title = Seleccionar los par\u00e1metros de optimizaci\u00f3n +GeneralOptimizationDialog.export.header = Incluir l\u00ednea de cabecera +GeneralOptimizationDialog.export.header.ttip = Incluir una l\u00ednea de cabecera en la que se indican las descripciones. GeneralOptimizationDialog.export.stability = Estabilidad GeneralOptimizationDialog.goal.maximize = Maximizar el valor GeneralOptimizationDialog.goal.minimize = Minimizar el valor GeneralOptimizationDialog.goal.seek = Conseguir el valor de -GeneralOptimizationDialog.lbl.availableParams = Par\ufffdmetros disponibles: -GeneralOptimizationDialog.lbl.optimizationOpts = Opciones de optimizaci\ufffdn -GeneralOptimizationDialog.lbl.optimizeGoal = Objetivo de optimizaci\ufffdn: -GeneralOptimizationDialog.lbl.optimizeGoal.ttip = Seleccionar el objetivo de la optimizaci\ufffdn. +GeneralOptimizationDialog.lbl.availableParams = Par\u00e1metros disponibles: +GeneralOptimizationDialog.lbl.optimizationOpts = Opciones de optimizaci\u00f3n +GeneralOptimizationDialog.lbl.optimizeGoal = Objetivo de optimizaci\u00f3n: +GeneralOptimizationDialog.lbl.optimizeGoal.ttip = Seleccionar el objetivo de la optimizaci\u00f3n. GeneralOptimizationDialog.lbl.optimizeGoalValue.ttip = Buscar valor personalizado -GeneralOptimizationDialog.lbl.optimizeSim = Optimizar simulaci\ufffdn: -GeneralOptimizationDialog.lbl.optimizeSim.ttip = Seleccionar la simulaci\ufffdn a optimizar. +GeneralOptimizationDialog.lbl.optimizeSim = Optimizar simulaci\u00f3n: +GeneralOptimizationDialog.lbl.optimizeSim.ttip = Seleccionar la simulaci\u00f3n a optimizar. GeneralOptimizationDialog.lbl.optimizeValue = Valor optimizado: GeneralOptimizationDialog.lbl.optimizeValue.ttip = Seleccionar el valor a optimizar. -GeneralOptimizationDialog.lbl.paramsToOptimize = Par\ufffdmetros de optimizaci\ufffdn: -GeneralOptimizationDialog.lbl.requireMaxStability = M\ufffdxima estabilidad: -GeneralOptimizationDialog.lbl.requireMaxStability.ttip = Requerir un margen m\ufffdximo de estabilidad para el dise\ufffdo. -GeneralOptimizationDialog.lbl.requireMinStability = M\ufffdnima estabilidad: -GeneralOptimizationDialog.lbl.requireMinStability.ttip = Requerir un margen m\ufffdnimo de estabilidad para el dise\ufffdo. +GeneralOptimizationDialog.lbl.paramsToOptimize = Par\u00e1metros de optimizaci\u00f3n: +GeneralOptimizationDialog.lbl.requireMaxStability = M\u00e1xima estabilidad: +GeneralOptimizationDialog.lbl.requireMaxStability.ttip = Requerir un margen m\u00e1ximo de estabilidad para el dise\u00f1o. +GeneralOptimizationDialog.lbl.requireMinStability = M\u00ednima estabilidad: +GeneralOptimizationDialog.lbl.requireMinStability.ttip = Requerir un margen m\u00ednimo de estabilidad para el dise\u00f1o. GeneralOptimizationDialog.lbl.requireStability = Estabilidad requerida -GeneralOptimizationDialog.noSimulationName = Sin simulaci\ufffdn +GeneralOptimizationDialog.noSimulationName = Sin simulaci\u00f3n GeneralOptimizationDialog.status.bestValue = El mejor valor: -GeneralOptimizationDialog.status.bestValue.ttip = El mejor valor de optimizaci\ufffdn encontrado. +GeneralOptimizationDialog.status.bestValue.ttip = El mejor valor de optimizaci\u00f3n encontrado. GeneralOptimizationDialog.status.evalCount = Evaluaciones: -GeneralOptimizationDialog.status.evalCount.ttip = N\ufffdmero total de evaluaciones (simulaciones) que deben realizarse. -GeneralOptimizationDialog.status.stepCount = N\ufffdmero de pasos: -GeneralOptimizationDialog.status.stepCount.ttip = N\ufffdmero de pasos que deben realizarse para la optimizaci\ufffdn. -GeneralOptimizationDialog.status.stepSize = Tama\ufffdo del paso: -GeneralOptimizationDialog.status.stepSize.ttip = Tama\ufffdo actual del paso de optimizaci\ufffdn (respecto al rango de par\ufffdmetros de optimizaci\ufffdn). +GeneralOptimizationDialog.status.evalCount.ttip = N\u00famero total de evaluaciones (simulaciones) que deben realizarse. +GeneralOptimizationDialog.status.stepCount = N\u00famero de pasos: +GeneralOptimizationDialog.status.stepCount.ttip = N\u00famero de pasos que deben realizarse para la optimizaci\u00f3n. +GeneralOptimizationDialog.status.stepSize = Tama\u00f1o del paso: +GeneralOptimizationDialog.status.stepSize.ttip = Tama\u00f1o actual del paso de optimizaci\u00f3n (respecto al rango de par\u00e1metros de optimizaci\u00f3n). GeneralOptimizationDialog.table.col.current = Actual -GeneralOptimizationDialog.table.col.max = M\ufffdximo -GeneralOptimizationDialog.table.col.min = M\ufffdnimo -GeneralOptimizationDialog.table.col.parameter = Par\ufffdmetro +GeneralOptimizationDialog.table.col.max = M\u00e1ximo +GeneralOptimizationDialog.table.col.min = M\u00ednimo +GeneralOptimizationDialog.table.col.parameter = Par\u00e1metro ! General rocket design optimization dialog -GeneralOptimizationDialog.title = Optimizaci\ufffdn del cohete -GeneralOptimizationDialog.undoText = Aplicar la optimizaci\ufffdn +GeneralOptimizationDialog.title = Optimizaci\u00f3n del cohete +GeneralOptimizationDialog.undoText = Aplicar la optimizaci\u00f3n -GeodeticComputationStrategy.flat.desc = No incluir computaciones geod\ufffdsicas. +GeodeticComputationStrategy.flat.desc = No incluir computaciones geod\u00e9sicas. GeodeticComputationStrategy.flat.name = Ninguna -GeodeticComputationStrategy.spherical.desc = Al incluir las computaciones geod\ufffdsicas se considera una Tierra esf\ufffdrica.
Este aspecto es bastante preciso en la mayor\ufffda de los proyectos. -GeodeticComputationStrategy.spherical.name = Aproximaci\ufffdn esf\ufffdrica -GeodeticComputationStrategy.wgs84.desc = Incluye las computaciones geod\ufffdsicas sobre la referencia elipsoidal WGS84 utilizando el m\ufffdtodo de Vicenty.
Este aspecto es lento e innecesario en la mayor\ufffda de los casos. +GeodeticComputationStrategy.spherical.desc = Al incluir las computaciones geod\u00e9sicas se considera una Tierra esf\u00e9rica.
Este aspecto es bastante preciso en la mayor\u00eda de los proyectos. +GeodeticComputationStrategy.spherical.name = Aproximaci\u00f3n esf\u00e9rica +GeodeticComputationStrategy.wgs84.desc = Incluye las computaciones geod\u00e9sicas sobre la referencia elipsoidal WGS84 utilizando el m\u00e9todo de Vicenty.
Este aspecto es lento e innecesario en la mayor\u00eda de los casos. GeodeticComputationStrategy.wgs84.name = Elipsoidal WGS84 GroundHitVelocityParameter.name = Velocidad de aterrizaje -GuidedTourSelectionDialog.btn.start = \ufffdEmpezar el Tour! -GuidedTourSelectionDialog.lbl.description = Descripci\ufffdn del tema: -GuidedTourSelectionDialog.lbl.length = N\ufffdmero de diapositivas: +GuidedTourSelectionDialog.btn.start = \u00a1Empezar el Tour! +GuidedTourSelectionDialog.lbl.description = Descripci\u00f3n del tema: +GuidedTourSelectionDialog.lbl.length = N\u00famero de diapositivas: GuidedTourSelectionDialog.lbl.selectTour = Seleccione un tema: GuidedTourSelectionDialog.title = Visita guiada @@ -458,45 +457,45 @@ Icons.Redo = Rehacer !icons Icons.Undo = Deshacer -IgnitionSelectionDialog.opt.default = Cambiar toda la configuraci\ufffdn utilizando el evento de ignici\ufffdn por defecto -IgnitionSelectionDialog.opt.override = Ignorar s\ufffdlo para la configuraci\ufffdn del vuelo {0} -IgnitionSelectionDialog.opt.title = Configuraciones del vuelo que se ver\ufffdn afectadas: +IgnitionSelectionDialog.opt.default = Cambiar toda la configuraci\u00f3n utilizando el evento de ignici\u00f3n por defecto +IgnitionSelectionDialog.opt.override = Ignorar s\u00f3lo para la configuraci\u00f3n del vuelo {0} +IgnitionSelectionDialog.opt.title = Configuraciones del vuelo que se ver\u00e1n afectadas: !InnerTube InnerTube.InnerTube = Tubo interior -InnerTubeCfg.but.Resetsettings = Reiniciar configuraci\ufffdn +InnerTubeCfg.but.Resetsettings = Reiniciar configuraci\u00f3n InnerTubeCfg.but.Splitcluster = Separar tubos -InnerTubeCfg.but.ttip.Resetsettings = Reiniciar la separaci\ufffdn y la rotaci\ufffdn con los valores predeterminados -InnerTubeCfg.lbl.Rotangle = \ufffdngulo de rotaci\ufffdn del cluster -InnerTubeCfg.lbl.Rotation = Rotaci\ufffdn: -InnerTubeCfg.lbl.Selectclustercfg = Elija la configuraci\ufffdn del cluster: -InnerTubeCfg.lbl.TubeSep = Separaci\ufffdn del tubo: +InnerTubeCfg.but.ttip.Resetsettings = Reiniciar la separaci\u00f3n y la rotaci\u00f3n con los valores predeterminados +InnerTubeCfg.lbl.Rotangle = \u00c1ngulo de rotaci\u00f3n del cluster +InnerTubeCfg.lbl.Rotation = Rotaci\u00f3n: +InnerTubeCfg.lbl.Selectclustercfg = Elija la configuraci\u00f3n del cluster: +InnerTubeCfg.lbl.TubeSep = Separaci\u00f3n del tubo: InnerTubeCfg.lbl.longA1 = Separar los tubos del cluster para convertirlos en componentes internos independientes.
-InnerTubeCfg.lbl.longA2 = Esto tambi\ufffdn duplica todos los componentes unidos a este tubo interior. -InnerTubeCfg.lbl.ttip.Rotation = Configuraci\ufffdn del \ufffdngulo de rotaci\ufffdn del cluster -InnerTubeCfg.lbl.ttip.TubeSep = Una separaci\ufffdn de los tubos con valor 1.0 indica que est\ufffdn toc\ufffdndose unos con otros +InnerTubeCfg.lbl.longA2 = Esto tambi\u00e9n duplica todos los componentes unidos a este tubo interior. +InnerTubeCfg.lbl.ttip.Rotation = Configuraci\u00f3n del \u00e1ngulo de rotaci\u00f3n del cluster +InnerTubeCfg.lbl.ttip.TubeSep = Una separaci\u00f3n de los tubos con valor 1.0 indica que est\u00e1n toc\u00e1ndose unos con otros InnerTubeCfg.tab.Cluster = Cluster !InnerTubeConfig InnerTubeCfg.tab.Motor = Motor -InnerTubeCfg.tab.Radialpos = Posici\ufffdn radial -InnerTubeCfg.tab.ttip.Cluster = Configuraci\ufffdn del cluster -InnerTubeCfg.tab.ttip.Motor = Configuraci\ufffdn del porta motor -InnerTubeCfg.tab.ttip.Radialpos = Posici\ufffdn radial +InnerTubeCfg.tab.Radialpos = Posici\u00f3n radial +InnerTubeCfg.tab.ttip.Cluster = Configuraci\u00f3n del cluster +InnerTubeCfg.tab.ttip.Motor = Configuraci\u00f3n del porta motor +InnerTubeCfg.tab.ttip.Radialpos = Posici\u00f3n radial LandingDistanceParameter.name = Distancia de aterrizaje ! LaunchLug -LaunchLug.Launchlug = Soporte para Gu\ufffda +LaunchLug.Launchlug = Soporte para Gu\u00eda -LaunchLugCfg.lbl.Innerdiam = Di\ufffdmetro interior: +LaunchLugCfg.lbl.Innerdiam = Di\u00e1metro interior: ! LaunchLugConfig LaunchLugCfg.lbl.Length = Longitud: -LaunchLugCfg.lbl.Outerdiam = Di\ufffdmetro exterior: -LaunchLugCfg.lbl.Posrelativeto = Posici\ufffdn relativa a: -LaunchLugCfg.lbl.Radialpos = Posici\ufffdn radial: +LaunchLugCfg.lbl.Outerdiam = Di\u00e1metro exterior: +LaunchLugCfg.lbl.Posrelativeto = Posici\u00f3n relativa a: +LaunchLugCfg.lbl.Radialpos = Posici\u00f3n radial: LaunchLugCfg.lbl.Thickness = Espesor: -LaunchLugCfg.lbl.plus = Localizaci\ufffdn: +LaunchLugCfg.lbl.plus = Localizaci\u00f3n: LaunchLugCfg.tab.General = General LaunchLugCfg.tab.Generalprop = Propiedades generales @@ -505,25 +504,25 @@ LineStyle.Dashed = Discontinuo LineStyle.Defaultstyle = Estilo por defecto LineStyle.Dotted = Punteado ! LineStyle -LineStyle.Solid = S\ufffdlido +LineStyle.Solid = S\u00f3lido !MassComponent MassComponent.MassComponent = Masa MassComponentCfg.but.Reset = Reiniciar MassComponentCfg.lbl.Density = Densidad aproximada: -MassComponentCfg.lbl.Diameter = Di\ufffdmetro: +MassComponentCfg.lbl.Diameter = Di\u00e1metro: MassComponentCfg.lbl.Length = Longitud: ! MassComponentConfig MassComponentCfg.lbl.Mass = Masa: -MassComponentCfg.lbl.PosRelativeto = Posici\ufffdn relativa a: -MassComponentCfg.lbl.Radialdirection = Direcci\ufffdn radial: +MassComponentCfg.lbl.PosRelativeto = Posici\u00f3n relativa a: +MassComponentCfg.lbl.Radialdirection = Direcci\u00f3n radial: MassComponentCfg.lbl.Radialdistance = Distancia radial: -MassComponentCfg.lbl.plus = Localizaci\ufffdn: +MassComponentCfg.lbl.plus = Localizaci\u00f3n: MassComponentCfg.tab.General = General -MassComponentCfg.tab.Radialpos = Posici\ufffdn radial +MassComponentCfg.tab.Radialpos = Posici\u00f3n radial MassComponentCfg.tab.ttip.General = Propiedades generales -MassComponentCfg.tab.ttip.Radialpos = Configuraci\ufffdn de la posici\ufffdn radial +MassComponentCfg.tab.ttip.Radialpos = Configuraci\u00f3n de la posici\u00f3n radial ! database ! Translate here all material database @@ -534,12 +533,12 @@ MaterialModel.title.Defcustmat = Definir nuevo material personalizado !MaterialModel MaterialModel.title.Material = Material -MaximumAccelerationParameter.name = Aceleraci\ufffdn m\ufffdxima +MaximumAccelerationParameter.name = Aceleraci\u00f3n m\u00e1xima ! Optimization parameters MaximumAltitudeParameter.name = Altitud en apogeo -MaximumVelocityParameter.name = Velocidad m\ufffdxima +MaximumVelocityParameter.name = Velocidad m\u00e1xima MotorCfg.but.FlightcfgEdit = Editar MotorCfg.but.New = Nuevo @@ -548,13 +547,13 @@ MotorCfg.but.Selectmotor = Seleccionar motor ! MotorConfig MotorCfg.checkbox.compmotormount = Este componente es un porta motor MotorCfg.lbl.Currentmotor = Motor actual: -MotorCfg.lbl.Flightcfg = Configuraci\ufffdn del motor: +MotorCfg.lbl.Flightcfg = Configuraci\u00f3n del motor: MotorCfg.lbl.Ignitionat = Encendido: -MotorCfg.lbl.Motorcfg = Configuraci\ufffdn del motor: +MotorCfg.lbl.Motorcfg = Configuraci\u00f3n del motor: MotorCfg.lbl.Motoroverhang = Sobresalida del motor: -MotorCfg.lbl.longA1 = El dise\ufffdo actual tiene una sola etapa. +MotorCfg.lbl.longA1 = El dise\u00f1o actual tiene una sola etapa. MotorCfg.lbl.longA2 = Pueden agregarse etapas haciendo Click en "Nueva etapa". -MotorCfg.lbl.longB1 = El dise\ufffdo actual tiene +MotorCfg.lbl.longB1 = El dise\u00f1o actual tiene MotorCfg.lbl.longB2 = Etapas. MotorCfg.lbl.motorLabel = Ninguno MotorCfg.lbl.plus = Retardo: @@ -568,10 +567,10 @@ MotorChooserDialog.title = Seleccione un motor ! Edit Motor configuration dialog MotorConfigurationPanel.btn.removeMotor = Quitar motor -MotorConfigurationPanel.btn.resetIgnition = Reiniciar ignici\ufffdn -MotorConfigurationPanel.btn.selectIgnition = Seleccionar ignici\ufffdn +MotorConfigurationPanel.btn.resetIgnition = Reiniciar ignici\u00f3n +MotorConfigurationPanel.btn.selectIgnition = Seleccionar ignici\u00f3n MotorConfigurationPanel.btn.selectMotor = Seleccionar motor -MotorConfigurationPanel.description = Seleccione los motores y los eventos de ignici\ufffdn en la configuraci\ufffdn del vuelo elegida.
Porta motores: Seleccione qu\ufffd compontentes funcionan como porta motores.
Configuraciones de motor: Seleccioner el motor y el evento de ignici\ufffdn para cada tubo Prota motor. +MotorConfigurationPanel.description = Seleccione los motores y los eventos de ignici\u00f3n en la configuraci\u00f3n del vuelo elegida.
Porta motores: Seleccione qu\u00e9 compontentes funcionan como porta motores.
Configuraciones de motor: Seleccioner el motor y el evento de ignici\u00f3n para cada tubo Prota motor. MotorConfigurationPanel.lbl.motorConfiguration = Configuraciones del motor: MotorConfigurationPanel.lbl.motorMounts = Porta motor: @@ -581,38 +580,38 @@ MotorDbLoadDlg.Loadingmotors = Cargando motores... ! MotorDatabaseLoadingDialog MotorDbLoadDlg.title = Carga de motores -MotorDescriptionSubstitutor.description = Motores en la configuraci\ufffdn +MotorDescriptionSubstitutor.description = Motores en la configuraci\u00f3n !MotorMount -MotorMount.IgnitionEvent.AUTOMATIC = Autom\ufffdtico (Lanzamiento o carga de eyecci\ufffdn) +MotorMount.IgnitionEvent.AUTOMATIC = Autom\u00e1tico (Lanzamiento o carga de eyecci\u00f3n) MotorMount.IgnitionEvent.BURNOUT = Al apagarse el motor de la etapa anterior -MotorMount.IgnitionEvent.EJECTION_CHARGE = Con la carga de eyecci\ufffdn de la etapa anterior +MotorMount.IgnitionEvent.EJECTION_CHARGE = Con la carga de eyecci\u00f3n de la etapa anterior MotorMount.IgnitionEvent.LAUNCH = Lanzamiento MotorMount.IgnitionEvent.NEVER = Nunca -MotorMount.IgnitionEvent.short.AUTOMATIC = Autom\ufffdtico +MotorMount.IgnitionEvent.short.AUTOMATIC = Autom\u00e1tico MotorMount.IgnitionEvent.short.BURNOUT = Quemado -MotorMount.IgnitionEvent.short.EJECTION_CHARGE = Carga de eyecci\ufffdn +MotorMount.IgnitionEvent.short.EJECTION_CHARGE = Carga de eyecci\u00f3n MotorMount.IgnitionEvent.short.LAUNCH = Lanzamiento MotorMount.IgnitionEvent.short.NEVER = Nunca MotorPlot.Chart.Motorthrustcurve = Curva de empuje del motor MotorPlot.Chart.Thrust = Empuje / N MotorPlot.Chart.Time = Tiempo / s -MotorPlot.but.Select = Seleccionar la configuraci\ufffdn del motor a usar +MotorPlot.but.Select = Seleccionar la configuraci\u00f3n del motor a usar ! MotorPlot MotorPlot.title.Motorplot = Curva del motor MotorPlot.txt.Comment = Comentario:\n MotorPlot.txt.Delays = Retardos: -MotorPlot.txt.Designation = Designaci\ufffdn: +MotorPlot.txt.Designation = Designaci\u00f3n: MotorPlot.txt.Manufacturer = Fabricante: MotorPlot.txt.Type = Tipo: ! NoseCone NoseCone.NoseCone = Ojiva -NoseConeCfg.checkbox.Automatic = Autom\ufffdtico -NoseConeCfg.checkbox.Filled = S\ufffdlido -NoseConeCfg.lbl.Basediam = Di\ufffdmetro de la base: +NoseConeCfg.checkbox.Automatic = Autom\u00e1tico +NoseConeCfg.checkbox.Filled = S\u00f3lido +NoseConeCfg.lbl.Basediam = Di\u00e1metro de la base: NoseConeCfg.lbl.Noseconelength = Longitud: ! NoseConeConfig NoseConeCfg.lbl.Noseconeshape = Forma: @@ -627,8 +626,8 @@ OpenRocketDocument.Redo = Rehacer OpenRocketDocument.Undo = Deshacer OpenRocketPrintable.Centeringringtemplates = Plantillas de los anillos de centrado -OpenRocketPrintable.DesignReport = Informe del Dise\ufffdo -OpenRocketPrintable.Finmarkingguide = Gu\ufffda marcas de aleta +OpenRocketPrintable.DesignReport = Informe del Dise\u00f1o +OpenRocketPrintable.Finmarkingguide = Gu\u00eda marcas de aleta OpenRocketPrintable.Fintemplates = Plantilla de las aletas OpenRocketPrintable.Noseconetemplates = Plantilla de la ojiva OpenRocketPrintable.Partsdetail = Detalle de las partes @@ -638,88 +637,88 @@ Operator.abs = Valor absoluto Operator.acos = Arco-Coseno Operator.asin = Arco-Seno Operator.atan = Arco-Tangente -Operator.binf = Muestra una cantidad de valores en un rago determinado (1er par\ufffdmetro) entre los l\ufffdmites inferior (2\ufffd par\ufffdmetro) y superior (3er par\ufffdmetro) dentro de un casillero -Operator.cbrt = Ra\ufffdz c\ufffdbica +Operator.binf = Muestra una cantidad de valores en un rago determinado (1er par\u00e1metro) entre los l\u00edmites inferior (2\u00ba par\u00e1metro) y superior (3er par\u00e1metro) dentro de un casillero +Operator.cbrt = Ra\u00edz c\u00fabica Operator.ceil = Redondeo (al sigiente valor entero) Operator.cos = Coseno -Operator.div = Divis\ufffdn -Operator.exp = N\ufffdmero de Euler elevado al valor (e^x) -Operator.expm1 = Igual como exp(x)-1, pero m\ufffds precisa para valores peque\ufffdos de x +Operator.div = Divis\u00f3n +Operator.exp = N\u00famero de Euler elevado al valor (e^x) +Operator.expm1 = Igual como exp(x)-1, pero m\u00e1s precisa para valores peque\u00f1os de x Operator.floor = Redondeo (al valor entero anterior) -Operator.hcos = Coseno hiperb\ufffdlico -Operator.hsin = Seno hiperb\ufffdlico -Operator.htan = Tangente hiperb\ufffdlica -Operator.lclip = Fija un valor (1er par\ufffdmetro) para que no sea inferior a un valor concreto (2\ufffd par\ufffdmetro) +Operator.hcos = Coseno hiperb\u00f3lico +Operator.hsin = Seno hiperb\u00f3lico +Operator.htan = Tangente hiperb\u00f3lica +Operator.lclip = Fija un valor (1er par\u00e1metro) para que no sea inferior a un valor concreto (2\u00ba par\u00e1metro) Operator.ln = Logaritmo Natural Operator.log10 = Logaritmo en base 10 -Operator.max = Valor m\ufffdximo en un rago dado -Operator.mean = Media aritm\ufffdtica de un rango dado -Operator.min = El valor m\ufffdnimo de un rango dado +Operator.max = Valor m\u00e1ximo en un rago dado +Operator.mean = Media aritm\u00e9tica de un rango dado +Operator.min = El valor m\u00ednimo de un rango dado Operator.minus = Resta -Operator.mod = M\ufffddulo +Operator.mod = M\u00f3dulo ! Operators Operator.plus = Suma -Operator.pow = Exponenciaci\ufffdn -Operator.random = N\ufffdmero aleatorio entre cero y un valor dado -Operator.rms = La Media cuadr\ufffdtica de un rango dado -Operator.round = Redondeo al valor \ufffdntegro m\ufffds cercano +Operator.pow = Exponenciaci\u00f3n +Operator.random = N\u00famero aleatorio entre cero y un valor dado +Operator.rms = La Media cuadr\u00e1tica de un rango dado +Operator.round = Redondeo al valor \u00edntegro m\u00e1s cercano Operator.sin = Seno -Operator.sqrt = Ra\ufffdz cuadrada +Operator.sqrt = Ra\u00edz cuadrada Operator.star = Producto -Operator.stdev = Desviaci\ufffdn est\ufffdndar de un rango dado +Operator.stdev = Desviaci\u00f3n est\u00e1ndar de un rango dado Operator.tan = Tangente -Operator.tnear = Buscar el tiempo correspondiente al punto en el rango (1er par\ufffdmetro) m\ufffds cercano a un valor concreto (2\ufffd par\ufffdmetro) -Operator.trapz = Integra el rango dado utilizando el m\ufffdtodo de integraci\ufffdn trapezoidal -Operator.uclip = Fija un valor (1er par\ufffdmetro) para que no sea mayor que un valor concreto (2\ufffd par\ufffdmetro) -Operator.var = Variaci\ufffdn de un rango dado +Operator.tnear = Buscar el tiempo correspondiente al punto en el rango (1er par\u00e1metro) m\u00e1s cercano a un valor concreto (2\u00ba par\u00e1metro) +Operator.trapz = Integra el rango dado utilizando el m\u00e9todo de integraci\u00f3n trapezoidal +Operator.uclip = Fija un valor (1er par\u00e1metro) para que no sea mayor que un valor concreto (2\u00ba par\u00e1metro) +Operator.var = Variaci\u00f3n de un rango dado OptimizationPlotDialog.lbl.zoomInstructions = Click y arrastrar abajo+derecha para acercar Zoom, arriba+izquierda para alejar Zoom -OptimizationPlotDialog.plot.label.optimum = \ufffdptimo +OptimizationPlotDialog.plot.label.optimum = \u00d3ptimo OptimizationPlotDialog.plot.ttip.stability = Estabilidad: -OptimizationPlotDialog.plot1d.series = Resultado de la optimizaci\ufffdn -OptimizationPlotDialog.plot1d.title = Resultado de la optimizaci\ufffdn +OptimizationPlotDialog.plot1d.series = Resultado de la optimizaci\u00f3n +OptimizationPlotDialog.plot1d.title = Resultado de la optimizaci\u00f3n OptimizationPlotDialog.plot2d.evals = Evaluaciones -OptimizationPlotDialog.plot2d.path = Trazabilidad de la optimizaci\ufffdn -OptimizationPlotDialog.plot2d.title = Trazabilidad de la optimizaci\ufffdn +OptimizationPlotDialog.plot2d.path = Trazabilidad de la optimizaci\u00f3n +OptimizationPlotDialog.plot2d.title = Trazabilidad de la optimizaci\u00f3n ! Dialog for plotting optimization results -OptimizationPlotDialog.title = Resultados de la optimizaci\ufffdn +OptimizationPlotDialog.title = Resultados de la optimizaci\u00f3n ! Parachute -Parachute.Parachute = Paraca\ufffddas +Parachute.Parachute = Paraca\u00eddas ParachuteCfg.but.Reset = Reiniciar ParachuteCfg.combo.MaterialModel = El material del componente afecta a su peso. ParachuteCfg.lbl.Altitude = Altitud: ! ParachuteConfig -ParachuteCfg.lbl.Canopy = Pabell\ufffdn +ParachuteCfg.lbl.Canopy = Pabell\u00f3n ParachuteCfg.lbl.Deploysat = Despliegue en: -ParachuteCfg.lbl.Diameter = Di\ufffdmetro: +ParachuteCfg.lbl.Diameter = Di\u00e1metro: ParachuteCfg.lbl.Linelength = Longitud de cuerda: ParachuteCfg.lbl.Material = Material: -ParachuteCfg.lbl.Numberoflines = N\ufffdmero de cuerdas: -ParachuteCfg.lbl.Packeddiam = Di\ufffdmetro del empaquetado: +ParachuteCfg.lbl.Numberoflines = N\u00famero de cuerdas: +ParachuteCfg.lbl.Packeddiam = Di\u00e1metro del empaquetado: ParachuteCfg.lbl.Packedlength = Longitud empaquetado: -ParachuteCfg.lbl.Posrelativeto = Posici\ufffdn relativa a: -ParachuteCfg.lbl.Radialdirection = Direcci\ufffdn radial: +ParachuteCfg.lbl.Posrelativeto = Posici\u00f3n relativa a: +ParachuteCfg.lbl.Radialdirection = Direcci\u00f3n radial: ParachuteCfg.lbl.Radialdistance = Distancia radial: ParachuteCfg.lbl.Shroudlines = Cuerdas: ParachuteCfg.lbl.longA1 = Coeficiente de arrastre CD: -ParachuteCfg.lbl.longB1 = Coeficiente de rozamiento relativo al \ufffdrea total del paraca\ufffddas.
-ParachuteCfg.lbl.longB2 = Un mayor Coeficiente de rozamiento genera un valor de descenso m\ufffds lento. -ParachuteCfg.lbl.longB3 = Un valor t\ufffdpico para los paraca\ufffddas es 0,8. -ParachuteCfg.lbl.plus = Localizaci\ufffdn: +ParachuteCfg.lbl.longB1 = Coeficiente de rozamiento relativo al \u00e1rea total del paraca\u00eddas.
+ParachuteCfg.lbl.longB2 = Un mayor coeficiente de rozamiento genera un valor de descenso m\u00e1s lento. +ParachuteCfg.lbl.longB3 = Un valor t\u00edpico para los paraca\u00eddas es 0,8. +ParachuteCfg.lbl.plus = Localizaci\u00f3n: ParachuteCfg.lbl.plusdelay = Retardo: ParachuteCfg.lbl.seconds = segundos. ParachuteCfg.tab.General = General -ParachuteCfg.tab.Radialpos = Posici\ufffdn radial +ParachuteCfg.tab.Radialpos = Posici\u00f3n radial ParachuteCfg.tab.ttip.General = Propiedades generales -ParachuteCfg.tab.ttip.Radialpos = Configuraci\ufffdn de la posici\ufffdn radial +ParachuteCfg.tab.ttip.Radialpos = Configuraci\u00f3n de la posici\u00f3n radial -PlotConfiguration.Angleofattack = \ufffdngulo de orientaci\ufffdn y ataque vs. Tiempo -PlotConfiguration.Dragcoef = Coeficiente de rozamiento vs. N\ufffdmero Mach +PlotConfiguration.Angleofattack = \u00c1ngulo de orientaci\u00f3n y ataque vs. Tiempo +PlotConfiguration.Dragcoef = Coeficiente de rozamiento vs. N\u00famero Mach PlotConfiguration.Flightside = Perfil lateral de vuelo -PlotConfiguration.Rollcharacteristics = Caracter\ufffdsticas de rotaci\ufffdn -PlotConfiguration.Simulationtime = Simulaci\ufffdn del tiempo de etapa y c\ufffdlculo del tiempo +PlotConfiguration.Rollcharacteristics = Caracter\u00edsticas de rotaci\u00f3n +PlotConfiguration.Simulationtime = Simulaci\u00f3n del tiempo de etapa y c\u00e1lculo del tiempo PlotConfiguration.Stability = Estabilidad vs. Tiempo PlotConfiguration.Totalmotion = Movimiento total vs. Tiempo ! PlotConfiguration @@ -728,12 +727,12 @@ PlotConfiguration.Verticalmotion = Movimiento vertical vs. Tiempo ! PlotDialog PlotDialog.Chart.Simulatedflight = Vuelo simulado PlotDialog.CheckBox.Showdatapoints = Mostrar los datos de los puntos -PlotDialog.lbl.Chart = Arastrar con bot\ufffdn-izq rat\ufffdn para zoom del \ufffdrea. Rueda rat\ufffdn para zoom. Ctrl+rueda rat\ufffdn para zoom eje x. Ctrl+arrastrar con bot\ufffdn-izq rat\ufffdn para desplazar. Arrastrar con bot\ufffdn-der para zoom din\ufffdmico -PlotDialog.title.Flightdataplot = Representaci\ufffdn de los datos de vuelo +PlotDialog.lbl.Chart = Arastrar con bot\u00f3n-izq rat\u00f3n para zoom del \u00e1rea. Rueda rat\u00f3n para zoom. Ctrl+rueda rat\u00f3n para zoom eje x. Ctrl+arrastrar con bot\u00f3n-izq rat\u00f3n para desplazar. Arrastrar con bot\u00f3n-der para zoom din\u00e1mico +PlotDialog.title.Flightdataplot = Representaci\u00f3n de los datos de vuelo PreferencesDialog.languages.default = Idioma por defecto PreferencesDialog.lbl.language = Idioma de la interfaz: -PreferencesDialog.lbl.languageEffect = El idioma cambiar\ufffd la pr\ufffdxima vez que abra OpenRocket. +PreferencesDialog.lbl.languageEffect = El idioma cambiar\u00e1 la pr\u00f3xima vez que abra OpenRocket. PresetModel.lbl.database = Desde la Base de Datos... PresetModel.lbl.select = Prefabricado @@ -741,7 +740,7 @@ PresetModel.lbl.select = Prefabricado PrintDialog.but.previewAndPrint = Vista previa e Imprimir PrintDialog.checkbox.showByStage = Mostrar por etapas PrintDialog.error.preview.desc1 = Imposible abrir vista previa en PDF. -PrintDialog.error.preview.desc2 = Por favor use la opci\ufffdn "Guardar como PDF". +PrintDialog.error.preview.desc2 = Por favor use la opci\u00f3n "Guardar como PDF". PrintDialog.error.preview.title = Imposible abrir la vista previa PrintDialog.lbl.selectElements = Seleccionar elementos a incluir: ! Print dialog @@ -749,37 +748,37 @@ PrintDialog.title = Imprimir o exportar PrintSettingsDialog.but.Close = Cerrar PrintSettingsDialog.but.Reset = Reiniciar -PrintSettingsDialog.lbl.Paperorientation = Orientaci\ufffdn del papel: -PrintSettingsDialog.lbl.Papersize = Tama\ufffdo del papel: +PrintSettingsDialog.lbl.Paperorientation = Orientaci\u00f3n del papel: +PrintSettingsDialog.lbl.Papersize = Tama\u00f1o del papel: PrintSettingsDialog.lbl.Templatebordercolor = Color del borde de la plantilla: PrintSettingsDialog.lbl.Templatefillcolor = Plantilla de colores: !PrintSettingsDialog -PrintSettingsDialog.title = Configuraci\ufffdn de la impresi\ufffdn +PrintSettingsDialog.title = Configuraci\u00f3n de la impresi\u00f3n -RK4SimulationStepper.error.valuesTooLarge = Los valores de la simulaci\ufffdn exceden los l\ufffdmites. Pruebe a seleccionar un intervalo de tiempo m\ufffds corto. +RK4SimulationStepper.error.valuesTooLarge = Los valores de la simulaci\u00f3n exceden los l\u00edmites. Pruebe a seleccionar un intervalo de tiempo m\u00e1s corto. RecoveryConfigurationPanel.table.deployment.default = Por defecto ({0}) -RecoveryDevice.DeployEvent.ALTITUDE = Altura espec\ufffdfica durante el descenso +RecoveryDevice.DeployEvent.ALTITUDE = Altura espec\u00edfica durante el descenso RecoveryDevice.DeployEvent.APOGEE = Apogeo -RecoveryDevice.DeployEvent.CURRENT_STAGE_SEPARATION = Separaci\ufffdn de la etapa actual -RecoveryDevice.DeployEvent.EJECTION = Carga de eyecci\ufffdn de esta etapa +RecoveryDevice.DeployEvent.CURRENT_STAGE_SEPARATION = Separaci\u00f3n de la etapa actual +RecoveryDevice.DeployEvent.EJECTION = Carga de eyecci\u00f3n de esta etapa ! RecoveryDevice RecoveryDevice.DeployEvent.LAUNCH = Lanzamiento (segundos) -RecoveryDevice.DeployEvent.LOWER_STAGE_SEPARATION = Separaci\ufffdn de la etapa anterior +RecoveryDevice.DeployEvent.LOWER_STAGE_SEPARATION = Separaci\u00f3n de la etapa anterior RecoveryDevice.DeployEvent.NEVER = Nunca RecoveryDevice.DeployEvent.short.ALTITUDE = Altitud RecoveryDevice.DeployEvent.short.APOGEE = Apogeo -RecoveryDevice.DeployEvent.short.CURRENT_STAGE_SEPARATION = Separaci\ufffdn de la etapa actual -RecoveryDevice.DeployEvent.short.EJECTION = Carga de eyecci\ufffdn +RecoveryDevice.DeployEvent.short.CURRENT_STAGE_SEPARATION = Separaci\u00f3n de la etapa actual +RecoveryDevice.DeployEvent.short.EJECTION = Carga de eyecci\u00f3n RecoveryDevice.DeployEvent.short.LAUNCH = Lanzamiento -RecoveryDevice.DeployEvent.short.LOWER_STAGE_SEPARATION = Separaci\ufffdn de la etapa anterior +RecoveryDevice.DeployEvent.short.LOWER_STAGE_SEPARATION = Separaci\u00f3n de la etapa anterior RecoveryDevice.DeployEvent.short.NEVER = Nunca RenameConfigDialog.but.reset = Reiniciar al valor por defecto -RenameConfigDialog.lbl.name = Nombre para la configuraci\ufffdn del motor: +RenameConfigDialog.lbl.name = Nombre para la configuraci\u00f3n del motor: ! Rename FlightConfiguration Dialog -RenameConfigDialog.title = Renombrar la configuraci\ufffdn +RenameConfigDialog.title = Renombrar la configuraci\u00f3n Rocket.compname.Rocket = Cohete Sin Nombre !Rocket @@ -796,7 +795,7 @@ RocketActions.DelAct.ttip.Delete = Eliminar elemento seleccionado RocketActions.DelCompAct.Delete = Borrar RocketActions.DelCompAct.ttip.Delete = Borrar el componente seleccionado RocketActions.DelSimuAct.Delete = Borrar -RocketActions.DelSimuAct.ttip.Delete = Borrar la simulaci\ufffdn seleccionada +RocketActions.DelSimuAct.ttip.Delete = Borrar la simulaci\u00f3n seleccionada RocketActions.EditAct.Edit = Editar componente RocketActions.EditAct.ttip.Edit = Editar valores del componente seleccionado RocketActions.MoveDownAct.Movedown = Mover hacia abajo @@ -804,22 +803,22 @@ RocketActions.MoveDownAct.ttip.Movedown = Mover este componente hacia abajo RocketActions.MoveUpAct.Moveup = Mover hacia arriba RocketActions.MoveUpAct.ttip.Moveup = Mover este componente hacia arriba RocketActions.NewStageAct.Newstage = Nueva etapa -RocketActions.NewStageAct.ttip.Newstage = A\ufffdadir una nueva etapa al dise\ufffdo del cohete +RocketActions.NewStageAct.ttip.Newstage = A\u00f1adir una nueva etapa al dise\u00f1o del cohete RocketActions.PasteAct.Paste = Pegar RocketActions.PasteAct.ttip.Paste = Pegar al portapapeles ! RocketActions RocketActions.checkbox.Donotaskmeagain = No volver a preguntarme -RocketActions.lbl.Youcanchangedefop = Puede modificar la operaci\ufffdn por defecto con sus preferencias -RocketActions.showConfirmDialog.lbl1 = \ufffdBorrar las simulaciones seleccionadas? -RocketActions.showConfirmDialog.lbl2 = Esta operaci\ufffdn no puede deshacerse. +RocketActions.lbl.Youcanchangedefop = Puede modificar la operaci\u00f3n por defecto con sus preferencias +RocketActions.showConfirmDialog.lbl1 = \u00bfBorrar las simulaciones seleccionadas? +RocketActions.showConfirmDialog.lbl2 = Esta operaci\u00f3n no puede deshacerse. RocketActions.showConfirmDialog.title = Borrar simulaciones RocketCfg.lbl.Comments = Comentarios: -RocketCfg.lbl.Designer = Dise\ufffdador: +RocketCfg.lbl.Designer = Proyectista: ! RocketConfig RocketCfg.lbl.Designname = Nombre del proyecto: RocketCfg.lbl.Material = Material: -RocketCfg.lbl.Revisionhistory = Hist\ufffdrico de la revisi\ufffdn: +RocketCfg.lbl.Revisionhistory = Hist\u00f3rico de la revisi\u00f3n: RocketCompCfg.border.Foreshoulder = Delantera del acople RocketCompCfg.but.Saveasdefstyle = Guardar como estilo por defecto @@ -830,30 +829,29 @@ RocketCompCfg.checkbox.Overridecenterofgrav = Especificar el CG: RocketCompCfg.checkbox.Overridemass = Especificar la masa: RocketCompCfg.checkbox.OverridemassandCG = Incluir la masa y el CG de todos los subcomponentes RocketCompCfg.checkbox.Usedefaultcolor = Usar color por defecto -RocketCompCfg.combo.ttip.componentmaterialaffects = El peso del componente depender\ufffd del material seleccionado. +RocketCompCfg.combo.ttip.componentmaterialaffects = El material del componente afecta su peso. RocketCompCfg.lbl.Choosecolor = Elija color RocketCompCfg.lbl.Commentsonthe = Comentarios sobre -RocketCompCfg.lbl.Complinestyle = Estilo de l\ufffdnea del componente: +RocketCompCfg.lbl.Complinestyle = Estilo de l\u00ednea del componente: RocketCompCfg.lbl.Componentcolor = Color del componente: RocketCompCfg.lbl.Componentfinish = Acabado: RocketCompCfg.lbl.Componentmass = Masa del componente: RocketCompCfg.lbl.Componentmaterial = Material del componente: ! RocketComponentConfig RocketCompCfg.lbl.Componentname = Nombre del componente: -RocketCompCfg.lbl.Diameter = Di\ufffdmetro: +RocketCompCfg.lbl.Diameter = Di\u00e1metro: RocketCompCfg.lbl.Figurestyle = Estilo de dibujo: RocketCompCfg.lbl.Length = Longitud: RocketCompCfg.lbl.Mass = Masa: RocketCompCfg.lbl.Overridemassorcenter = Especificar la masa y el CG del componente RocketCompCfg.lbl.Thickness = Espesor: -RocketCompCfg.lbl.longA1 = El Coeficiente de rozamiento depender\ufffd del acabado del componente.
+RocketCompCfg.lbl.longA1 = El acabado del componente afecta a su coeficiente de rozamiento.
RocketCompCfg.lbl.longA2 = El valor indicado es el promedio de la rugosidad en altura de la superficie. RocketCompCfg.lbl.longB1 = En la masa especificada no se incluye la de los motores.
RocketCompCfg.lbl.longB2 = El CG se mide desde el extremo frontal del componente RocketCompCfg.lbl.overriddenby = (Elegido por RocketCompCfg.lbl.overriddento = (Elegido para -RocketCompCfg.lbl.ttip.componentmaterialaffects = El material seleccionado para el componente afectar\ufffd a la masa total del modelo. -RocketCompCfg.tab.Appearance = Apariencia +RocketCompCfg.lbl.ttip.componentmaterialaffects = El material del componente afecta a la masa total del modelo. RocketCompCfg.tab.Comment = Comentarios RocketCompCfg.tab.Figstyleopt = Opciones de estilo de la figura RocketCompCfg.tab.Figure = Estilo @@ -862,11 +860,11 @@ RocketCompCfg.tab.Override = Masa y CG RocketCompCfg.tab.Specifyacomment = Especifique un comentario para el componente RocketCompCfg.title.Aftshoulder = Trasera del acople RocketCompCfg.title.Noseconeshoulder = Acople de la ojiva -RocketCompCfg.ttip.Endcapped = Si el extremo del soporte est\ufffd truncado. +RocketCompCfg.ttip.Endcapped = Si el extremo del soporte est\u00e1 truncado. RocketCompCfg.ttip.Thecomponentname = El nombre del componente. RocketComponent.Position.ABSOLUTE = Extremo de la ojiva -RocketComponent.Position.AFTER = Despu\ufffds del componente +RocketComponent.Position.AFTER = Despu\u00e9s del componente RocketComponent.Position.BOTTOM = Extremo inferior del componente RocketComponent.Position.MIDDLE = Parte media del componente ! RocketComponent @@ -874,9 +872,9 @@ RocketComponent.Position.TOP = Parte superior del componente RocketInfo.Apogee = Apogeo: RocketInfo.Calculating = Calculando... -RocketInfo.Mach = , (N\ufffdmero Mach: -RocketInfo.Maxacceleration = Aceleraci\ufffdn M\ufffdx.: -RocketInfo.Maxvelocity = Velocidad M\ufffdx.: +RocketInfo.Mach = , (N\u00famero Mach: +RocketInfo.Maxacceleration = Aceleraci\u00f3n M\u00e1x.: +RocketInfo.Maxvelocity = Velocidad M\u00e1x.: RocketInfo.Warning = Peligro, cohete inestable. RocketInfo.accelerationValue = N/A RocketInfo.apogeeValue = N/A @@ -885,7 +883,7 @@ RocketInfo.cgText = CG: RocketInfo.cpText = CP: ! RocketInfo RocketInfo.lengthLine.Length = Longitud: -RocketInfo.lengthLine.maxdiameter = , Di\ufffdmetro m\ufffdximo: +RocketInfo.lengthLine.maxdiameter = , Di\u00e1metro m\u00e1ximo: RocketInfo.massText1 = Masa con motores: RocketInfo.massText2 = Masa sin motores: RocketInfo.stabText = Estabilidad: @@ -897,74 +895,73 @@ RocketPanel.FigTypeAct.Finished = Acabado en 3D ! RocketPanel RocketPanel.FigTypeAct.Sideview = Vista lateral RocketPanel.FigTypeAct.Unfinished = Sin acabado en 3D -RocketPanel.FigTypeAct.ttip.Backview = Vista desde atr\ufffds +RocketPanel.FigTypeAct.ttip.Backview = Vista desde atr\u00e1s RocketPanel.FigTypeAct.ttip.Sideview = Vista desde un lateral RocketPanel.FigViewAct.2D = Vista 2D RocketPanel.FigViewAct.3D = Vista 3D RocketPanel.FigViewAct.ttip.2D = Vista en 2D RocketPanel.FigViewAct.ttip.3D = Vista en 3D RocketPanel.but.FlightcfgEdit = Editar -RocketPanel.lbl.Flightcfg = Configuraci\ufffdn del motor: -RocketPanel.lbl.Motorcfg = Configuraci\ufffdn del motor -RocketPanel.lbl.ViewType = Tipo de vista: -RocketPanel.lbl.infoMessage = Click para seleccionar componente.    May\ufffdsculas+click para seleccionar otro.    Doble-click para mostrar configuraci\ufffdn del componente.    Click+arrastrar para mover componente. +RocketPanel.lbl.Flightcfg = Configuraci\u00f3n del motor: +RocketPanel.lbl.Motorcfg = Configuraci\u00f3n del motor +RocketPanel.lbl.infoMessage = Click para seleccionar componente.    May\u00fasculas+click para seleccionar otro.    Doble-click para mostrar configuraci\u00f3n del componente.    Click+arrastrar para mover componente. ScaleDialog.button.scale = Dimensionar ScaleDialog.checkbox.scaleMass = Actualizar valores de Masa especificada ScaleDialog.checkbox.scaleMass.ttip = Dimensionar la Masa del componente y recalcular los valores de Masa por el cubo del factor de la escala ScaleDialog.lbl.scale = Dimensionar: -ScaleDialog.lbl.scale.ttip = Indique si desea dimensionar el dise\ufffdo completo o s\ufffdlo los componentes seleccionados +ScaleDialog.lbl.scale.ttip = Indique si desea dimensionar el dise\u00f1o completo o s\u00f3lo los componentes seleccionados ! The scaleFrom/scaleTo pair creates a phrase "Scale from [...] to [...]" ScaleDialog.lbl.scaleFrom = Dimensionar desde -ScaleDialog.lbl.scaleFromTo.ttip = Definir la dimensi\ufffdn en base a una longitud conocida u original. +ScaleDialog.lbl.scaleFromTo.ttip = Definir la dimensi\u00f3n en base a una longitud conocida u original. ! Scale dialog ScaleDialog.lbl.scaleRocket = El cohete entero -ScaleDialog.lbl.scaleSelection = S\ufffdlo el componente seleccionado +ScaleDialog.lbl.scaleSelection = S\u00f3lo el componente seleccionado ScaleDialog.lbl.scaleSubselection = Todos los componentes seleccionados ScaleDialog.lbl.scaleTo = hasta -ScaleDialog.lbl.scaling = Dimensi\ufffdn: -ScaleDialog.lbl.scaling.ttip = Tama\ufffdo resultante, valores por encima del 100% aumentan el tama\ufffdo, y valores por debajo de 100% reduce el dise\ufffdo. -ScaleDialog.title = Dimensi\ufffdn del dise\ufffdo +ScaleDialog.lbl.scaling = Dimensi\u00f3n: +ScaleDialog.lbl.scaling.ttip = Tama\u00f1o resultante, valores por encima del 100% aumentan el tama\u00f1o, y valores por debajo de 100% reduce el dise\u00f1o. +ScaleDialog.title = Dimensi\u00f3n del dise\u00f1o ScaleDialog.undo.scaleComponent = Dimensionar el componente ScaleDialog.undo.scaleComponents = Dimensionar los componentes ScaleDialog.undo.scaleRocket = Dimensionar el cohete SeparationConfigurationPanel.table.separation.default = Por defecto ({0}) -SeparationSelectionDialog.opt.default = Cambiar todas las configuraciones utilizando el evento de separaci\ufffdn por defecto -SeparationSelectionDialog.opt.override = Ignorar s\ufffdlo para la configuraci\ufffdn del vuelo {0} -SeparationSelectionDialog.opt.title = Configuraciones del vuelo que se ver\ufffdn afectadas: +SeparationSelectionDialog.opt.default = Cambiar todas las configuraciones utilizando el evento de separaci\u00f3n por defecto +SeparationSelectionDialog.opt.override = Ignorar s\u00f3lo para la configuraci\u00f3n del vuelo {0} +SeparationSelectionDialog.opt.title = Configuraciones del vuelo que se ver\u00e1n afectadas: ! Shape -Shape.Conical = C\ufffdnica -Shape.Conical.desc1 = Una ojiva c\ufffdnica de perfil triangular -Shape.Conical.desc2 = Transici\ufffdn c\ufffdnica de lados rectos -Shape.Ellipsoid = El\ufffdptica -Shape.Ellipsoid.desc1 = Ojiva con perfil de media elipse. Por defecto, una elipse de longitud igual al triple de su di\ufffdmetro. -Shape.Ellipsoid.desc2 = Transici\ufffdn con perfil de media elipse. Por defecto, una elipse de longitud igual al triple de su di\ufffdmetro. +Shape.Conical = C\u00f3nica +Shape.Conical.desc1 = Una ojiva c\u00f3nica de perfil triangular +Shape.Conical.desc2 = Transici\u00f3n c\u00f3nica de lados rectos +Shape.Ellipsoid = El\u00edptica +Shape.Ellipsoid.desc1 = Ojiva con perfil de media elipse. Por defecto, una elipse de longitud igual al triple de su di\u00e1metro. +Shape.Ellipsoid.desc2 = Transici\u00f3n con perfil de media elipse. Por defecto, una elipse de longitud igual al triple de su di\u00e1metro. Shape.Haackseries = Series Haack -Shape.Haackseries.desc1 = Ojiva con perfil de m\ufffdnimo arrastre aerodin\ufffdmico recomendado para vuelos supers\ufffdnicos. Un valor de forma igual a 0 produce una Ojiva LD Haack u Ojiva Von Karman que minimiza el arrastre aerodin\ufffdmico para una determinada longitud y di\ufffdmetro de la base, mientras que un valor igual a 0.333 produce una Ojiva LV-Haack que minimiza el arrastre aerodin\ufffdmico para una determinada longitud y volumen de la ojiva. -Shape.Haackseries.desc2 = Las transiciones Haack est\ufffdn dise\ufffdadas para minimizar el arrastre aerodin\ufffdmico. Estas transiciones poseen sus equivalentes, pero no necesariamente producen un arrastre \ufffdptimo. Un valor de forma 0 produce una transici\ufffdn LD-Haack o Von Karman, mientras que un valor de 0.333 produce una forma LV-Haack. +Shape.Haackseries.desc1 = Ojiva con perfil de m\u00ednimo arrastre aerodin\u00e1mico recomendado para vuelos supers\u00f3nicos. Un valor de forma igual a 0 produce una Ojiva LD Haack u Ojiva Von Karman que minimiza el arrastre aerodin\u00e1mico para una determinada longitud y di\u00e1metro de la base, mientras que un valor igual a 0.333 produce una Ojiva LV-Haack que minimiza el arrastre aerodin\u00e1mico para una determinada longitud y volumen de la ojiva. +Shape.Haackseries.desc2 = Las transiciones Haack est\u00e1n dise\u00f1adas para minimizar el arrastre aerodin\u00e1mico. Estas transiciones poseen sus equivalentes, pero no necesariamente producen un arrastre \u00f3ptimo. Un valor de forma 0 produce una transici\u00f3n LD-Haack o Von Karman, mientras que un valor de 0.333 produce una forma LV-Haack. Shape.Ogive = Ojival -Shape.Ogive.desc1 = Ojiva con perfil de arco de circunferencia. Un valor de forma igual a 1 produce una Ojiva tangente, mientras que un valor inferior a 1 produce una Ojiva secante con un perfil m\ufffds afilado. -Shape.Ogive.desc2 = Transici\ufffdn con perfil de arco de circunferencia. Un valor de forma igual a 1 produce una Transici\ufffdn tangente, mientras que un valor inferior a 1 produce una Transici\ufffdn secante con un perfil m\ufffds afilado. -Shape.Parabolicseries = Serie parab\ufffdlica -Shape.Parabolicseries.desc1 = Ojiva con perfil de arco de par\ufffdbola. Un valor de forma igual a 1 produce una Ojiva tangente, un valor igual a 0.75 produce una par\ufffdbola de 3/4, un valor igual a 0.5 produce una par\ufffdbola de 1/2, y un valor igual a 0 produce un perfil recto u Ojiva c\ufffdnica. -Shape.Parabolicseries.desc2 = Una transici\ufffdn de serie parab\ufffdlica tiene un perfil de par\ufffdbola. El valor de forma define el tipo de par\ufffdbola a utilizar. Un valor de forma de 1.0 produce una par\ufffdbola completa que es tangente al cuerpo tubular en el extremo trasero, un valor de 0.75 produce una par\ufffdbola de 3/4, un valor de 0.5 produce una par\ufffdbola de 1/2, y un valor de 0 produce una transici\ufffdn c\ufffdnica. +Shape.Ogive.desc1 = Ojiva con perfil de arco de circunferencia. Un valor de forma igual a 1 produce una Ojiva tangente, mientras que un valor inferior a 1 produce una Ojiva secante con un perfil m\u00e1s afilado. +Shape.Ogive.desc2 = Transici\u00f3n con perfil de arco de circunferencia. Un valor de forma igual a 1 produce una Transici\u00f3n tangente, mientras que un valor inferior a 1 produce una Transici\u00f3n secante con un perfil m\u00e1s afilado. +Shape.Parabolicseries = Serie parab\u00f3lica +Shape.Parabolicseries.desc1 = Ojiva con perfil de arco de par\u00e1bola. Un valor de forma igual a 1 produce una Ojiva tangente, un valor igual a 0.75 produce una par\u00e1bola de 3/4, un valor igual a 0.5 produce una par\u00e1bola de 1/2, y un valor igual a 0 produce un perfil recto u Ojiva c\u00f3nica. +Shape.Parabolicseries.desc2 = Una transici\u00f3n de serie parab\u00f3lica tiene un perfil de par\u00e1bola. El valor de forma defien el tipo de par\u00e1bola a utilizar. Un valor de forma de 1.0 produce una par\u00e1bola completa que es tangente al cuerpo tubular en el extremo trasero, un valor de 0.75 produce una par\u00e1bola de 3/4, un valor de 0.5 produce una par\u00e1bola de 1/2, y un valor de 0 produce una transici\u00f3n c\u00f3nica. Shape.Powerseries = Serie potencial -Shape.Powerseries.desc1 = Ojiva cuyo perfil es una curva obtenida a partir de una funci\ufffdn potencial f(x)k. Un valor de forma k=0.5 produce una ojiva con perfil de par\ufffdbola, para k=0.75 se produce una ojiva con perfil potencial, y para k=1 se produce una ojiva con perfil recto u Ojiva c\ufffdnica. -Shape.Powerseries.desc2 = Transici\ufffdn cuyo perfil es una curva obtenida a partir de una funci\ufffdn potencial de Radio  =; (x / L)k donde k es el par\ufffdmetro de forma. Para k=0.5 la transici\ufffdn es \ufffd-potencial o parab\ufffdlica, para k=0.75 a \ufffd-potencia, y para k=1 c\ufffdnica. +Shape.Powerseries.desc1 = Ojiva cuyo perfil es una curva obtenida a partir de una funci\u00f3n potencial f(x)k. Un valor de forma k=0.5 produce una ojiva con perfil de par\u00e1bola, para k=0.75 se produce una ojiva con perfil potencial, y para k=1 se produce una ojiva con perfil recto u Ojiva c\u00f3nica. +Shape.Powerseries.desc2 = Transici\u00f3n cuyo perfil es una curva obtenida a partir de una funci\u00f3n potencial de Radio  =; (x / L)k donde k es el par\u00e1metro de forma. Para k=0.5 la transici\u00f3n es \u00bd-potencial o parab\u00f3lica, para k=0.75 a \u00be-potencia, y para k=1 c\u00f3nica. ! ShockCord -ShockCord.ShockCord = Tirante de sujeci\ufffdn +ShockCord.ShockCord = Tirante de sujeci\u00f3n -ShockCordCfg.lbl.Packeddiam = Di\ufffdmetro del empaquetado: +ShockCordCfg.lbl.Packeddiam = Di\u00e1metro del empaquetado: ShockCordCfg.lbl.Packedlength = Longitud del empaquetado: -ShockCordCfg.lbl.Posrelativeto = Posici\ufffdn relativa a: +ShockCordCfg.lbl.Posrelativeto = Posici\u00f3n relativa a: ! ShockCordConfig -ShockCordCfg.lbl.Shockcordlength = Longitud del tirante de sujeci\ufffdn -ShockCordCfg.lbl.Shockcordmaterial = Material del tirante de sujeci\ufffdn: -ShockCordCfg.lbl.plus = Localizaci\ufffdn: +ShockCordCfg.lbl.Shockcordlength = Longitud del tirante de sujeci\u00f3n +ShockCordCfg.lbl.Shockcordmaterial = Material del tirante de sujeci\u00f3n: +ShockCordCfg.lbl.plus = Localizaci\u00f3n: ShockCordCfg.tab.General = General ShockCordCfg.tab.ttip.General = Propiedades generales @@ -974,41 +971,40 @@ SimExpPan.ExportingVar.desc1 = Exportar variables SimExpPan.ExportingVar.desc2 = Exportar SimExpPan.ExportingVar.desc3 = variables de SimExpPan.Fileexists.desc1 = Archivo " -SimExpPan.Fileexists.desc2 = " ya existe. \ufffdDesea sobrescribirlo? +SimExpPan.Fileexists.desc2 = " ya existe. \u00bfDesea sobrescribirlo? SimExpPan.Fileexists.title = El archivo ya existe SimExpPan.border.Comments = Comentarios SimExpPan.border.Fieldsep = Separador de campo -SimExpPan.border.Stage = Etapa a exportar SimExpPan.border.Vartoexport = Variables para exportar SimExpPan.but.Exporttofile = Exportar al documento ... SimExpPan.but.Selectall = Seleccionar todo SimExpPan.but.Selectnone = No seleccionar nada SimExpPan.checkbox.Incflightevents = Incluir los eventos del vuelo. SimExpPan.checkbox.Includefielddesc = Incluir descripciones del campo. -SimExpPan.checkbox.Includesimudesc = Incluir descripci\ufffdn de la simulaci\ufffdn. -SimExpPan.checkbox.ttip.Incflightevents = Incluye una l\ufffdnea de comentario para cada evento del vuelo -SimExpPan.checkbox.ttip.Includefielddesc = Incluye una l\ufffdnea de comentario con las descripciones de las variables exportadas. -SimExpPan.checkbox.ttip.Includesimudesc = Incluye un comentario en el inicio del documento describiendo la simulaci\ufffdn. +SimExpPan.checkbox.Includesimudesc = Incluir descripci\u00f3n de la simulaci\u00f3n. +SimExpPan.checkbox.ttip.Incflightevents = Incluye una l\u00ednea de comentario para cada evento del vuelo +SimExpPan.checkbox.ttip.Includefielddesc = Incluye una l\u00ednea de comentario con las descripciones de las variables exportadas. +SimExpPan.checkbox.ttip.Includesimudesc = Incluye un comentario en el inicio del documento describiendo la simulaci\u00f3n. ! SimulationExportPanel SimExpPan.desc = Documentos separados por comas (*.csv) SimExpPan.lbl.Commentchar = Caracter de comentario: SimExpPan.lbl.Fieldsepstr = Caracter separador de campo: SimExpPan.lbl.longA1 = Caracter para separar campos en el documento exportado.
SimExpPan.lbl.longA2 = Para valores separados en archivo (CSV) use comas ','. -SimExpPan.lbl.ttip.Commentchar = Caracter\ufffdsticas que marcan una l\ufffdnea de comentario. +SimExpPan.lbl.ttip.Commentchar = Caracter\u00edsticas que marcan una l\u00ednea de comentario. SimuRunDlg.lbl.Altitude = Altitud: SimuRunDlg.lbl.Running = Ejecutando... -SimuRunDlg.lbl.Simutime = Duraci\ufffdn de la simulaci\ufffdn: +SimuRunDlg.lbl.Simutime = Duraci\u00f3n de la simulaci\u00f3n: SimuRunDlg.lbl.Velocity = Velocidad: -SimuRunDlg.msg.AnException1 = Ha ocurrido una excepci\ufffdn durante la simulaci\ufffdn: +SimuRunDlg.msg.AnException1 = Ha ocurrido una excepci\u00f3n durante la simulaci\u00f3n: SimuRunDlg.msg.AnException2 = Por favor anote esto debajo como un error con todos los detalles. -SimuRunDlg.msg.AssertionError1 = Se ha producido un error de c\ufffdlculo durante la simulaci\ufffdn. +SimuRunDlg.msg.AssertionError1 = Se ha producido un error de c\u00e1lculo durante la simulaci\u00f3n. SimuRunDlg.msg.AssertionError2 = Por favor anote esto debajo como un error con todos los detalles. SimuRunDlg.msg.Unabletosim = Incapaz de simular: -SimuRunDlg.msg.errorOccurred = Ha ocurrido un error durante la simulaci\ufffdn: -SimuRunDlg.msg.unknownerror1 = Se ha detectado un error desconocido durante la simulaci\ufffdn. -SimuRunDlg.msg.unknownerror2 = El programa puede ser inestable, Guarde todos sus dise\ufffdos y reinicie OpenRocket +SimuRunDlg.msg.errorOccurred = Ha ocurrido un error durante la simulaci\u00f3n: +SimuRunDlg.msg.unknownerror1 = Se ha detectado un error desconocido durante la simulaci\u00f3n. +SimuRunDlg.msg.unknownerror2 = El programa puede ser inestable, Guarde todos sus dise\u00f1os y reinicie OpenRocket ! SimulationRunDialog SimuRunDlg.title.RunSim = Ejecutar simulaciones @@ -1018,112 +1014,112 @@ SimulationEditDialog.btn.plot = Grafiar SimulationEditDialog.btn.simulate = Simular SimulationEditDialog.btn.simulateAndPlot = Simular y Grafiar -SimulationModifierTree.OptimizationParameters = Optimizaci\ufffdn de par\ufffdmetros +SimulationModifierTree.OptimizationParameters = Optimizaci\u00f3n de par\u00e1metros -SimulationPlotPanel.error.noPlotSelected = Por favor agregue una o m\ufffds variables para el eje Y de la gr\ufffdfica. -SimulationPlotPanel.error.noPlotSelected.title = No se puede construir un gr\ufffdfico +SimulationPlotPanel.error.noPlotSelected = Por favor agregue una o m\u00e1s variables para el eje Y de la gr\u00e1fica. +SimulationPlotPanel.error.noPlotSelected.title = No se puede construir un gr\u00e1fico Sleeve.Sleeve = Manguito SleeveCfg.tab.General = General SleeveCfg.tab.Generalproperties = Propiedades generales -SleeveCfg.tab.Innerdiam = Di\ufffdmetro interior: +SleeveCfg.tab.Innerdiam = Di\u00e1metro interior: SleeveCfg.tab.Length = Longitud: !SleeveConfig -SleeveCfg.tab.Outerdiam = Di\ufffdmetro exterior: +SleeveCfg.tab.Outerdiam = Di\u00e1metro exterior: SleeveCfg.tab.Wallthickness = Espesor de la pared: SlideShowDialog.btn.next = Siguiente SlideShowDialog.btn.prev = Anterior -SlideShowLinkListener.error.msg = Lo sentimos, la Visita seleccionada a\ufffdn no se ha redactado. +SlideShowLinkListener.error.msg = Lo sentimos, la Visita seleccionada a\u00fan no se ha redactado. SlideShowLinkListener.error.title = Visita guiada no encontrada StabilityParameter.name = Estabilidad Stage.SeparationEvent.BURNOUT = Apagado del motor de la etapa actual -Stage.SeparationEvent.EJECTION = Carga de eyecci\ufffdn de la etapa actual -Stage.SeparationEvent.IGNITION = Ignici\ufffdn del motor de la etapa actual +Stage.SeparationEvent.EJECTION = Carga de eyecci\u00f3n de la etapa actual +Stage.SeparationEvent.IGNITION = Ignici\u00f3n del motor de la etapa actual Stage.SeparationEvent.LAUNCH = Lanzamiento Stage.SeparationEvent.NEVER = Nunca -Stage.SeparationEvent.UPPER_IGNITION = Ignici\ufffdn del motor de la etapa superior +Stage.SeparationEvent.UPPER_IGNITION = Ignici\u00f3n del motor de la etapa superior !Stage Stage.Stage = Etapa ! StageAction StageAction.Stage = Etapa -StageConfig.separation.lbl.plus = m\ufffds +StageConfig.separation.lbl.plus = m\u00e1s StageConfig.separation.lbl.seconds = segundos -StageConfig.separation.lbl.title = Seleccione el instante de separaci\ufffdn de esta etapa: +StageConfig.separation.lbl.title = Seleccione el instante de separaci\u00f3n de esta etapa: !StageConfig -StageConfig.tab.Separation = Separaci\ufffdn -StageConfig.tab.Separation.ttip = Opciones de separaci\ufffdn de etapa +StageConfig.tab.Separation = Separaci\u00f3n +StageConfig.tab.Separation.ttip = Opciones de separaci\u00f3n de etapa StorageOptChooser.checkbox.Compfile = Archivo comprimido -StorageOptChooser.lbl.Estfilesize = Estimaci\ufffdn del tama\ufffdo del archivo: +StorageOptChooser.lbl.Estfilesize = Estimaci\u00f3n del tama\u00f1o del archivo: StorageOptChooser.lbl.Saveopt = Guardar opciones ! StorageOptionChooser StorageOptChooser.lbl.Simdatatostore = Datos de las simulaciones a guardar: -StorageOptChooser.lbl.UsingComp = Usando la compresi\ufffdn reducimos el tama\ufffdo de los archivos. +StorageOptChooser.lbl.UsingComp = Usando la compresi\u00f3n reducimos el tama\u00f1o de los archivos. StorageOptChooser.lbl.longA1 = Almacenar todos los datos simulados.
StorageOptChooser.lbl.longA2 = Esto puede generar archivos muy grandes -StorageOptChooser.lbl.longB1 = Almacenar los valores de impresi\ufffdn de este apartado.
-StorageOptChooser.lbl.longB2 = Genera valores grandes en archivos m\ufffds peque\ufffdos. -StorageOptChooser.lbl.longC1 = Almacenar s\ufffdlo los valores en la tabla resumen.
-StorageOptChooser.lbl.longC2 = Estos resultados se guardan en archivos mas peque\ufffdos. -StorageOptChooser.lbl.longD1 = Con las opciones actuales puede realizarse una estamci\ufffdn del tama\ufffdo final del archivo. +StorageOptChooser.lbl.longB1 = Almacenar los valores de impresi\u00f3n de este apartado.
+StorageOptChooser.lbl.longB2 = Genera valores grandes en archivos m\u00e1s peque\u00f1os. +StorageOptChooser.lbl.longC1 = Almacenar s\u00f3lo los valores en la tabla resumen.
+StorageOptChooser.lbl.longC2 = Estos resultados se guardan en archivos mas peque\u00f1os. +StorageOptChooser.lbl.longD1 = Con las opciones actuales puede realizarse una estamci\u00f3n del tama\u00f1o final del archivo. StorageOptChooser.lbl.seconds = Segundos StorageOptChooser.rdbut.Allsimdata = Todos los datos simulados StorageOptChooser.rdbut.Every = Todo -StorageOptChooser.rdbut.Onlyprimfig = S\ufffdlo figuras principales +StorageOptChooser.rdbut.Onlyprimfig = S\u00f3lo figuras principales StorageOptChooser.ttip.Saveopt = Guardar opciones Streamer.Streamer = Banderola StreamerCfg.but.Reset = Reiniciar -StreamerCfg.combo.ttip.MaterialModel = El peso del componente depender\ufffd del material seleccionado. +StreamerCfg.combo.ttip.MaterialModel = El material del componente afecta a su peso. StreamerCfg.lbl.Altitude = Altitud: -StreamerCfg.lbl.Aspectratio = Relaci\ufffdn de aspecto: -StreamerCfg.lbl.Automatic = Autom\ufffdtico +StreamerCfg.lbl.Aspectratio = Relaci\u00f3n de aspecto: +StreamerCfg.lbl.Automatic = Autom\u00e1tico StreamerCfg.lbl.Deploysat = Despliegue en: StreamerCfg.lbl.Material = Material: -StreamerCfg.lbl.Packeddiam = Di\ufffdmetro de empaquetado: +StreamerCfg.lbl.Packeddiam = Di\u00e1metro de empaquetado: StreamerCfg.lbl.Packedlength = Longitud de empaquetado: -StreamerCfg.lbl.Posrelativeto = Posici\ufffdn relativa a: -StreamerCfg.lbl.Radialdirection = Direcci\ufffdn radial: +StreamerCfg.lbl.Posrelativeto = Posici\u00f3n relativa a: +StreamerCfg.lbl.Radialdirection = Direcci\u00f3n radial: StreamerCfg.lbl.Radialdistance = Distancia radial: -StreamerCfg.lbl.Striparea = \ufffdrea de la cinta: +StreamerCfg.lbl.Striparea = \u00c1rea de la cinta: ! StreamerConfig StreamerCfg.lbl.Striplength = Longitud de la cinta: StreamerCfg.lbl.Stripwidth = Ancho de la cinta: StreamerCfg.lbl.longA1 = Coeficiente de rozamiento CD: -StreamerCfg.lbl.longB1 = Coeficiente de rozamiento relativo al \ufffdrea total de la banderola.
-StreamerCfg.lbl.longB2 = Un mayor Coeficiente de rozamiento genera un valor de descenso m\ufffds lento. -StreamerCfg.lbl.longC1 = El Coeficiente de rozamiento depende del \ufffdrea de la banderola. -StreamerCfg.lbl.plus = Localizaci\ufffdn: +StreamerCfg.lbl.longB1 = Coeficiente de rozamiento relativo al \u00e1rea total de la banderola.
+StreamerCfg.lbl.longB2 = Un mayor coeficiente de rozamiento genera un valor de descenso m\u00e1s lento. +StreamerCfg.lbl.longC1 = El coeficiente de rozamiento depende del \u00e1rea de la banderola. +StreamerCfg.lbl.plus = Localizaci\u00f3n: StreamerCfg.lbl.plusdelay = Retardo: StreamerCfg.lbl.seconds = segundos. StreamerCfg.tab.General = General -StreamerCfg.tab.Radialpos = Posici\ufffdn radial +StreamerCfg.tab.Radialpos = Posici\u00f3n radial StreamerCfg.tab.ttip.General = Propiedades generales -StreamerCfg.tab.ttip.Radialpos = Configuraci\ufffdn de posici\ufffdn radial +StreamerCfg.tab.ttip.Radialpos = Configuraci\u00f3n de posici\u00f3n radial -TCMotorSelPan.Diameter = Di\ufffdmetro +TCMotorSelPan.Diameter = Di\u00e1metro TCMotorSelPan.Length = Longitud TCMotorSelPan.MotorMountDimensions = Dimensiones del porta motor: TCMotorSelPan.MotorSize = Dimensiones del motor TCMotorSelPan.SHOW_DESCRIPTIONS.desc1 = Mostrar todos los motores -TCMotorSelPan.SHOW_DESCRIPTIONS.desc2 = Mostrar motores con di\ufffdmetro inferior al del tubo porta motor -TCMotorSelPan.SHOW_DESCRIPTIONS.desc3 = Mostrar motores con di\ufffdmetro igual al del tubo porta motor +TCMotorSelPan.SHOW_DESCRIPTIONS.desc2 = Mostrar motores con di\u00e1metro inferior al del tubo porta motor +TCMotorSelPan.SHOW_DESCRIPTIONS.desc3 = Mostrar motores con di\u00e1metro igual al del tubo porta motor TCMotorSelPan.btn.checkAll = Seleccionar todos TCMotorSelPan.btn.checkNone = Eliminar todos TCMotorSelPan.btn.close = Cerrar TCMotorSelPan.btn.details = Mostrar detalles TCMotorSelPan.btn.filter = Filtar motores TCMotorSelPan.checkbox.hideSimilar = Borrar las curvas similares -TCMotorSelPan.checkbox.hideUsed = Ocultar los motores que ya est\ufffdn instalados -TCMotorSelPan.checkbox.limitdiameter = Limitar el di\ufffdmetro de motor al di\ufffdmetro del porta motor +TCMotorSelPan.checkbox.hideUsed = Ocultar los motores que ya est\u00e1n instalados +TCMotorSelPan.checkbox.limitdiameter = Limitar el di\u00e1metro de motor al di\u00e1metro del porta motor TCMotorSelPan.checkbox.limitlength = Limitar la longitud del motor a la longitud del porta motor TCMotorSelPan.delayBox.None = Ninguno TCMotorSelPan.equalsIgnoreCase.None = Ninguno @@ -1131,32 +1127,32 @@ TCMotorSelPan.lbl.Avgthrust = Empuje medio: TCMotorSelPan.lbl.Burntime = Tiempo de quemado: TCMotorSelPan.lbl.Datapoints = Muestras de la curva: TCMotorSelPan.lbl.Digest = Resumen: -TCMotorSelPan.lbl.Ejectionchargedelay = Retardo de la carga de eyecci\ufffdn: +TCMotorSelPan.lbl.Ejectionchargedelay = Retardo de la carga de eyecci\u00f3n: TCMotorSelPan.lbl.Emptymass = Masa carcasa: TCMotorSelPan.lbl.Launchmass = Masa total: -TCMotorSelPan.lbl.Maxthrust = Empuje m\ufffdximo: -TCMotorSelPan.lbl.Motormountdia = Di\ufffdmetro del porta motor: +TCMotorSelPan.lbl.Maxthrust = Empuje m\u00e1ximo: +TCMotorSelPan.lbl.Motormountdia = Di\u00e1metro del portamotor: TCMotorSelPan.lbl.NumberofsecondsorNone = (segundos) TCMotorSelPan.lbl.Search = Buscar: TCMotorSelPan.lbl.Selectthrustcurve = Seleccione curva de empuje: ! ThrustCurveMotorSelectionPanel TCMotorSelPan.lbl.Selrocketmotor = Seleccione el motor del cohete: TCMotorSelPan.lbl.Totalimpulse = Impulso total: -TCMotorSelPan.noDescription = No hay una descripci\ufffdn disponible +TCMotorSelPan.noDescription = No hay una descripci\u00f3n disponible TCMotorSelPan.title.Thrust = Empuje TCMotorSelPan.title.Thrustcurve = Curva de empuje: TCurveMotor.ttip.avgThrust = Empuje medio: TCurveMotor.ttip.burnTime = Tiempo de quemado: -TCurveMotor.ttip.diameter = Di\ufffdmetro: +TCurveMotor.ttip.diameter = Di\u00e1metro: TCurveMotor.ttip.emptyMass = Masa del motor sin propulsor: TCurveMotor.ttip.launchMass = Masa en el despegue: TCurveMotor.ttip.length = Longitud: -TCurveMotor.ttip.maxThrust = Empuje m\ufffdximo: +TCurveMotor.ttip.maxThrust = Empuje m\u00e1ximo: TCurveMotor.ttip.totalImpulse = Impulso total: -TCurveMotorCol.DESIGNATION = Designaci\ufffdn -TCurveMotorCol.DIAMETER = Di\ufffdmetro +TCurveMotorCol.DESIGNATION = Designaci\u00f3n +TCurveMotorCol.DIAMETER = Di\u00e1metro TCurveMotorCol.LENGTH = Longitud ! ThrustCurveMotorColumns TCurveMotorCol.MANUFACTURER = Fabricante @@ -1170,26 +1166,26 @@ TextureWrap.Sticker = Pegatina aislada ThicknessRingCompCfg.tab.General = General ThicknessRingCompCfg.tab.Generalprop = Propiedades generales -ThicknessRingCompCfg.tab.Innerdiam = Di\ufffdmetro Interior: +ThicknessRingCompCfg.tab.Innerdiam = Di\u00e1metro Interior: ThicknessRingCompCfg.tab.Length = Longitud: ! ThicknessRingComponentConfig -ThicknessRingCompCfg.tab.Outerdiam = Di\ufffdmetro exterior: +ThicknessRingCompCfg.tab.Outerdiam = Di\u00e1metro exterior: ThicknessRingCompCfg.tab.Wallthickness = Espesor de la pared: TotalFlightTimeParameter.name = Tiempo total de vuelo ! Transition -Transition.Transition = Transici\ufffdn +Transition.Transition = Transici\u00f3n -TransitionCfg.checkbox.Automatic = Autom\ufffdtico +TransitionCfg.checkbox.Automatic = Autom\u00e1tico TransitionCfg.checkbox.Clipped = Acortado -TransitionCfg.checkbox.Filled = S\ufffdlido -TransitionCfg.lbl.Aftdiam = Di\ufffdmetro trasero: -TransitionCfg.lbl.Forediam = Di\ufffdmetro delantero: +TransitionCfg.checkbox.Filled = S\u00f3lido +TransitionCfg.lbl.Aftdiam = Di\u00e1metro trasero: +TransitionCfg.lbl.Forediam = Di\u00e1metro delantero: TransitionCfg.lbl.Shapeparam = Valor de forma: -TransitionCfg.lbl.Transitionlength = Longitud de la transici\ufffdn: +TransitionCfg.lbl.Transitionlength = Longitud de la transici\u00f3n: ! TransitionConfig -TransitionCfg.lbl.Transitionshape = Forma de la transici\ufffdn: +TransitionCfg.lbl.Transitionshape = Forma de la transici\u00f3n: TransitionCfg.lbl.Wallthickness = Espesor de la pared: TransitionCfg.tab.General = General TransitionCfg.tab.Generalproperties = Propiedades generales @@ -1199,59 +1195,59 @@ TransitionCfg.tab.Shoulderproperties = Propiedades del acople ! TrapezoidFinSet TrapezoidFinSet.TrapezoidFinSet = Aletas trapezoidales -TrapezoidFinSetCfg.lbl.Fincant = Inclinaci\ufffdn de las aletas: +TrapezoidFinSetCfg.lbl.Fincant = Inclinaci\u00f3n de las aletas: TrapezoidFinSetCfg.lbl.FincrossSection = Borde de la aleta: -TrapezoidFinSetCfg.lbl.Finrotation = Rotaci\ufffdn de las aletas: +TrapezoidFinSetCfg.lbl.Finrotation = Rotaci\u00f3n de las aletas: TrapezoidFinSetCfg.lbl.Height = Altura: ! TrapezoidFinSetConfig -TrapezoidFinSetCfg.lbl.Nbroffins = N\ufffdmero de aletas: -TrapezoidFinSetCfg.lbl.Posrelativeto = Posici\ufffdn relativa a: -TrapezoidFinSetCfg.lbl.Rootchord = Longitud de la l\ufffdnea base: -TrapezoidFinSetCfg.lbl.Sweepangle = \ufffdngulo del borde de ataque: +TrapezoidFinSetCfg.lbl.Nbroffins = N\u00famero de aletas: +TrapezoidFinSetCfg.lbl.Posrelativeto = Posici\u00f3n relativa a: +TrapezoidFinSetCfg.lbl.Rootchord = Longitud de la l\u00ednea base: +TrapezoidFinSetCfg.lbl.Sweepangle = \u00c1ngulo del borde de ataque: TrapezoidFinSetCfg.lbl.Sweeplength = Desplazamiento borde superior: TrapezoidFinSetCfg.lbl.Thickness = Espesor: TrapezoidFinSetCfg.lbl.Tipchord = Longitud del borde superior: -TrapezoidFinSetCfg.lbl.plus = Localizaci\ufffdn: -TrapezoidFinSetCfg.lbl.ttip.Fincant = El \ufffdngulo de inclinaci\ufffdn de las aletas respecto al eje central del fuselaje. -TrapezoidFinSetCfg.lbl.ttip.Finrotation = Posici\ufffdn de las aletas alrededor del fuselaje. -TrapezoidFinSetCfg.lbl.ttip.Nbroffins = N\ufffdmero de aletas en la base de aletas. +TrapezoidFinSetCfg.lbl.plus = Localizaci\u00f3n: +TrapezoidFinSetCfg.lbl.ttip.Fincant = El \u00e1ngulo de inclinaci\u00f3n de las aletas respecto al eje central del fuselaje. +TrapezoidFinSetCfg.lbl.ttip.Finrotation = Posici\u00f3n de las aletas alrededor del fuselaje. +TrapezoidFinSetCfg.lbl.ttip.Nbroffins = N\u00famero de aletas en la base de aletas. TrapezoidFinSetCfg.tab.General = General TrapezoidFinSetCfg.tab.Generalproperties = Propiedades generales ! TubeCoupler TubeCoupler.TubeCoupler = Acoplador -Warning.DISCONTINUITY = Discontinuidad en el di\ufffdmetro del fuselaje. -Warning.FILE_INVALID_PARAMETER = Par\ufffdmetro encontrado no v\ufffdlido, ignorado. +Warning.DISCONTINUITY = Discontinuidad en el di\u00e1metro del fuselaje. +Warning.FILE_INVALID_PARAMETER = Par\u00e1metro encontrado no v\u00e1lido, ignorado. Warning.JAGGED_EDGED_FIN = El perfil afilado de las aletas puede ser inexacto. -Warning.LISTENERS_AFFECTED = Las Extensiones se ejecutaron con la simulaci\ufffdn del vuelo +Warning.LISTENERS_AFFECTED = Las Extensiones se ejecutaron con la simulaci\u00f3n del vuelo ! Warning -Warning.LargeAOA.str1 = \ufffdngulo de ataque muy grande. -Warning.LargeAOA.str2 = La amplitud del \ufffdngulo de ataque es excesiva ( +Warning.LargeAOA.str1 = \u00c1ngulo de ataque muy grande. +Warning.LargeAOA.str2 = La amplitud del \u00e1ngulo de ataque es excesiva ( Warning.PARALLEL_FINS = Demasiadas aletas paralelas -Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Sistema de recuperaci\ufffdn abierto en fase de impulso, mientras el motor a\ufffdn empujaba -Warning.RECOVERY_HIGH_SPEED = Despliegue del sistema de recuperaci\ufffdn con velocidad alta -Warning.RECOVERY_LAUNCH_ROD = Despliegue del sistema de recuperaci\ufffdn en rampa de lanzamiento -Warning.SUPERSONIC = Los c\ufffdlculos en el Cuerpo pueden no ser precisos con velocidades supers\ufffdnicas. -Warning.THICK_FIN = Las aletas gruesas no est\ufffdn correctamente modeladas. +Warning.RECOVERY_DEPLOYMENT_WHILE_BURNING = Sistema de recuperaci\u00f3n abierto en fase de impulso, mientras el motor a\u00fan empujaba +Warning.RECOVERY_HIGH_SPEED = Despliegue del sistema de recuperaci\u00f3n con velocidad alta +Warning.RECOVERY_LAUNCH_ROD = Despliegue del sistema de recuperaci\u00f3n en rampa de lanzamiento +Warning.SUPERSONIC = Los c\u00e1lculos en el Cuerpo pueden no ser precisos con velocidades supers\u00f3nicas. +Warning.THICK_FIN = Las aletas gruesas no est\u00e1n correctamente modeladas. bugreport.dlg.but.Sendbugreport = Enviar informe de error -bugreport.dlg.but.Sendbugreport.Ttip = Enviar autom\ufffdticamente un informe de error a los creadores de Open Rocket -bugreport.dlg.connectedInternet = Si est\ufffd conectado a Internet, haga Clik en Enviar informe de errores. +bugreport.dlg.but.Sendbugreport.Ttip = Enviar autom\u00e1ticamente un informe de error a los creadores de Open Rocket +bugreport.dlg.connectedInternet = Si est\u00e1 conectado a Internet, haga Clik en Enviar informe de errores. bugreport.dlg.failedmsg1 = OpenRocket fue incapaz de enviar el informe de error: -bugreport.dlg.failedmsg2 = Por favor env\ufffde manualmente el informe a +bugreport.dlg.failedmsg2 = Por favor env\u00ede manualmente el informe a bugreport.dlg.failedmsg3 = Error al enviar el informe -bugreport.dlg.otherwise = De otro modo, tambi\ufffdn puede copiar y enviar el texto a la direcci\ufffdn: -bugreport.dlg.provideDescription = Por favor, primero proporcione una descripci\ufffdn del error. -bugreport.dlg.provideDescription.title = Descripci\ufffdn del error omitida -bugreport.dlg.successmsg1 = Informe de error enviado con \ufffdxito -bugreport.dlg.successmsg2 = \ufffdGracias por ayudarnos a mejorar OpenRocket! +bugreport.dlg.otherwise = De otro modo, tambi\u00e9n puede copiar y enviar el texto a la direcci\u00f3n: +bugreport.dlg.provideDescription = Por favor, primero proporcione una descripci\u00f3n del error. +bugreport.dlg.provideDescription.title = Descripci\u00f3n del error omitida +bugreport.dlg.successmsg1 = Informe de error enviado con \u00e9xito +bugreport.dlg.successmsg2 = \u00a1Gracias por ayudar a mejorar OpenRocket! bugreport.dlg.successmsg3 = Informe de error enviado. ! Bug Report dialog bugreport.dlg.title = Informe de errores -bugreport.lbl.Theinformation = La informaci\ufffdn que ha detallado se incluir\ufffd en un informe de error p\ufffdblico. Aseg\ufffdrese de que no contiene ninguna informaci\ufffdn que usted no desee hacer p\ufffdblica. -bugreport.reportDialog.txt = Puede realizar un informe de errores escribiendo en el formulario de abajo y enviarlo.
Tambi\ufffdn puede informar de los errores adjuntando el archivo de su proyecto por email. -bugreport.reportDialog.txt2 = Por favor incluya una breve descripci\ufffdn de lo que estaba haciendo cuando ocurri\ufffd el error. +bugreport.lbl.Theinformation = La informaci\u00f3n que ha detallado se incluir\u00e1 en un informe de error p\u00fablico. Aseg\u00farese de que no contiene ninguna informaci\u00f3n que usted no desee hacer p\u00fablica. +bugreport.reportDialog.txt = Puede realizar un informe de errores escribiendo en el formulario de abajo y enviarlo.
Tambi\u00e9n puede informar de los errores adjuntando el archivo de su proyecto por email. +bugreport.reportDialog.txt2 = Por favor incluya una breve descripci\u00f3n de lo que estaba haciendo cuando ocurri\u00f3 el error. button.cancel = Cancelar button.close = Cerrar @@ -1265,27 +1261,27 @@ compaddbuttons.Bodytube = Cuerpo\ntubular compaddbuttons.Bulkhead = Disco\nde enganche compaddbuttons.Centeringring = Anillo\nde centrado compaddbuttons.Coupler = Acoplador -compaddbuttons.Donotaskmeagain = No preguntarme de nuevo -compaddbuttons.Elliptical = El\ufffdptica -compaddbuttons.Engineblock = Ret\ufffdn\nde motor +compaddbuttons.Donotaskmeagain = No me pregunte de nuevo +compaddbuttons.Elliptical = El\u00edptica +compaddbuttons.Engineblock = Ret\u00e9n\nde motor compaddbuttons.Freeform = Forma libre compaddbuttons.Innercomponent = Componentes internos compaddbuttons.Innertube = Tubo\ninterior -compaddbuttons.Launchlug = Soporte\npara gu\ufffda +compaddbuttons.Launchlug = Soporte\npara gu\u00eda compaddbuttons.Masscomponent = Componente\nmasa compaddbuttons.Massobjects = Accesorios compaddbuttons.Nosecone = Ojiva -compaddbuttons.Parachute = Paraca\ufffddas -compaddbuttons.Selectcomppos = Seleccionar la posici\ufffdn del componente -compaddbuttons.Shockcord = Tirante de\nsujeci\ufffdn +compaddbuttons.Parachute = Paraca\u00eddas +compaddbuttons.Selectcomppos = Seleccionar la posici\u00f3n del componente +compaddbuttons.Shockcord = Tirante de\nsujeci\u00f3n compaddbuttons.Streamer = Banderola -compaddbuttons.Transition = Transici\ufffdn +compaddbuttons.Transition = Transici\u00f3n compaddbuttons.Trapezoidal = Trapezoidal -compaddbuttons.askPosition.Addtotheend = A\ufffdadir al final +compaddbuttons.askPosition.Addtotheend = A\u00f1adir al final compaddbuttons.askPosition.Cancel = Cancelar -compaddbuttons.askPosition.Inserthere = Insertar aqu\ufffd -compaddbuttons.lbl.Youcanchange = Puede cambiar la operaci\ufffdn con las preferencias por defecto -compaddbuttons.lbl.insertcomp = \ufffdInsertar el componente despu\ufffds del actual o al final? +compaddbuttons.askPosition.Inserthere = Insertar aqu\u00ed +compaddbuttons.lbl.Youcanchange = Puede cambiar la operaci\u00f3n con las preferencias por defecto +compaddbuttons.lbl.insertcomp = \u00bfInsertar el componente despu\u00e9s del actual o al final? componentanalysisdlg.TOTAL = Total componentanalysisdlg.TabStability = Estabilidad @@ -1295,35 +1291,35 @@ componentanalysisdlg.TabStability.Col.CP = CP !componentanalysisdlg.But.close = Cerrar componentanalysisdlg.TabStability.Col.Component = Componente componentanalysisdlg.TabStability.Col.Mass = Masa -componentanalysisdlg.TabStability.ttip = Informaci\ufffdn de Estabilidad +componentanalysisdlg.TabStability.ttip = Informaci\u00f3n de Estabilidad componentanalysisdlg.TitledBorder.warnings = Advertencias: componentanalysisdlg.ToggleBut.worst = Peor ! Component Analysis Dialog -componentanalysisdlg.componentanalysis = An\ufffdlisis de los componentes -componentanalysisdlg.dragTabchar = Caracter\ufffdsticas de rozamiento +componentanalysisdlg.componentanalysis = An\u00e1lisis de los componentes +componentanalysisdlg.dragTabchar = Caracter\u00edsticas de rozamiento componentanalysisdlg.dragTabchar.ttip = Coeficientes de arrastre de los componentes. componentanalysisdlg.dragTableModel.Col.Base = Base CD componentanalysisdlg.dragTableModel.Col.Component = Componente -componentanalysisdlg.dragTableModel.Col.Pressure = Presi\ufffdn CD +componentanalysisdlg.dragTableModel.Col.Pressure = Presi\u00f3n CD componentanalysisdlg.dragTableModel.Col.friction = Rozamiento CD componentanalysisdlg.dragTableModel.Col.total = Total CD componentanalysisdlg.lbl.activestages = Etapas activas: -componentanalysisdlg.lbl.angleofattack = \ufffdngulo de ataque: -componentanalysisdlg.lbl.machnumber = N\ufffdmero Mach: -componentanalysisdlg.lbl.motorconf = Configuraci\ufffdn del motor: -componentanalysisdlg.lbl.refarea = \ufffdrea de referencia: -componentanalysisdlg.lbl.reflenght = Di\ufffdmetro de referencia: -componentanalysisdlg.lbl.rollrate = Valor de rotaci\ufffdn: -componentanalysisdlg.lbl.winddir = Direcci\ufffdn del viento: +componentanalysisdlg.lbl.angleofattack = \u00c1ngulo de ataque: +componentanalysisdlg.lbl.machnumber = N\u00famero Mach: +componentanalysisdlg.lbl.motorconf = Configuraci\u00f3n del motor: +componentanalysisdlg.lbl.refarea = \u00c1rea de referencia: +componentanalysisdlg.lbl.reflenght = Di\u00e1metro de referencia: +componentanalysisdlg.lbl.rollrate = Valor de rotaci\u00f3n: +componentanalysisdlg.lbl.winddir = Direcci\u00f3n del viento: componentanalysisdlg.noWarnings = Sin advertencias. -componentanalysisdlg.println.closingmethod = Llamar al m\ufffdtodo de cierre: +componentanalysisdlg.println.closingmethod = Llamar al m\u00e9todo de cierre: componentanalysisdlg.println.settingnam = AJUSTANDO VALORES NAN -componentanalysisdlg.rollTableModel = Din\ufffdmica de rotaci\ufffdn +componentanalysisdlg.rollTableModel = Din\u00e1mica de rotaci\u00f3n componentanalysisdlg.rollTableModel.Col.component = Componente -componentanalysisdlg.rollTableModel.Col.rolldamp = Coeficiente de correcci\ufffdn -componentanalysisdlg.rollTableModel.Col.rollforc = Coeficiente de rotaci\ufffdn +componentanalysisdlg.rollTableModel.Col.rolldamp = Coeficiente de correcci\u00f3n +componentanalysisdlg.rollTableModel.Col.rollforc = Coeficiente de rotaci\u00f3n componentanalysisdlg.rollTableModel.Col.total = Total Cl -componentanalysisdlg.rollTableModel.ttip = Din\ufffdmica del movimiento de rotaci\ufffdn del cohete (spin) +componentanalysisdlg.rollTableModel.ttip = Din\u00e1mica del movimiento de rotaci\u00f3n del cohete (spin) custmatdlg.checkbox.Addmaterial = Agregar este material a la base de datos custmatdlg.lbl.Materialdensity = Densidad del material: @@ -1332,42 +1328,42 @@ custmatdlg.lbl.Materialtype = Tipo de material: ! Custom Material dialog custmatdlg.title.Custommaterial = Material personalizado -customExpression.Description = Descripci\ufffdn -customExpression.Expression = Expresi\ufffdn +customExpression.Description = Descripci\u00f3n +customExpression.Expression = Expresi\u00f3n ! Custom expression general stuff customExpression.Name = Nombre customExpression.Operator = Operador -customExpression.Symbol = S\ufffdmbolo +customExpression.Symbol = S\u00edmbolo customExpression.Units = Unidades -customExpression.Units.but.ttip.Edit = Editar esta expresi\ufffdn -customExpression.Units.but.ttip.MoveDown = Mover la expresi\ufffdn hacia abajo en el orden de c\ufffdlculo -customExpression.Units.but.ttip.MoveUp = Mover la expresi\ufffdn hacia arriba en el orden de c\ufffdlculo -customExpression.Units.but.ttip.Remove = Eliminar esta expresi\ufffdn +customExpression.Units.but.ttip.Edit = Editar esta expresi\u00f3n +customExpression.Units.but.ttip.MoveDown = Mover la expresi\u00f3n hacia abajoen el orcen de c\u00e1lculo +customExpression.Units.but.ttip.MoveUp = Mover la expresi\u00f3n hacia arriba en el orden de c\u00e1lculo +customExpression.Units.but.ttip.Remove = Eliminar esta expresi\u00f3n customExpressionPanel.but.Import = Importar ! Custom expression panel -customExpressionPanel.but.NewExpression = Nueva expresi\ufffdn +customExpressionPanel.but.NewExpression = Nueva expresi\u00f3n customExpressionPanel.but.ttip.Import = Importar expresiones personalizadas desde otro archivo .ork -customExpressionPanel.but.ttip.NewExpression = A\ufffdadir una nueva expresi\ufffdn personalizada -customExpressionPanel.lbl.CalcNote = Las expresiones ser\ufffdn ejecutadas en el orden indicado. +customExpressionPanel.but.ttip.NewExpression = A\u00f1adir una nueva expresi\u00f3n personalizada +customExpressionPanel.lbl.CalcNote = Las expresiones ser\u00e1n ejecutadas en el orden indicado. customExpressionPanel.lbl.CustomExpressions = Expresiones personalizadas: -customExpressionPanel.lbl.UpdateNote = Debe ejecutar la simulaci\ufffdn antes de que los datos est\ufffdn disponibles para grafiar. +customExpressionPanel.lbl.UpdateNote = Debe ejecutar la simulaci\u00f3n antes de que los datos est\u00e9n disponibles para grafiar. ! Set to the name of the current translation file (used for debugging purposes) debug.currentFile = messages_es.properties -debuglogdlg.Displayloglines = Mostrar l\ufffdneas de registro: +debuglogdlg.Displayloglines = Mostrar l\u00edneas de registro: debuglogdlg.Follow = Seguir debuglogdlg.OpenRocketdebuglog = Registro de sucesos ! Debug log dialog debuglogdlg.but.clear = Limpiar debuglogdlg.col.Level = Nivel -debuglogdlg.col.Location = Localizaci\ufffdn +debuglogdlg.col.Location = Localizaci\u00f3n debuglogdlg.col.Message = Mensaje debuglogdlg.col.Time = Hora debuglogdlg.lbl.Level = Nivel: -debuglogdlg.lbl.Location = Localizaci\ufffdn: -debuglogdlg.lbl.Loglinenbr = N\ufffdmero de l\ufffdnea de registro: +debuglogdlg.lbl.Location = Localizaci\u00f3n: +debuglogdlg.lbl.Loglinenbr = N\u00famero de l\u00ednea de registro: debuglogdlg.lbl.Logmessage = Texto del mensaje: debuglogdlg.lbl.Stacktrace = Trazabilidad de la pila: debuglogdlg.lbl.Time = Hora: @@ -1378,37 +1374,36 @@ dlg.but.close = Cerrar dlg.but.ok = OK edtmotorconfdlg.but.Copyconfiguration = Copiar -edtmotorconfdlg.but.Newconfiguration = Nueva configuraci\ufffdn +edtmotorconfdlg.but.Newconfiguration = Nueva configuraci\u00f3n ! Edit Motor configuration dialog -edtmotorconfdlg.but.Removeconfiguration = Quitar configuraci\ufffdn -edtmotorconfdlg.but.Renameconfiguration = Renombrar configuraci\ufffdn +edtmotorconfdlg.but.Removeconfiguration = Quitar configuraci\u00f3n +edtmotorconfdlg.but.Renameconfiguration = Renombrar configuraci\u00f3n edtmotorconfdlg.but.Resetdeployment = Reiniciar valor por defecto edtmotorconfdlg.but.Resetseparation = Reiniciar valor por defecto edtmotorconfdlg.but.Selectdeployment = Seleccionar despliegue -edtmotorconfdlg.but.Selectseparation = Seleccionar separaci\ufffdn -edtmotorconfdlg.col.configuration = Configuraci\ufffdn -edtmotorconfdlg.lbl.Configname = Nombre de la configuraci\ufffdn: +edtmotorconfdlg.but.Selectseparation = Seleccionar separaci\u00f3n +edtmotorconfdlg.lbl.Configname = Nombre de la configuraci\u00f3n: edtmotorconfdlg.lbl.Leavenamedefault = Dejar el nombre por defecto. edtmotorconfdlg.lbl.Motortab = Motores -edtmotorconfdlg.lbl.Recoverytab = Recuperaci\ufffdn -edtmotorconfdlg.lbl.Selectedconf = Seleccionar configuraci\ufffdn del motor: +edtmotorconfdlg.lbl.Recoverytab = Recuperaci\u00f3n +edtmotorconfdlg.lbl.Selectedconf = Seleccionar configuraci\u00f3n del motor: edtmotorconfdlg.lbl.Stagetab = Etapas -edtmotorconfdlg.selectcomp = Seleccionar qu\ufffd componentes tienen la funci\ufffdn de porta motor: +edtmotorconfdlg.selectcomp = Seleccionar qu\u00e9 componentes tienen la funci\u00f3n de porta motor: edtmotorconfdlg.tbl.Deploymentheader = Despliegue -edtmotorconfdlg.tbl.Ignitionheader = Ignici\ufffdn +edtmotorconfdlg.tbl.Ignitionheader = Ignici\u00f3n edtmotorconfdlg.tbl.Motorheader = Motor edtmotorconfdlg.tbl.Mountheader = Porta motor edtmotorconfdlg.tbl.None = Ninguno -edtmotorconfdlg.tbl.Recoveryheader = Dispositivo de recuperaci\ufffdn -edtmotorconfdlg.tbl.Separationheader = Separaci\ufffdn +edtmotorconfdlg.tbl.Recoveryheader = Dispositivo de recuperaci\u00f3n +edtmotorconfdlg.tbl.Separationheader = Separaci\u00f3n edtmotorconfdlg.tbl.Stageheader = Etapa edtmotorconfdlg.title.Editmotorconf = Mostrar las configuraciones de motor -edtmotorconfdlg.title.Renameconf = Renombrar la configuraci\ufffdn del vuelo -edtmotorconfdlg.title.Selectdeploymentconf = Seleccionar la configuraci\ufffdn del despliegue -edtmotorconfdlg.title.Selectignitionconf = Seleccionar la configuraci\ufffdn de la ignici\ufffdn -edtmotorconfdlg.title.Selectseparationconf = Seleccionar la configuraci\ufffdn de la separaci\ufffdn +edtmotorconfdlg.title.Renameconf = Renombrar la configuraci\u00f3n del vuelo +edtmotorconfdlg.title.Selectdeploymentconf = Seleccionar la configuraci\u00f3n del despliegue +edtmotorconfdlg.title.Selectignitionconf = Seleccionar la configuraci\u00f3n de la ignici\u00f3n +edtmotorconfdlg.title.Selectseparationconf = Seleccionar la configuraci\u00f3n de la separaci\u00f3n -error.fileExists.desc = El archivo '{filename}' ya existe. \ufffdDesea sobrescribir la versi\ufffdn anterior? +error.fileExists.desc = El archivo con el nombre '{filename}' ya existe. \u00bfDesea sobrescribir la versi\u00f3n anterior? ! General error messages used in multiple contexts error.fileExists.title = El archivo ya existe error.writing.desc = Ha ocurrido un error al guardar el archivo: @@ -1416,49 +1411,49 @@ error.writing.title = Error al guardar el archivo ! Example design dialog exdesigndlg.but.open = Abrir -exdesigndlg.lbl.Exampledesignsnotfound = Los dise\ufffdos de ejemplo podr\ufffdan no encontrarse. +exdesigndlg.lbl.Exampledesignsnotfound = Los ejemplos de dise\u00f1o podr\u00edan no encontrarse. exdesigndlg.lbl.Examplesnotfound = Ejemplos no encontrados -exdesigndlg.lbl.Openexampledesign = Abrir un dise\ufffdo de ejemplo -exdesigndlg.lbl.Selectexample = Dise\ufffdos de ejemplo: +exdesigndlg.lbl.Openexampledesign = Abrir un ejemplo de dise\u00f1o +exdesigndlg.lbl.Selectexample = Dise\u00f1os de ejemplo: filetypes.images = Archivos de imagen ! General file type names filetypes.pdf = Archivos PDF main.menu.analyze = Analizar -main.menu.analyze.componentAnalysis = An\ufffdlisis de los componentes +main.menu.analyze.componentAnalysis = An\u00e1lisis de los componentes main.menu.analyze.componentAnalysis.desc = Analiza los componentes del cohete por separado main.menu.analyze.customExpressions = Expresiones personalizadas -main.menu.analyze.customExpressions.desc = Defina nuevos tipos de datos escribiendo expresiones matem\ufffdticas personalizadas -main.menu.analyze.desc = An\ufffdlisis del cohete -main.menu.analyze.optimization = Optimizaci\ufffdn del dise\ufffdo -main.menu.analyze.optimization.desc = Optimizaci\ufffdn global del dise\ufffdo del cohete -main.menu.debug = Recuperaci\ufffdn +main.menu.analyze.customExpressions.desc = Defina nuevos tipos de datos escribiendo expresiones matem\u00e1ticas personalizadas +main.menu.analyze.desc = An\u00e1lisis del cohete +main.menu.analyze.optimization = Optimizaci\u00f3n del dise\u00f1o +main.menu.analyze.optimization.desc = Optimizaci\u00f3n global del dise\u00f1o del cohete +main.menu.debug = Recuperaci\u00f3n main.menu.debug.createtestrocket = Crear una prueba de modelo -main.menu.debug.whatisthismenu = \ufffdQue es este men\ufffd? -main.menu.edit = Edici\ufffdn +main.menu.debug.whatisthismenu = \u00bfQue es este men\u00fa? +main.menu.edit = Edici\u00f3n main.menu.edit.copy = Copiar main.menu.edit.cut = Cortar main.menu.edit.delete = Borrar main.menu.edit.editpreset = Editar el archivo preestablecido del componente main.menu.edit.paste = Pegar main.menu.edit.preferences = Preferencias -main.menu.edit.preferences.desc = Configurar las preferencias de la aplicaci\ufffdn +main.menu.edit.preferences.desc = Configurar las preferencias de la aplicaci\u00f3n main.menu.edit.redo = Rehacer -main.menu.edit.redo.desc = Rehacer la operaci\ufffdn anterior +main.menu.edit.redo.desc = Rehacer la operaci\u00f3n anterior main.menu.edit.resize = Dimensionar... -main.menu.edit.resize.desc = Dimensionar las partes del dise\ufffdo del cohete +main.menu.edit.resize.desc = Dimensionar las partes del dise\u00f1o del cohete main.menu.edit.undo = Deshacer -main.menu.edit.undo.desc = Deshacer la operaci\ufffdn anterior +main.menu.edit.undo.desc = Deshacer la operaci\u00f3n anterior ! "main" prefix is used for the main application dialog # FIXME: Rename the description keys main.menu.file = Archivo main.menu.file.close = Cerrar main.menu.file.desc = Tareas relacionadas con el manejo de archivos main.menu.file.exportDecal = Exportar Calco -main.menu.file.exportDecal.desc = Exportar un Calco del dise\ufffdo actual a un archivo para su edici\ufffdn. +main.menu.file.exportDecal.desc = Exportar un Calco del dise\u00f1o actual a un archivo para su edici\u00f3n. main.menu.file.new = Nuevo -main.menu.file.new.desc = Crear un nuevo dise\ufffdo de cohete +main.menu.file.new.desc = Crear un nuevo dise\u00f1o de cohete main.menu.file.open = Abrir. main.menu.file.openExample = Abrir ejemplo. main.menu.file.openRecent = Abrir reciente. @@ -1473,10 +1468,10 @@ main.menu.help.about.desc = Detalles del Copyright de OpenRocket main.menu.help.bugReport = Informe de errores main.menu.help.bugReport.desc = Informar sobre errores encontrados en OpenRocket main.menu.help.debugLog = Registro de sucesos -main.menu.help.debugLog.desc = Visualizar el registro de depuraci\ufffdn de OpenRocket -main.menu.help.desc = Informaci\ufffdn acerca del cohete +main.menu.help.debugLog.desc = Visualizar el registro de depuraci\u00f3n de OpenRocket +main.menu.help.desc = Informaci\u00f3n acerca del cohete main.menu.help.license = Licencia -main.menu.help.license.desc = Informaci\ufffdn de la licencia de OpenRocket +main.menu.help.license.desc = Informaci\u00f3n de la licencia de OpenRocket main.menu.help.tours = Visita guiada main.menu.help.tours.desc = Realzar visitas guiadas en OpenRocket @@ -1491,20 +1486,20 @@ matedtpan.but.ttip.revertall = Borrar todos los materiales personalizad matedtpan.col.Density = Densidad matedtpan.col.Material = Material matedtpan.col.Type = Tipo -matedtpan.col.but.ttip.New = A\ufffdadir un nuevo material -matedtpan.lbl.edtmaterials = La edici\ufffdn de los materiales no afecta a los dise\ufffdos ya existentes. -matedtpan.title.Addcustmaterial = A\ufffdadir un material personalizado -matedtpan.title.Deletealluser-defined = \ufffdBorrar todos los materiales personalizados? +matedtpan.col.but.ttip.New = A\u00f1adir un nuevo material +matedtpan.lbl.edtmaterials = La edici\u00f3n de los materiales no afecta a los dise\u00f1os ya existentes. +matedtpan.title.Addcustmaterial = A\u00f1adir un material personalizado +matedtpan.title.Deletealluser-defined = \u00bfBorrar todos los materiales personalizados? matedtpan.title.Editmaterial = Editar material -matedtpan.title.Revertall = \ufffdRevertir todo? -matedtpan.title2.Editmaterial = Los materiales b\ufffdsicos no se pueden modificar, se a\ufffdadir\ufffd como nuevo material personalizado +matedtpan.title.Revertall = \u00bfRevertir todo? +matedtpan.title2.Editmaterial = Los materiales b\u00e1sicos no se pueden modificar, se a\u00f1adir\u00e1 como nuevo material personalizado ! database ! Translate here all material database ! ! Material database ! BULK_MATERIAL -material.acrylic = Acr\ufffdlico +material.acrylic = Acr\u00edlico material.aluminum = Aluminio material.balsa = Balsa material.basswood = Tilo @@ -1512,20 +1507,20 @@ material.birch = Abedul material.blue_tube = Tubo azul (PML) material.braided_nylon_2_mm_1_16_in = Nylon trenzado (2 mm, 1/16 in) material.braided_nylon_3_mm_1_8_in = Nylon trenzado (3 mm, 1/8 in) -material.brass = Lat\ufffdn +material.brass = Lat\u00f3n material.carbon_fiber = Fibra de Carbono -material.cardboard = Cart\ufffdn -material.cellophane = Celof\ufffdn +material.cardboard = Cart\u00f3n +material.cellophane = Celof\u00e1n material.cork = Corcho -material.crepe_paper = Cresp\ufffdn de papel +material.crepe_paper = Cresp\u00f3n de papel material.depron_xps = Depron (XPS) -material.elastic_cord_flat_12_mm_1_2_in = Cord\ufffdn el\ufffdstico plano (12mm, 1/2 in) -material.elastic_cord_flat_19_mm_3_4_in = Cord\ufffdn el\ufffdstico plano (19mm, 3/4 in) -material.elastic_cord_flat_25_mm_1_in = Cord\ufffdn el\ufffdstico plano (25mm, 1 in) -material.elastic_cord_flat_6_mm_1_4_in = Cord\ufffdn el\ufffdstico plano (6mm, 1/4 in) -material.elastic_cord_round_2_mm_1_16_in = Cord\ufffdn el\ufffdstico (aprox. 2mm, 1/16 in) +material.elastic_cord_flat_12_mm_1_2_in = Cord\u00f3n el\u00e1stico plano (12mm, 1/2 in) +material.elastic_cord_flat_19_mm_3_4_in = Cord\u00f3n el\u00e1stico plano (19mm, 3/4 in) +material.elastic_cord_flat_25_mm_1_in = Cord\u00f3n el\u00e1stico plano (25mm, 1 in) +material.elastic_cord_flat_6_mm_1_4_in = Cord\u00f3n el\u00e1stico plano (6mm, 1/4 in) +material.elastic_cord_round_2_mm_1_16_in = Cord\u00f3n el\u00e1stico (aprox. 2mm, 1/16 in) material.fiberglass = Fibra de vidrio -material.kraft_phenolic = Cart\ufffdn fen\ufffdlico +material.kraft_phenolic = Cart\u00f3n fen\u00f3lico material.maple = Arce material.mylar = Mylar material.paper_office = Papel (oficina) @@ -1540,10 +1535,10 @@ material.quantum_tubing = Tubo Quantum !SURFACE_MATERIAL material.ripstop_nylon = Ripstop nylon material.silk = Seda -material.spruce = P\ufffdcea (Abeto com\ufffdn) +material.spruce = P\u00edcea (Abeto com\u00fan) material.steel = Acero material.styrofoam_blue_foam_xps = Porex "Foam azul" (XPS) -material.styrofoam_generic_eps = Porex (gen\ufffdrico EPS) +material.styrofoam_generic_eps = Porex (gen\u00e9rico EPS) ! LINE_MATERIAL material.thread_heavy_duty = Trenzado (Alta resistencia) material.titanium = Titanio @@ -1553,91 +1548,91 @@ material.tubular_nylon_25_mm_1_in = Nylon tubular (25 mm, 1 in) optimization.modifier.bodytube.length = Longitud optimization.modifier.bodytube.length.desc = Optimizar la longitud del cuerpo. -optimization.modifier.bodytube.outerDiameter = Di\ufffdmetro exterior -optimization.modifier.bodytube.outerDiameter.desc = Optimizar el di\ufffdmetro exterior del cuerpo manteniendo el grosor de la pared. +optimization.modifier.bodytube.outerDiameter = Di\u00e1metro exterior +optimization.modifier.bodytube.outerDiameter.desc = Optimizar el di\u00e1metro exterior del cuerpo manteniendo el grosor de la pared. optimization.modifier.bodytube.thickness = Grosor optimization.modifier.bodytube.thickness.desc = Optimizar el grosor de la pared del cuerpo. optimization.modifier.ellipticalfinset.height = Altura optimization.modifier.ellipticalfinset.height.desc = Optimizar la altura de las aletas (semi-spam). -optimization.modifier.ellipticalfinset.length = Longitud l\ufffdnea base -optimization.modifier.ellipticalfinset.length.desc = Optiminizar la longitud de la l\ufffdnea base de las aletas +optimization.modifier.ellipticalfinset.length = Longitud l\u00ednea base +optimization.modifier.ellipticalfinset.length.desc = Optiminizar la longitud de la l\u00ednea base de las aletas optimization.modifier.finset.cant = Angulo de ataque -optimization.modifier.finset.cant.desc = Optimiza el \ufffdngulo de ataque de las aletas. -optimization.modifier.finset.position = Posici\ufffdn -optimization.modifier.finset.position.desc = Optimiza la posici\ufffdn de las aletas a lo largo del cuerpo del cohete. -optimization.modifier.internalcomponent.position = Posici\ufffdn -optimization.modifier.internalcomponent.position.desc = Optimiza la posici\ufffdn del componente interno respecto del componente que lo contiene. +optimization.modifier.finset.cant.desc = Optimiza el \u00e1ngulo de ataque de las aletas. +optimization.modifier.finset.position = Posici\u00f3n +optimization.modifier.finset.position.desc = Optimiza la posici\u00f3n de las aletas a lo largo del cuerpo del cohete. +optimization.modifier.internalcomponent.position = Posici\u00f3n +optimization.modifier.internalcomponent.position.desc = Optimiza la posici\u00f3n del componente interno respecto del componente que lo contiene. optimization.modifier.launchlug.length = Longitud -optimization.modifier.launchlug.length.desc = Optimiza la longitud del tubo para la Gu\ufffda. -optimization.modifier.launchlug.outerDiameter = Di\ufffdmetro exterior -optimization.modifier.launchlug.outerDiameter.desc = Optimiza el di\ufffdmetro exterior del tubo para la Gu\ufffda. -optimization.modifier.launchlug.position = Posici\ufffdn -optimization.modifier.launchlug.position.desc = Optimiza la posici\ufffdn del soporte para la gu\ufffda a lo largo del cuerpo del cohete. +optimization.modifier.launchlug.length.desc = Optimiza la longitud del tubo para la Gu\u00eda. +optimization.modifier.launchlug.outerDiameter = Di\u00e1metro exterior +optimization.modifier.launchlug.outerDiameter.desc = Optimiza el di\u00e1metro exterior del tubo para la Gu\u00eda. +optimization.modifier.launchlug.position = Posici\u00f3n +optimization.modifier.launchlug.position.desc = Optimiza la posici\u00f3n del soporte para la gu\u00eda a lo largo del cuerpo del cohete. optimization.modifier.launchlug.thickness = Grosor -optimization.modifier.launchlug.thickness.desc = Optimiza el grosor del tubo para la Gu\ufffda manteniendo el di\ufffdmetro exterior. +optimization.modifier.launchlug.thickness.desc = Optimiza el grosor del tubo para la Gu\u00eda manteniendo el di\u00e1metro exterior. optimization.modifier.masscomponent.mass = Masa optimization.modifier.masscomponent.mass.desc = Optimiza la masa del componente Masa. -optimization.modifier.motormount.delay = Retardo de ignici\ufffdn -optimization.modifier.motormount.delay.desc = Optimiza el retardo de la ingnici\ufffdn del motor. +optimization.modifier.motormount.delay = Retardo de ignici\u00f3n +optimization.modifier.motormount.delay.desc = Optimiza el retardo de la ingnici\u00f3n del motor. optimization.modifier.motormount.overhang = Sobresalida del motor optimization.modifier.motormount.overhang.desc = Optimiza la sobresalida del motor hacia el exterior. -optimization.modifier.nosecone.diameter = Di\ufffdmetro de la ojiva -optimization.modifier.nosecone.diameter.desc = Optimizar el di\ufffdmetro de la base de la ojiva. +optimization.modifier.nosecone.diameter = Di\u00e1metro de la ojiva optimization.modifier.nosecone.diameter.desc = Optimizar el di\u00e1metro de la base de la ojiva. +optimization.modifier.nosecone.diameter.desc = Optimizar el di\u00e1metro de la base de la ojiva. ! Optimization ! Modifiers optimization.modifier.nosecone.length = Longitud de la ojiva optimization.modifier.nosecone.length.desc = Optimizar la longitud de la ojiva. -optimization.modifier.nosecone.shapeparameter = Par\ufffdmetro de forma -optimization.modifier.nosecone.shapeparameter.desc = Optimiza el par\ufffdmetro de forma de la ojiva. +optimization.modifier.nosecone.shapeparameter = Par\u00e1metro de forma +optimization.modifier.nosecone.shapeparameter.desc = Optimiza el par\u00e1metro de forma de la ojiva. optimization.modifier.nosecone.thickness = Grosor de la ojiva optimization.modifier.nosecone.thickness.desc = Optimizar el grosor de la pared de la ojiva. optimization.modifier.parachute.coefficient = Coeficiente de rozamiento -optimization.modifier.parachute.coefficient.desc = Optimiza el Coeficiente de rozamiento del paraca\ufffddas. Un paraca\ufffddas t\ufffdpico posee un Coeficiente de 0.8. -optimization.modifier.parachute.diameter = Di\ufffdmetro -optimization.modifier.parachute.diameter.desc = Optimiza el di\ufffdmetro del pabell\ufffdn del paraca\ufffddas. -optimization.modifier.recoverydevice.deployAltitude = Altitud de eyecci\ufffdn -optimization.modifier.recoverydevice.deployAltitude.desc = Optimiza la altitud de la eyecci\ufffdn del sistema de recuperaci\ufffdn. -optimization.modifier.recoverydevice.deployDelay = Retardo de eyecci\ufffdn -optimization.modifier.recoverydevice.deployDelay.desc = Optimiza el tiempo de retardo de eyecci\ufffdn del sistema de recuperaci\ufffdn. +optimization.modifier.parachute.coefficient.desc = Optimiza el coeficiente de rozamiento del paraca\u00eddas. Un paraca\u00eddas t\u00edpico posee un coeficiente de 0.8. +optimization.modifier.parachute.diameter = Di\u00e1metro +optimization.modifier.parachute.diameter.desc = Optimiza el di\u00e1metro del pabell\u00f3n del paraca\u00eddas. +optimization.modifier.recoverydevice.deployAltitude = Altitud de eyecci\u00f3n +optimization.modifier.recoverydevice.deployAltitude.desc = Optimiza la altitud de la eyecci\u00f3n del sistema de recuperaci\u00f3n. +optimization.modifier.recoverydevice.deployDelay = Retardo de eyecci\u00f3n +optimization.modifier.recoverydevice.deployDelay.desc = Optimiza el tiempo de retardo de eyecci\u00f3n del sistema de recuperaci\u00f3n. optimization.modifier.rocketcomponent.overrideCG = CG especificado -optimization.modifier.rocketcomponent.overrideCG.desc = Optimiza la localizaci\ufffdn del Centro de Gravedad especificado en el componente. +optimization.modifier.rocketcomponent.overrideCG.desc = Optimiza la localizaci\u00f3n del Centro de Gravedad especificado en el componente. optimization.modifier.rocketcomponent.overrideMass = Masa especificada optimization.modifier.rocketcomponent.overrideMass.desc = Optimiza la Masa especificada del componente. -optimization.modifier.streamer.aspectRatio = Relaci\ufffdn de aspecto -optimization.modifier.streamer.aspectRatio.desc = Optimiza la relaci\ufffdn de aspecto de la banderola (longitud/anchura). Usted NO debe seleccionar una longitud o anchura de la banderola al mismo tiempo que una relaci\ufffdn de aspecto. +optimization.modifier.streamer.aspectRatio = Relaci\u00f3n de aspecto +optimization.modifier.streamer.aspectRatio.desc = Optimiza la relaci\u00f3n de aspecto de la banderola (longitud/anchura). Usted NO debe seleccionar una longitud o anchura de la banderola al mismo tiempo que una relaci\u00f3n de aspecto. optimization.modifier.streamer.coefficient = Coeficiente de rozamiento -optimization.modifier.streamer.coefficient.desc = Optimiza el Coeficiente de rozamiento de la banderola. +optimization.modifier.streamer.coefficient.desc = Optimiza el coeficiente de rozamiento de la banderola. optimization.modifier.streamer.length = Longitud optimization.modifier.streamer.length.desc = Optimiza la longitud de la banderola. optimization.modifier.streamer.width = Anchura optimization.modifier.streamer.width.desc = Optimiza la anchura de la banderola. -optimization.modifier.transition.aftdiameter = Di\ufffdmetro trasero -optimization.modifier.transition.aftdiameter.desc = Optimiza el di\ufffdmetro trasero de la transici\ufffdn. -optimization.modifier.transition.forediameter = Di\ufffdmetro delantero -optimization.modifier.transition.forediameter.desc = Optimiza el di\ufffdmetro delantero de la transici\ufffdn. +optimization.modifier.transition.aftdiameter = Di\u00e1metro trasero +optimization.modifier.transition.aftdiameter.desc = Optimiza el di\u00e1metro trasero de la transici\u00f3n. +optimization.modifier.transition.forediameter = Di\u00e1metro delantero +optimization.modifier.transition.forediameter.desc = Optimiza el di\u00e1metro delantero de la transici\u00f3n. optimization.modifier.transition.length = Longitud -optimization.modifier.transition.length.desc = Optimiza la longitud de la transici\ufffdn. -optimization.modifier.transition.shapeparameter = Par\ufffdmetro de forma -optimization.modifier.transition.shapeparameter.desc = Optimizar el par\ufffdmetro de forma de la transici\ufffdn. +optimization.modifier.transition.length.desc = Optimiza la longitud de la transici\u00f3n. +optimization.modifier.transition.shapeparameter = Par\u00e1metro de forma +optimization.modifier.transition.shapeparameter.desc = Optimizar el par\u00e1metro de forma de la transici\u00f3n. optimization.modifier.transition.thickness = Grosor -optimization.modifier.transition.thickness.desc = Optimiza el grosor de la pared de la transici\ufffdn. +optimization.modifier.transition.thickness.desc = Optimiza el grosor de la pared de la transici\u00f3n. optimization.modifier.trapezoidfinset.height = Altura optimization.modifier.trapezoidfinset.height.desc = Optimizar la altura de las aletas (semi-spam). -optimization.modifier.trapezoidfinset.rootChord = Longitud l\ufffdnea base -optimization.modifier.trapezoidfinset.rootChord.desc = Optiminizar la longitud de la l\ufffdnea base de las aletas (longitud de la aleta sobre la superficie del cuerpo). +optimization.modifier.trapezoidfinset.rootChord = Longitud l\u00ednea base +optimization.modifier.trapezoidfinset.rootChord.desc = Optiminizar la longitud de la l\u00ednea base de las aletas (longitud de la aleta sobre la superficie del cuerpo). optimization.modifier.trapezoidfinset.sweep = Desplazamiento borde superior -optimization.modifier.trapezoidfinset.sweep.desc = Optimiza el desplazamiento del borde superior de las aletas (desplazamiento del borde superior de la aleta respecto del extremo delantero de la l\ufffdnea base). +optimization.modifier.trapezoidfinset.sweep.desc = Optimiza el desplazamiento del borde superior de las aletas (desplazamiento del borde superior de la aleta respecto del extremo delantero de la l\u00ednea base). optimization.modifier.trapezoidfinset.tipChord = Longitud borde superior optimization.modifier.trapezoidfinset.tipChord.desc = Optimizar la longitud del borde superior de las aletas (longitd del borde exterior de la aleta). -pref.dlg.Add = A\ufffdadir +pref.dlg.Add = A\u00f1adir pref.dlg.Allthrustcurvefiles = Todos los ficheros de curvas de potencia (*.eng; *.rse; *.zip; directorios) -pref.dlg.DescriptionArea.Adddirectories = A\ufffdadir directorios, archivos de motor RASP (*.eng), archivos de motor RockSim (*.rse) o archivos ZIP separados por punto y coma (;) para cargar curvas de empuje externas. Los cambios tendr\ufffdn efecto la pr\ufffdxima vez que abra OpenRocket. +pref.dlg.DescriptionArea.Adddirectories = A\u00f1adir directorios, archivos de motor RASP (*.eng), archivos de motor RockSim (*.rse) o archivos ZIP separados por punto y coma (;) para cargar curvas de empuje externas. Los cambios tendr\u00e1n efecto la pr\u00f3xima vez que abra OpenRocket. pref.dlg.PrefBooleanSelector1 = Borrar pref.dlg.PrefBooleanSelector2 = Confirmar pref.dlg.PrefChoiseSelector1 = Preguntar siempre pref.dlg.PrefChoiseSelector2 = Insertar en medio -pref.dlg.PrefChoiseSelector3 = A\ufffdadir al final +pref.dlg.PrefChoiseSelector3 = A\u00f1adir al final pref.dlg.RASPfiles = Ficheros de motor RASP (*.eng) pref.dlg.RockSimfiles = Ficheros de motor Rocksim (*.rse) pref.dlg.ZIParchives = Archivos ZIP (*.zip) @@ -1645,17 +1640,16 @@ pref.dlg.ZIParchives = Archivos ZIP (*.zip) pref.dlg.but.add = Agregar pref.dlg.but.checknow = Comprobar ahora pref.dlg.but.defaultimperial = Sistema Imperial por defecto -pref.dlg.but.defaultmetric = Sistema M\ufffdtrico por defecto -pref.dlg.but.openlast = Abrir el \ufffdltimo dise\ufffdo al inicio +pref.dlg.but.defaultmetric = Sistema M\u00e9trico por defecto +pref.dlg.but.openlast = Abrir el \u00faltimo dise\u00f1o al inicio pref.dlg.but.reset = Reiniciar pref.dlg.checkbox.Checkupdates = Comprobar actualizaciones de software al arrancar -pref.dlg.lbl.Acceleration = Aceleraci\ufffdn: -pref.dlg.lbl.Angle = \ufffdngulo: -pref.dlg.lbl.Area = \ufffdrea: +pref.dlg.lbl.Acceleration = Aceleraci\u00f3n: +pref.dlg.lbl.Angle = \u00c1ngulo: +pref.dlg.lbl.Area = \u00c1rea: pref.dlg.lbl.Bulkdensity = Densidad media: pref.dlg.lbl.Checkingupdates = Comprobando actualizaciones... pref.dlg.lbl.Confirmdeletion = Confirmar borrar simulaciones: -pref.dlg.lbl.DecalEditor = Editor de gr\ufffdficos pref.dlg.lbl.Distance = Distancia: pref.dlg.lbl.FlightTime = Tiempo de vuelo: pref.dlg.lbl.Force = Fuerza: @@ -1663,10 +1657,10 @@ pref.dlg.lbl.Linedensity = Densidad: pref.dlg.lbl.Mass = Masa: pref.dlg.lbl.Momentofinertia = Momento de inercia: pref.dlg.lbl.Motordimensions = Dimensiones del motor: -pref.dlg.lbl.Positiontoinsert = Posici\ufffdn para introducir nuevos componentes del fuselaje: -pref.dlg.lbl.Pressure = Presi\ufffdn: +pref.dlg.lbl.Positiontoinsert = Posici\u00f3n para introducir nuevos componentes del fuselaje: +pref.dlg.lbl.Pressure = Presi\u00f3n: pref.dlg.lbl.Rocketdimensions = Dimensiones del cohete: -pref.dlg.lbl.Rollrate = Valor de rotaci\ufffdn: +pref.dlg.lbl.Rollrate = Valor de rotaci\u00f3n: pref.dlg.lbl.Selectprefunits = Seleccione sus unidades preferidas: pref.dlg.lbl.Stability = Estabilidad: pref.dlg.lbl.Surfacedensity = Densidad superficial: @@ -1676,19 +1670,18 @@ pref.dlg.lbl.Totalimpulse = Impulso total: pref.dlg.lbl.User-definedthrust = Curvas de potencia definidas por el usuario: pref.dlg.lbl.Velocity = Velocidad: pref.dlg.lbl.Windspeed = Velocidad del viento: -pref.dlg.lbl.effect1 = Los cambios tendr\ufffdn efecto cuando se abra nuevamente el proyecto. -pref.dlg.lbl.msg1 = Ocurri\ufffd un error mientras se comunicaba con el servidor. -pref.dlg.lbl.msg2 = Incapaz de recuperar la informaci\ufffdn de las actualizaciones -pref.dlg.lbl.msg3 = Usted est\ufffd utilizando la \ufffdltima versi\ufffdn de Open Rocket. +pref.dlg.lbl.effect1 = Los cambios tendr\u00e1n efecto cuando se abra nuevamente el proyecto. +pref.dlg.lbl.msg1 = Ocurri\u00f3 un error mientras se comunicaba con el servidor. +pref.dlg.lbl.msg2 = Incapaz de recuperar la informaci\u00f3n de las actualizaciones +pref.dlg.lbl.msg3 = Usted est\u00e1 utilizando la \u00faltima versi\u00f3n de Open Rocket. pref.dlg.lbl.msg4 = No hay actualizaciones disponibles pref.dlg.opengl.but.enableAA = Activar el Antialiasing -pref.dlg.opengl.but.enableGL = Activar gr\ufffdficos 3D -pref.dlg.opengl.lbl.title = Gr\ufffdficos 3D +pref.dlg.opengl.but.enableGL = Activar gr\u00e1ficos 3D +pref.dlg.opengl.lbl.title = Gr\u00e1ficos 3D pref.dlg.opengl.lbl.useFBO = Utilizar Off-screen Rendering pref.dlg.tab.Custommaterials = Materiales personalizados -pref.dlg.tab.DecalEditor = Editor de gr\ufffdficos +pref.dlg.tab.DecalEditor = Editor de gr\u00e1ficos pref.dlg.tab.Defaultunits = Unidades por defecto -pref.dlg.tab.Graphics = Gr\ufffdficos pref.dlg.tab.Materials = Materiales pref.dlg.tab.Miscellaneousoptions = Otras opciones pref.dlg.tab.Options = Opciones @@ -1698,25 +1691,25 @@ pref.dlg.ttip.Checkupdatesnow = Comprobar actualizaciones de software printdlg.but.preview = Previsualizar printdlg.but.saveaspdf = Guardar como PDF -printdlg.but.settings = Configuraci\ufffdn +printdlg.but.settings = Configuraci\u00f3n -ringcompcfg.Automatic = Autom\ufffdtico -ringcompcfg.Distancefrom = Distancia desde la l\ufffdnea central del cohete: -ringcompcfg.EngineBlock.desc = Un ret\ufffdn de motor impide que el motor se desplace hacia delante, por dentro del tubo porta motor.

Para a\ufffdadir un motor, cree un Cuerpo tubular o Tubo interior y des\ufffdgnelo como porta motor en la pesta\ufffda Motor. +ringcompcfg.Automatic = Autom\u00e1tico +ringcompcfg.Distancefrom = Distancia desde la l\u00ednea central del cohete: +ringcompcfg.EngineBlock.desc = Un ret\u00e9n de motor impide que el motor se desplace hacia delante, por dentro del tubo porta motor.

Para a\u00f1adir un motor, cree un Cuerpo tubular o Tubo interior y des\u00edgnelo como porta motor en la pesta\u00f1a Motor. ringcompcfg.InnerRadius = Radio interior: ringcompcfg.Length = Longitud: ! Ring Component Config ringcompcfg.OuterRadius = Radio exterior: -ringcompcfg.PositionValue = Valor de posici\ufffdn: -ringcompcfg.Positionrelativeto = Posici\ufffdn relativa a: -ringcompcfg.Radialdirection = Direcci\ufffdn radial: +ringcompcfg.PositionValue = Valor de posici\u00f3n: +ringcompcfg.Positionrelativeto = Posici\u00f3n relativa a: +ringcompcfg.Radialdirection = Direcci\u00f3n radial: ringcompcfg.Radialdistance = Distancia radial: ringcompcfg.Thickness = Espesor: ringcompcfg.but.Reset = Reiniciar -ringcompcfg.but.Resetcomponant = Reubicar el componente en la l\ufffdnea central del cohete -ringcompcfg.note.desc = Nota: El tubo interior no afectar\ufffd a la aerodin\ufffdmica del cohete salvo que est\ufffd situado fuera del fuselaje. -ringcompcfg.plus = Localizaci\ufffdn: -ringcompcfg.radialdirectionfrom = En direcci\ufffdn radial desde la l\ufffdnea central del cohete +ringcompcfg.but.Resetcomponant = Reubicar el componente en la l\u00ednea central del cohete +ringcompcfg.note.desc = Nota: El tubo interior no afectar\u00e1 a la aerodin\u00e1mica del cohete salvo que est\u00e9 situado fuera del fuselaje. +ringcompcfg.plus = Localizaci\u00f3n: +ringcompcfg.radialdirectionfrom = En direcci\u00f3n radial desde la l\u00ednea central del cohete simedtdlg.IntensityDesc.Extreme = Extremo simedtdlg.IntensityDesc.High = Alto @@ -1725,7 +1718,7 @@ simedtdlg.IntensityDesc.Medium = Medio simedtdlg.IntensityDesc.None = Ninguno simedtdlg.IntensityDesc.Veryhigh = Muy alto simedtdlg.IntensityDesc.Verylow = Muy pesado -simedtdlg.border.Atmoscond = Condiciones atmosf\ufffdricas +simedtdlg.border.Atmoscond = Condiciones atmosf\u00e9ricas simedtdlg.border.Launchrod = Varilla para lanzar simedtdlg.border.Simlist = Extensiones del simulador simedtdlg.border.Simopt = Opciones del simulador @@ -1734,152 +1727,152 @@ simedtdlg.but.add = Agregar simedtdlg.but.remove = Quitar simedtdlg.but.resettodefault = Restaurar por defecto ! Simulation edit dialog -simedtdlg.but.runsimulation = Lanzar la simulaci\ufffdn +simedtdlg.but.runsimulation = Lanzar la simulaci\u00f3n simedtdlg.but.savedefault = Guardar por defecto simedtdlg.but.ttip.resettodefault = Restituir el tiempo de etapa a su valor por defecto ( simedtdlg.chart.Simflight = Vuelo simulado -simedtdlg.checkbox.InterStdAtmosphere = Usar los patrones atmosf\ufffdricos internacionales. -simedtdlg.checkbox.ttip.InterStdAtmosphere1 = Seleccionar para usar el modelo de la International Standard Atmosphere.
Este modelo considera una temperatura de -simedtdlg.checkbox.ttip.InterStdAtmosphere2 = y una presi\ufffdn de -simedtdlg.checkbox.ttip.InterStdAtmosphere3 = al nivel del mar. -simedtdlg.combo.ttip.Flightcfg = Seleccione la Configuraci\ufffdn del vuelo a utilizar. -simedtdlg.combo.ttip.motorconf = Seleccione la configuraci\ufffdn del motor a usar -simedtdlg.dlg.Simres = Resultados de la simulaci\ufffdn -simedtdlg.lbl.Addsimlist = A\ufffdadir una Extensi\ufffdn al simulador +simedtdlg.checkbox.InterStdAtmosphere = Usar los patrones atmosf\u00e9ricos internacionales. +simedtdlg.checkbox.ttip.InterStdAtmosphere1 = Seleccionar para usar el modelo de la International Standard Atmosphere.
Este modelo tiene una temperatura de +simedtdlg.checkbox.ttip.InterStdAtmosphere2 = Y una presi\u00f3n de +simedtdlg.checkbox.ttip.InterStdAtmosphere3 = A nivel del mar. +simedtdlg.combo.ttip.Flightcfg = Seleccione la Configuraci\u00f3n del vuelo a utilizar. +simedtdlg.combo.ttip.motorconf = Seleccione la configuraci\u00f3n del motor a usar +simedtdlg.dlg.Simres = Resultados de la simulaci\u00f3n +simedtdlg.lbl.Addsimlist = A\u00f1adir una Extensi\u00f3n al simulador simedtdlg.lbl.Altitude = Altitud: -simedtdlg.lbl.Angle = \ufffdngulo: +simedtdlg.lbl.Angle = \u00c1ngulo: simedtdlg.lbl.Averwindspeed = Velocidad media del viento: -simedtdlg.lbl.Calcmethod = M\ufffdtodo de c\ufffdlculo: +simedtdlg.lbl.Calcmethod = M\u00e9todo de c\u00e1lculo: simedtdlg.lbl.Curlist = Extensiones actuales: -simedtdlg.lbl.Direction = Direcci\ufffdn: +simedtdlg.lbl.Direction = Direcci\u00f3n: simedtdlg.lbl.ExtBarrowman = Barrowman Extendido -simedtdlg.lbl.Flightcfg = Configuraci\ufffdn del motor: -simedtdlg.lbl.GeodeticMethod = C\ufffdlculos geod\ufffdsicos: +simedtdlg.lbl.Flightcfg = Configuraci\u00f3n del motor: +simedtdlg.lbl.GeodeticMethod = C\u00e1lculos geod\u00e9sicos: simedtdlg.lbl.Latitude = Latitud: simedtdlg.lbl.Launchsite = Lugar de lanzamiento simedtdlg.lbl.Length = Longitud: simedtdlg.lbl.Longitude = Longitud: -simedtdlg.lbl.Motorcfg = Configuraci\ufffdn del motor: +simedtdlg.lbl.Motorcfg = Configuraci\u00f3n del motor: simedtdlg.lbl.Noflightdata = No hay datos disponibles del vuelo. -simedtdlg.lbl.Pressure = Presi\ufffdn: -simedtdlg.lbl.Simmethod = M\ufffdtodo de simulaci\ufffdn: -simedtdlg.lbl.Simname = Nombre de la simulaci\ufffdn -simedtdlg.lbl.Stddeviation = Desviaci\ufffdn est\ufffdndar: +simedtdlg.lbl.Pressure = Presi\u00f3n: +simedtdlg.lbl.Simmethod = M\u00e9todo de simulaci\u00f3n: +simedtdlg.lbl.Simname = Nombre de la simulaci\u00f3n +simedtdlg.lbl.Stddeviation = Desviaci\u00f3n est\u00e1ndar: simedtdlg.lbl.Temperature = Temperatura: -simedtdlg.lbl.Timestep = Duraci\ufffdn de la etapa: +simedtdlg.lbl.Timestep = Duraci\u00f3n de la etapa: simedtdlg.lbl.Turbulenceintensity = Intensidad de la turbulencia: simedtdlg.lbl.Wind = Viento -simedtdlg.lbl.runsimfirst = Por favor ejecute la simulaci\ufffdn primero. -simedtdlg.lbl.ttip.Altitude = Los valores por encima del nivel del mar
afectan al modelado de las condicones atmosf\ufffdricas. -simedtdlg.lbl.ttip.Angle = El \ufffdngulo de inclinaci\ufffdn de la varilla de lanzamiento con respecto a la vertical. -simedtdlg.lbl.ttip.Averwindspeed = Velocidad media del viento en relaci\ufffdn al suelo -simedtdlg.lbl.ttip.Calcmethod = El m\ufffdtodo Barrowman extendido considera las fuerzas aerodin\ufffdmicas
que act\ufffdan sobre cuerpos cil\ufffdndricos en cohetes que vuelan con un
\ufffdngulo de ataque (AOA) superior a 10 grados. -simedtdlg.lbl.ttip.Direction1 = Direcci\ufffdn de la varilla de lanzamiento relativa al viento.
+simedtdlg.lbl.runsimfirst = Por favor ejecute la simulaci\u00f3n primero. +simedtdlg.lbl.ttip.Altitude = Los valores por encima del nivel del mar
afectan al modelado de las condicones atmosf\u00e9ricas. +simedtdlg.lbl.ttip.Angle = El \u00e1ngulo de la varilla de lanzamiento con respecto a la vertical. +simedtdlg.lbl.ttip.Averwindspeed = Velocidad media del viento en relaci\u00f3n al suelo +simedtdlg.lbl.ttip.Calcmethod = El m\u00e9todo Barrowman extendido considera las fuerzas aerodin\u00e1micas
que act\u00faan sobre cuerpos cil\u00edndricos en cohetes que vuelan con un
\u00e1ngulo de ataque (AOA) superior a 10 grados. +simedtdlg.lbl.ttip.Direction1 = Direcci\u00f3n de la varilla de lanzamiento relativa al viento.
simedtdlg.lbl.ttip.Direction2 = Contra el viento simedtdlg.lbl.ttip.Direction3 = A favor del viento -simedtdlg.lbl.ttip.Flightcfg = Seleccione la Configuraci\ufffdn del vuelo a utilizar. -simedtdlg.lbl.ttip.GeodeticMethodTip = En relaci\ufffdn al c\ufffdlculo de las coordenadas terrestres. Esto tambi\ufffdn activa los c\ufffdlculos del Efecto Coriolis. -simedtdlg.lbl.ttip.Latitude = La latitud del campo de lanzamiento afecta a la atracci\ufffdn terrestre.
Los valores positivos se dan en el hemisferio Norte, los negativos en el hemisferio Sur. +simedtdlg.lbl.ttip.Flightcfg = Seleccione la Configuraci\u00f3n del vuelo a utilizar. +simedtdlg.lbl.ttip.GeodeticMethodTip = En relaci\u00f3n al c\u00e1lculo de las coordenadas terrestres. Esto tambi\u00e9n activa los c\u00e1lculos del Efecto Coriolis. +simedtdlg.lbl.ttip.Latitude = La latitud del campo de lanzamiento afecta a la atracci\u00f3n terrestre.
Los valores positivos se dan en el hemisferio Norte, los negativos en el hemisferio Sur. simedtdlg.lbl.ttip.Length = Longitud de la varilla de lanzamiento -simedtdlg.lbl.ttip.Longitude = Requerido para modelos de sondeo y predicci\ufffdn meteorol\ufffdgica. -simedtdlg.lbl.ttip.Motorcfg = Seleccionar la configuraci\ufffdn del motor a usar -simedtdlg.lbl.ttip.Pressure = Presi\ufffdn atmosf\ufffdrica en el campo de lanzamiento +simedtdlg.lbl.ttip.Longitude = Requerido para modelos de elevaci\u00f3n y predicci\u00f3n meteorol\u00f3gica. +simedtdlg.lbl.ttip.Motorcfg = Seleccionar la configuraci\u00f3n del motor a usar +simedtdlg.lbl.ttip.Pressure = Presi\u00f3n atmosf\u00e9rica en el campo de lanzamiento 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\ufffdn mejora usando el m\ufffdtodo de integraci\ufffdn num\ufffdrica Runge-Kutta de cuarto orden. -simedtdlg.lbl.ttip.Stddeviation = Desviaci\ufffdn est\ufffdndar de la velocidad del viento.
La velocidad del viento se encuentra dentro del doble de la desviaci\ufffdn media en un 95% del tiempo. +simedtdlg.lbl.ttip.Simmethod2 = La integraci\u00f3n mejora usando el m\u00e9todo de integraci\u00f3n num\u00e9rica Runge-Kutta de cuarto orden. +simedtdlg.lbl.ttip.Stddeviation = Desviaci\u00f3n est\u00e1ndar de la velocidad del viento.
La velocidad del viento se encuentra dentro del doble de la desviaci\u00f3n media en un 95% del tiempo. simedtdlg.lbl.ttip.Temperature = Temperatura en el campo de lanzamiento. -simedtdlg.lbl.ttip.Timestep1 = Tiempo entre etapas de simulaci\ufffdn.
Un tiempo mas corto de etapa origina una simulaci\ufffdn mas exacta pero mas lenta.
-simedtdlg.lbl.ttip.Timestep2 = Con 4th el m\ufffdtodo de ordenar en la simulaci\ufffdn es bastante preciso con un tiempo de etapa de -simedtdlg.lbl.ttip.Turbulenceintensity1 = La intensidad de la turbulencia es la desviaci\ufffdn est\ufffdndar dividida por la velocidad media del viento.
-simedtdlg.lbl.ttip.Turbulenceintensity2 = Valores t\ufffdpicos en el campo +simedtdlg.lbl.ttip.Timestep1 = Tiempo entre etapas de simulaci\u00f3n.
Un tiempo mas corto de etapa origina una simulaci\u00f3n mas exacta pero mas lenta.
+simedtdlg.lbl.ttip.Timestep2 = Con 4th el m\u00e9todo de ordenar en la simulaci\u00f3n es bastante preciso con un tiempo de etapa de +simedtdlg.lbl.ttip.Turbulenceintensity1 = La intensidad de la turbulencia es la desviaci\u00f3n est\u00e1ndar dividida por la velocidad media del viento.
+simedtdlg.lbl.ttip.Turbulenceintensity2 = Valores t\u00edpicos en el campo simedtdlg.lbl.ttip.Turbulenceintensity3 = a simedtdlg.tab.CustomExpressions = Expresiones personalizadas simedtdlg.tab.Exportdata = Exportar datos simedtdlg.tab.Launchcond = Condiciones del lanzamiento -simedtdlg.tab.Plotdata = Datos del gr\ufffdfico -simedtdlg.tab.Simopt = Opciones de simulaci\ufffdn -simedtdlg.title.Editsim = Mostrar la simulaci\ufffdn -simedtdlg.txt.longA1 = Extensiones del simulador es una caracter\ufffdstica avanzada que permite que el c\ufffddigo escrito por un usuario pueda conectar e interactuar con la simulaci\ufffdn mientras \ufffdsta se est\ufffd ejecutando. -simedtdlg.txt.longA2 = Para m\ufffds detalles sobre las Extensiones, vea la documentaci\ufffdn t\ufffdcnica de Open Rocket. +simedtdlg.tab.Plotdata = Datos del gr\u00e1fico +simedtdlg.tab.Simopt = Opciones de simulaci\u00f3n +simedtdlg.title.Editsim = Mostrar la simulaci\u00f3n +simedtdlg.txt.longA1 = Extensiones del simulador es una caracter\u00edstica avanzada que permite que el c\u00f3digo escrito por un usuario pueda conectar e interactuar con la simulaci\u00f3n mientras \u00e9sta se est\u00e1 ejecutando. +simedtdlg.txt.longA2 = Para m\u00e1s detalles sobre las Extensiones, vea la documentaci\u00f3n t\u00e9cnica de Open Rocket. simpanel.but.deletesimulations = Borrar las simulaciones -simpanel.but.editsimulation = Editar la simulaci\ufffdn +simpanel.but.editsimulation = Editar la simulaci\u00f3n ! Simulation Panel -simpanel.but.newsimulation = Nueva simulaci\ufffdn -simpanel.but.plotexport = Exportar / Gr\ufffdfica +simpanel.but.newsimulation = Nueva simulaci\u00f3n +simpanel.but.plotexport = Exportar / Gr\u00e1fica simpanel.but.runsimulations = Lanzar las simulaciones simpanel.but.ttip.deletesim = Borrar las simulaciones seleccionadas -simpanel.but.ttip.editsim = Editar la simulaci\ufffdn seleccionada -simpanel.but.ttip.newsimulation = A\ufffdadir una nueva simulaci\ufffdn +simpanel.but.ttip.editsim = Editar la simulaci\u00f3n seleccionada +simpanel.but.ttip.newsimulation = A\u00f1adir una nueva simulaci\u00f3n simpanel.but.ttip.runsimu = Ejecutar las simulaciones seleccionadas simpanel.checkbox.donotask = No preguntarme de nuevo simpanel.col.Apogee = Apogeo -simpanel.col.Configuration = Configuraci\ufffdn -simpanel.col.Flighttime = Duraci\ufffdn del vuelo +simpanel.col.Configuration = Configuraci\u00f3n +simpanel.col.Flighttime = Duraci\u00f3n del vuelo simpanel.col.Groundhitvelocity = Velocidad de llegada a tierra -simpanel.col.Maxacceleration = Aceleraci\ufffdn m\ufffdxima -simpanel.col.Maxvelocity = Velocidad m\ufffdxima +simpanel.col.Maxacceleration = Aceleraci\u00f3n m\u00e1xima +simpanel.col.Maxvelocity = Velocidad m\u00e1xima simpanel.col.Motors = Motores simpanel.col.Name = Nombre simpanel.col.Timetoapogee = Tiempo hasta el apogeo -simpanel.col.Velocityatdeploy = Velocidad al abrir paraca\ufffddas -simpanel.col.Velocityoffrod = Velocidad al abandonar la gu\ufffda -simpanel.dlg.lbl.DeleteSim1 = \ufffdBorrar las simulaciones seleccionadas? -simpanel.dlg.lbl.DeleteSim2 = Esta operaci\ufffdn no puede deshacerse. +simpanel.col.Velocityatdeploy = Velocidad al abrir paraca\u00eddas +simpanel.col.Velocityoffrod = Velocidad al abandonar la gu\u00eda +simpanel.dlg.lbl.DeleteSim1 = \u00bfBorrar las simulaciones seleccionadas? +simpanel.dlg.lbl.DeleteSim2 = Esta operaci\u00f3n no puede deshacerse. simpanel.dlg.lbl.DeleteSim3 = Borrar las simulaciones -simpanel.lbl.defpref = Puede cambiar la operaci\ufffdn por defecto por las preferencias +simpanel.lbl.defpref = Puede cambiar la operaci\u00f3n por defecto por las preferencias simpanel.ttip.external = Datos importados simpanel.ttip.loaded = Datos recientes. -simpanel.ttip.noData = No hay datos de simulaci\ufffdn disponibles. +simpanel.ttip.noData = No hay datos de simulaci\u00f3n disponibles. simpanel.ttip.noWarnings = Sin alertas. -simpanel.ttip.notSimulated = A\ufffdn no ejecutada
Seleccione y haga Click en Lanzar las simulaciones para obtener datos. +simpanel.ttip.notSimulated = A\u00fan no ejecutada
Seleccione y haga Click en Lanzar las simulaciones para obtener datos. simpanel.ttip.outdated = Datos obsoletos.
Seleccione y haga Click en Lanzar las simulaciones para actualizar. simpanel.ttip.uptodate = Datos actualizados. simpanel.ttip.warnings = ALERTAS: simplotpanel.AUTO_NAME = Auto simplotpanel.CUSTOM = Personalizado -simplotpanel.Desc = Si no hay l\ufffdnea de tiempo, los datos aparecer\ufffdn en el eje X seg\ufffdn el instante en que se producen. +simplotpanel.Desc = Si no hay l\u00ednea de tiempo, los datos aparecer\u00e1n en el eje X seg\u00fan el instante en que se producen. simplotpanel.LEFT_NAME = Izquierda -simplotpanel.OptionPane.lbl1 = Se permite un m\ufffdximo de 15 impresiones -simplotpanel.OptionPane.lbl2 = No puede a\ufffdadirse la curva +simplotpanel.OptionPane.lbl1 = Se permite un m\u00e1ximo de 15 impresiones +simplotpanel.OptionPane.lbl2 = No puede a\u00f1adirse la curva simplotpanel.RIGHT_NAME = Derecha simplotpanel.but.All = Todo -simplotpanel.but.NewYaxisplottype = A\ufffdadir nuevo eje Y en la gr\ufffdfica +simplotpanel.but.NewYaxisplottype = A\u00f1adir nuevo eje Y en la gr\u00e1fica simplotpanel.but.None = Ninguno -simplotpanel.but.Plotflight = Ver gr\ufffdfica +simplotpanel.but.Plotflight = Ver gr\u00e1fica simplotpanel.but.ttip.Removethisplot = Eliminar esta curva simplotpanel.lbl.Axis = Ejes: simplotpanel.lbl.Flightevents = Eventos del vuelo: ! Simulation plot panel -simplotpanel.lbl.Presetplotconf = Configuraci\ufffdn de la gr\ufffdfica: +simplotpanel.lbl.Presetplotconf = Configuraci\u00f3n de la gr\u00e1fica: simplotpanel.lbl.Unit = Unidad: simplotpanel.lbl.Xaxistype = Tipo de eje X: simplotpanel.lbl.Yaxistypes = Tipo de eje Y: -table.column.AftOuterDiameter = Di\ufffdmetro exterior trasero -table.column.AftShoulderDiameter = Di\ufffdmetro trasero transici\ufffdn -table.column.AftShoulderLength = Longitud trasera transici\ufffdn -table.column.Description = Descripci\ufffdn -table.column.Diameter = Di\ufffdmetro +table.column.AftOuterDiameter = Di\u00e1metro exterior trasero +table.column.AftShoulderDiameter = Di\u00e1metro trasero transici\u00f3n +table.column.AftShoulderLength = Longitud trasera transici\u00f3n +table.column.Description = Descripci\u00f3n +table.column.Diameter = Di\u00e1metro table.column.Favorite = Favorito table.column.Filled = Relleno table.column.Finish = Acabado -table.column.ForeOuterDiameter = Di\ufffdmetro exterior del acople delantero -table.column.ForeShoulderDiameter = Di\ufffdmetro del acople delantero +table.column.ForeOuterDiameter = Di\u00e1metro exterior del acople delantero +table.column.ForeShoulderDiameter = Di\u00e1metro del acople delantero table.column.ForeShoulderLength = Longitud del acople delantero -table.column.InnerDiameter = Di\ufffdmetro interno +table.column.InnerDiameter = Di\u00e1metro interno table.column.Length = Longitud -table.column.LineCount = Orden de l\ufffdnea -table.column.LineLength = Longitud de l\ufffdnea -table.column.LineMaterial = Material de l\ufffdnea +table.column.LineCount = Orden de l\u00ednea +table.column.LineLength = Longitud de l\u00ednea +table.column.LineMaterial = Material de l\u00ednea table.column.Manufacturer = Fabricante table.column.Mass = Masa table.column.Material = Material -table.column.OuterDiameter = Di\ufffdmetro externo -table.column.PartNo = C\ufffdd. Referencia +table.column.OuterDiameter = Di\u00e1metro externo +table.column.PartNo = C\u00f3d. Referencia table.column.Shape = Forma -table.column.ShoulderDiameter = Di\ufffdmetro del acople +table.column.ShoulderDiameter = Di\u00e1metro del acople table.column.ShoulderLength = Longitud del acople table.column.Sides = Caras table.column.Thickness = Grosor diff --git a/core/resources/l10n/messages_ru.properties b/core/resources/l10n/messages_ru.properties index 978c4358e..8e3ed1787 100644 --- a/core/resources/l10n/messages_ru.properties +++ b/core/resources/l10n/messages_ru.properties @@ -53,7 +53,7 @@ RocketPanel.FigTypeAct.Unfinished = 3D \u0447\u0435\u0440\u043d\u043e\u0432\u043 RocketPanel.lbl.Flightcfg = \u041f\u043e\u043b\u0435\u0442\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f: RocketPanel.lbl.infoMessage = \u041a\u043b\u0438\u043a \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430    Shift+\u043a\u043b\u0438\u043a \u0434\u043b\u044f \u0441\u043c\u0435\u043d\u044b \u0432\u044b\u0431\u043e\u0440\u0430    \u0414\u0432\u043e\u0439\u043d\u043e\u0439 \u043a\u043b\u0438\u043a \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f    \u041a\u043b\u0438\u043a+\u0442\u0430\u0449\u0438\u0442\u044c \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f -RocketPanel.lbl.ViewType = \u0412\u0438\u0434: +RocketPanel.lbl.ViewType = \u0412\u0438\u0434: ! BasicFrame BasicFrame.tab.Rocketdesign = \u041f\u0440\u043e\u0435\u043a\u0442 \u0440\u0430\u043a\u0435\u0442\u044b @@ -114,21 +114,21 @@ AboutDialog.lbl.translatorIcon = ! Print dialog PrintDialog.title = \u041f\u0435\u0447\u0430\u0442\u044c \u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442 -PrintDialog.but.previewAndPrint = \u041f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043f\u0435\u0447\u0430\u0442\u0438 +PrintDialog.but.previewAndPrint = \u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438 \u043f\u0435\u0447\u0430\u0442\u044c PrintDialog.checkbox.showByStage = \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u043e \u0441\u0442\u0443\u043f\u0435\u043d\u044f\u043c PrintDialog.lbl.selectElements = \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b: printdlg.but.saveaspdf = \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 PDF printdlg.but.preview = \u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 printdlg.but.settings = \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 -PrintDialog.error.preview.title = \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440. -PrintDialog.error.preview.desc1 = \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 PDF. +PrintDialog.error.preview.title = \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440. +PrintDialog.error.preview.desc1 = \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 PDF. PrintDialog.error.preview.desc2 = \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u043f\u0446\u0438\u0435\u0439 "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 PDF" !PrintSettingsDialog PrintSettingsDialog.title = \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0435\u0447\u0430\u0442\u0438 PrintSettingsDialog.lbl.Templatefillcolor = \u0426\u0432\u0435\u0442 \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432: -PrintSettingsDialog.lbl.Templatebordercolor = \u0426\u0432\u0435\u0442 \u043e\u0431\u0432\u043e\u0434\u043a\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432: -PrintSettingsDialog.lbl.Papersize = \u0420\u0430\u0437\u0432\u043c\u0435\u0440 \u0431\u0443\u043c\u0430\u0433\u0438: +PrintSettingsDialog.lbl.Templatebordercolor = \u0426\u0432\u0435\u0442 \u0430\u0431\u0440\u0438\u0441\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432: +PrintSettingsDialog.lbl.Papersize = \u0420\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u043c\u0430\u0433\u0438: PrintSettingsDialog.lbl.Paperorientation = \u041e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0431\u0443\u043c\u0430\u0433\u0438: PrintSettingsDialog.but.Reset = \u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c PrintSettingsDialog.but.Close = \u0417\u0430\u043a\u0440\u044b\u0442\u044c @@ -204,7 +204,7 @@ edtmotorconfdlg.tbl.Stageheader = \u0421\u0442\u0443\u043f\u0435\u043d\u044c edtmotorconfdlg.tbl.Separationheader = \u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 ! Rename FlightConfiguration Dialog -RenameConfigDialog.title = \u041f\u0435\u0440\u0435\u0438\u043c\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u0435\u0442\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 +RenameConfigDialog.title = \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u0435\u0442\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 RenameConfigDialog.lbl.name = \u0418\u043c\u044f \u043f\u043e\u043b\u0435\u0442\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438: RenameConfigDialog.but.reset = \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e @@ -256,7 +256,7 @@ pref.dlg.tab.Options = \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 pref.dlg.tab.Miscellaneousoptions = \u041f\u0440\u043e\u0447\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 pref.dlg.tab.Graphics = \u0413\u0440\u0430\u0444\u0438\u043a\u0430 -pref.dlg.lbl.DecalEditor = \u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 +pref.dlg.lbl.DecalEditor = \u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 pref.dlg.opengl.lbl.title = 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0430 pref.dlg.opengl.but.enableGL = \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c 3D-\u0433\u0440\u0430\u0444\u0438\u043a\u0443 pref.dlg.opengl.but.enableAA = \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u0435 @@ -296,7 +296,7 @@ pref.dlg.lbl.Stability = \u0421\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\ pref.dlg.lbl.FlightTime = \u0412\u0440\u0435\u043c\u044f \u043f\u043e\u043b\u0435\u0442\u0430: pref.dlg.lbl.effect1 = \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u044b \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.. pref.dlg.lbl.Checkingupdates = \u041f\u043e\u0438\u0441\u043a \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439... -pref.dlg.lbl.msg1 = \u041f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. +pref.dlg.lbl.msg1 = \u041f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. pref.dlg.lbl.msg2 = \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u0445. pref.dlg.lbl.msg3 = \u0412\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 OpenRocket. pref.dlg.lbl.msg4 = \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e. @@ -306,7 +306,7 @@ pref.dlg.PrefChoiseSelector3 = \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0442\ pref.dlg.PrefBooleanSelector1 = \u0423\u0434\u0430\u043b\u0438\u0442\u044c pref.dlg.PrefBooleanSelector2 = \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c pref.dlg.Add = \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c -pref.dlg.DescriptionArea.Adddirectories = \u0414\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0432\u043e\u0438\u0445 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438, \u0444\u0430\u0439\u043b\u044b \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439 RASP (*.eng), \u0444\u0430\u0439\u043b\u044b \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439 RockSim (*.rse) \u0438\u043b\u0438 ZIP-\u0430\u0440\u0445\u0438\u0432\u044b, \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u043e\u0439 \u0441 \u0437\u0430\u043f\u044f\u0442\u043e\u0439 (;). \u0418\u0437\u043c\u043d\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0442\u0443\u043f\u044f\u0442 \u0432 \u0441\u0438\u043b\u0443 \u043f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 OpenRocket. +pref.dlg.DescriptionArea.Adddirectories = \u0414\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0432\u043e\u0438\u0445 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438, \u0444\u0430\u0439\u043b\u044b \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439 RASP (*.eng), \u0444\u0430\u0439\u043b\u044b \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439 RockSim (*.rse) \u0438\u043b\u0438 ZIP-\u0430\u0440\u0445\u0438\u0432\u044b, \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u043e\u0439 \u0441 \u0437\u0430\u043f\u044f\u0442\u043e\u0439 (;). \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0442\u0443\u043f\u044f\u0442 \u0432 \u0441\u0438\u043b\u0443 \u043f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 OpenRocket. PreferencesDialog.lbl.language = \u042f\u0437\u044b\u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430: PreferencesDialog.languages.default = \u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 @@ -315,7 +315,7 @@ PreferencesDialog.lbl.languageEffect = \u042f\u0437\u044b\u043a \u0441\u043c\u04 ! Simulation edit dialog simedtdlg.but.runsimulation = \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0440\u0430\u0441\u0447\u0435\u0442 simedtdlg.but.resettodefault = \u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e -simedtdlg.but.savedefault = Save as default +simedtdlg.but.savedefault = \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e simedtdlg.but.add = \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c simedtdlg.but.remove = \u0423\u0434\u0430\u043b\u0438\u0442\u044c simedtdlg.title.Editsim = \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0440\u0430\u0441\u0447\u0435\u0442\u0430 @@ -342,7 +342,7 @@ simedtdlg.checkbox.InterStdAtmosphere = \u0418\u0441\u043f\u043e\u043b\u044c\u04 simedtdlg.checkbox.ttip.InterStdAtmosphere1 = \u0412\u044b\u0431\u0440\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u043c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0430\u0442\u043c\u043e\u0441\u0444\u0435\u0440\u044b
\u0412 \u044d\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 simedtdlg.checkbox.ttip.InterStdAtmosphere2 = \u0438 \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0435 simedtdlg.checkbox.ttip.InterStdAtmosphere3 = \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043c\u043e\u0440\u044f. -simedtdlg.lbl.Temperature = \u0422\u0435\u043c\u0435\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430: +simedtdlg.lbl.Temperature = \u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430: simedtdlg.lbl.ttip.Temperature = \u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0435. simedtdlg.lbl.Pressure = \u0414\u0430\u0432\u043b\u0435\u043d\u0438\u0435: simedtdlg.lbl.ttip.Pressure = \u0410\u0442\u043c\u043e\u0441\u0444\u0435\u0440\u043d\u043e\u0435 \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0435. @@ -366,7 +366,7 @@ simedtdlg.lbl.ttip.Direction2 = \u043a \u0432\u0435\u0442\u0440\u0443, simedtdlg.lbl.ttip.Direction3 = \u043e\u0442 \u0432\u0435\u0442\u0440\u0430. simedtdlg.border.Simopt = \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0430\u0441\u0447\u0435\u0442\u0430 simedtdlg.lbl.Calcmethod = \u041c\u0435\u0442\u043e\u0434 \u0440\u0430\u0441\u0447\u0435\u0442\u0430: -simedtdlg.lbl.ttip.Calcmethod = \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0411\u043e\u0440\u0440\u043e\u043c\u0430\u043d\u0430 \u0440\u0430\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0430\u044d\u0440\u043e\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u043e\u0437\u0434\u0435\u0441\u0442\u0432\u0438\u044f \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e
\u0444\u043e\u0440\u043c\u0443\u043b\u0430\u043c \u0411\u043e\u0440\u0440\u043e\u043c\u0430\u043d\u0430, \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u043c \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. +simedtdlg.lbl.ttip.Calcmethod = \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0411\u043e\u0440\u0440\u043e\u043c\u0430\u043d\u0430 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0430\u044d\u0440\u043e\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e
\u0444\u043e\u0440\u043c\u0443\u043b\u0430\u043c \u0411\u043e\u0440\u0440\u043e\u043c\u0430\u043d\u0430, \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u043c \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. simedtdlg.lbl.ExtBarrowman = \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0411\u043e\u0440\u0440\u043e\u043c\u0430\u043d\u0430 simedtdlg.lbl.Simmethod = \u041c\u0435\u0442\u043e\u0434 \u0440\u0430\u0441\u0447\u0435\u0442\u0430: simedtdlg.lbl.ttip.Simmethod1 = \u0420\u0430\u0441\u0447\u0435\u0442 \u0434\u043b\u044f \u0448\u0435\u0441\u0442\u0438 \u0441\u0442\u0435\u043f\u0435\u043d\u0435\u0439 \u0441\u0432\u043e\u0431\u043e\u0434\u044b \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u0443\u044e \u0441\u0432\u043e\u0431\u043e\u0434\u0443 \u0440\u0430\u043a\u0435\u0442\u044b \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u043b\u0435\u0442\u0430
@@ -436,13 +436,13 @@ simpanel.col.Maxacceleration = \u041c\u0430\u043a\u0441. \u0443\u0441\u043a\u043 simpanel.col.Timetoapogee = \u0412\u0440\u0435\u043c\u044f \u0434\u043e \u0430\u043f\u043e\u0433\u0435\u044f simpanel.col.Flighttime = \u0412\u0440\u0435\u043c\u044f \u043f\u043e\u043b\u0435\u0442\u0430 simpanel.col.Groundhitvelocity = \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0437\u0435\u043c\u043b\u0435\u043d\u0438\u044f -simpanel.ttip.uptodate = \u0414\u0430\u043d\u043d\u044b\u0435 \u0432\u0430\u043b\u0438\u0434\u043d\u044b +simpanel.ttip.uptodate = \u0414\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b simpanel.ttip.loaded = \u0414\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 simpanel.ttip.outdated = \u0414\u0430\u043d\u043d\u044b\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u0438
\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0440\u0430\u0441\u0447\u0435\u0442\u044b \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430. simpanel.ttip.external = \u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 simpanel.ttip.notSimulated = \u0420\u0430\u0441\u0447\u0435\u0442 \u0435\u0449\u0435 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0441\u044f
\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0440\u0430\u0441\u0447\u0435\u0442\u044b \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430. simpanel.ttip.noData = \u041d\u0435\u0442 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. -simpanel.ttip.noWarnings = \u041d\u0435\u0442 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0439 +simpanel.ttip.noWarnings = \u0417\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0439 \u043d\u0435\u0442. simpanel.ttip.warnings = \u0417\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f: ! SimulationRunDialog @@ -454,21 +454,26 @@ SimuRunDlg.lbl.Velocity = \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c: SimuRunDlg.msg.Unabletosim = \u0420\u0430\u0441\u0447\u0435\u0442 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d: SimuRunDlg.msg.errorOccurred = \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430: +BasicEventSimulationEngine.error.noMotorsDefined = \u0414\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0438. +BasicEventSimulationEngine.error.earlyMotorBurnout = \u0412\u044b\u0433\u043e\u0440\u0430\u043d\u0438\u0435 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f \u0431\u0435\u0437 \u043e\u0442\u0440\u044b\u0432\u0430 \u0440\u0430\u043a\u0435\u0442\u044b \u043e\u0442 \u0437\u0435\u043c\u043b\u0438. +BasicEventSimulationEngine.error.noIgnition = \u041d\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435 \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0437\u0430\u0436\u0438\u0433\u0430\u043d\u0438\u0435. +BasicEventSimulationEngine.error.NaNResult = \u0420\u0430\u0441\u0447\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u043b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0449\u0435\u0435\u0441\u044f \u0447\u0438\u0441\u043b\u043e\u043c (NaN). \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043e\u0442\u0447\u0435\u0442 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435. -RK4SimulationStepper.error.valuesTooLarge = \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0440\u0430\u0441\u0447\u0435\u0442\u0430\u0445 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u043b\u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u044b. \u041f\u043e\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0448\u0430\u0433. + +RK4SimulationStepper.error.valuesTooLarge = \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0440\u0430\u0441\u0447\u0435\u0442\u0430\u0445 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u043b\u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u044b. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0448\u0430\u0433. SimulationModifierTree.OptimizationParameters = \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b ! SimulationExportPanel SimExpPan.desc = \u0422\u0435\u043a\u0441\u0442, \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u044f\u0442\u044b\u043c\u0438 (*.csv) SimExpPan.border.Vartoexport = \u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 -SimExpPan.border.Stage = Stage to export +SimExpPan.border.Stage = \u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0443\u043f\u0435\u043d\u044c SimExpPan.but.Selectall = \u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 SimExpPan.but.Selectnone = \u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u044b\u0431\u043e\u0440 SimExpPan.border.Fieldsep = \u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u0435\u0439 SimExpPan.lbl.Fieldsepstr = \u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u0435\u0439: SimExpPan.lbl.longA1 = \u0421\u0442\u0440\u043e\u043a\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u0432 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435.
-SimExpPan.lbl.longA2 = \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430, \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u044f\u0442\u044b\u043c\u0438 (CSV) \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0437\u043d\u0430\u043a\u043e\u043c ',' +SimExpPan.lbl.longA2 = \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430, \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u044f\u0442\u044b\u043c\u0438 (CSV) \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0437\u043d\u0430\u043a\u043e\u043c ',' SimExpPan.checkbox.Includesimudesc = \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0430\u0441\u0447\u0435\u0442\u0430 SimExpPan.checkbox.ttip.Includesimudesc = \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u0444\u0430\u0439\u043b\u0430 \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0440\u0430\u0441\u0447\u0435\u0442\u0430 SimExpPan.border.Comments = \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u044f @@ -520,7 +525,7 @@ ExpressionBuilderDialog.InsertVariable = \u0412\u0441\u0442\u0430\u0432\u0438\u0 ExpressionBuilderDialog.InsertOperator = \u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 ExpressionBuilderDialog.led.ttip.Name = \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c ExpressionBuilderDialog.led.ttip.Symbol = \u041e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c -ExpressionBuilderDialog.led.ttip.Expression = \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u0432\u0435\u0447\u0442\u043d\u044b\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b +ExpressionBuilderDialog.led.ttip.Expression = \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b ExpressionBuilderDialog.CopyToOtherSimulations = \u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0430\u0441\u0447\u0435\u0442\u044b ExpressionBuilderDialog.CopyToOtherSimulations.ttip = \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043e\u043f\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u0430\u0441\u0447\u0435\u0442\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430
\u0423\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u0430\u0441\u0447\u0435\u0442\u0430\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b. @@ -559,7 +564,7 @@ Operator.random = \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0441\ Operator.expm1 = \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e exp(x)-1, \u043d\u043e \u0431\u043b\u0434\u0435\u0435 \u0442\u043e\u0447\u043d\u043e\u0435 \u0434\u043b\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 x Operator.mean = \u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u044f\u0434\u0430 Operator.min = \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u044f\u0434\u0430 -Operator.max = \u041c\u0430\u043a\u0438\u0441\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u044f\u0434\u0430 +Operator.max = \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u044f\u0434\u0430 Operator.var = \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u043d\u043e\u0441\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u044f\u0434\u0430 Operator.stdev = \u0414\u0435\u0432\u0438\u0430\u0442\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u044f\u0434\u0430 Operator.rms = \u0421\u0440\u0435\u0434\u043d\u0435-\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u044f\u0434\u0430 @@ -607,7 +612,7 @@ compaddbuttons.Bodycompandfinsets = \u041a\u043e\u0440\u043f\u0443\u0441\u043d\u compaddbuttons.Nosecone = \u0413\u043e\u043b\u043e\u0432\u043d\u043e\u0439\n\u043e\u0431\u0442\u0435\u043a\u0430\u0442\u0435\u043b\u044c compaddbuttons.Bodytube = \u041a\u043e\u0440\u043f\u0443\u0441\u043d\u0430\u044f\n\u0442\u0440\u0443\u0431\u0430 compaddbuttons.Transition = \u041f\u0435\u0440\u0435\u0445\u043e\u0434 -compaddbuttons.Trapezoidal = \u0422\u0440\u0430\u043f\u0435\u0446\u0438\u0435\u0434\u0430\u043b\u044c\u043d\u043e\u0435\n\u043e\u043f\u0435\u0440\u0435\u043d\u0438\u0435 +compaddbuttons.Trapezoidal = \u0422\u0440\u0430\u043f\u0435\u0446\u0435\u0438\u0434\u0430\u043b\u044c\u043d\u043e\u0435\n\u043e\u043f\u0435\u0440\u0435\u043d\u0438\u0435 compaddbuttons.Elliptical = \u042d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435\n\u043e\u043f\u0435\u0440\u0435\u043d\u0438\u0435 compaddbuttons.Freeform = \u0421\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0439\n\u0444\u043e\u0440\u043c\u044b compaddbuttons.Launchlug = \u041d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435\n\u043a\u043e\u043b\u044c\u0446\u043e @@ -692,7 +697,7 @@ ringcompcfg.radialdirectionfrom = \u0420\u0430\u0434\u0438\u0430\u043b\u044c\u04 ringcompcfg.but.Reset = \u0421\u0431\u0440\u043e\u0441 ringcompcfg.but.Resetcomponant = \u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043d\u0430 \u043e\u0441\u0438 \u0440\u0430\u043a\u0435\u0442\u044b ringcompcfg.EngineBlock.desc = \u0423\u043f\u043e\u0440 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044e \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f \u0432\u043f\u0435\u0440\u0435\u0434 \u0432 \u0442\u0440\u0443\u0431\u0435.

\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044c, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u041a\u043e\u0440\u043f\u0443\u0441\u043d\u0443\u044e \u0442\u0440\u0443\u0431\u0443 \u0438\u043b\u0438 \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u0442\u0440\u0443\u0431\u0443 \u0438 \u043e\u0442\u043c\u0435\u0442\u044c\u0442\u0435 \u044d\u0442\u043e\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043a\u0430\u043a \u043a\u0440\u0435\u043f\u0435\u0436 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0414\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044c . -ringcompcfg.note.desc = \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0442\u0440\u0443\u0431\u0430 \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0430\u044d\u0440\u043e\u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0443, \u0434\u0430\u0436\u0435 \u0431\u0443\u0434\u0443\u0447\u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u043e\u0439 \u0437\u0430 \u043f\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043a\u043e\u0440\u043f\u0443\u0441\u0430. +ringcompcfg.note.desc = \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0442\u0440\u0443\u0431\u0430 \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0430\u044d\u0440\u043e\u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0443, \u0434\u0430\u0436\u0435 \u0431\u0443\u0434\u0443\u0447\u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u043e\u0439 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043a\u043e\u0440\u043f\u0443\u0441\u0430. ! Body Tube Config @@ -705,7 +710,7 @@ BodyTubecfg.tab.Generalproperties = \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u BodyTubecfg.tab.Motor = \u0414\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044c BodyTubecfg.tab.Motormountconf = \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u044f \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f BodyTubecfg.checkbox.Automatic = \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 -BodyTubecfg.checkbox.Filled = \u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u0430\u044f +BodyTubecfg.checkbox.Filled = \u0421\u043f\u043b\u043e\u0448\u043d\u0430\u044f ! FinSetConfig FinSetConfig.tab.Fintabs = \u041a\u0440\u0435\u043f\u0435\u0436\u043d\u044b\u0435 \u0432\u044b\u0441\u0442\u0443\u043f\u044b @@ -885,7 +890,7 @@ InnerTubeCfg.lbl.ttip.Rotation = \u0423\u0433\u043e\u043b \u043f\u043e\u0432\u04 InnerTubeCfg.lbl.Rotangle = \u0423\u0433\u043e\u043b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 InnerTubeCfg.but.Splitcluster = \u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 InnerTubeCfg.lbl.longA1 = \u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b.
-InnerTubeCfg.lbl.longA2 = \u042d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442 \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0435 \u043a \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0442\u0440\u0443\u0431\u0435. +InnerTubeCfg.lbl.longA2 = \u0422\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0435 \u043a \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0442\u0440\u0443\u0431\u0435. InnerTubeCfg.but.Resetsettings = \u0421\u0431\u0440\u043e\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a InnerTubeCfg.but.ttip.Resetsettings = \u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e @@ -940,7 +945,7 @@ NoseConeCfg.lbl.Noseconelength = \u0414\u043b\u0438\u043d\u0430 \u043e\u0431\u04 NoseConeCfg.lbl.Basediam = \u0414\u0438\u0430\u043c\u0435\u0442\u0440 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u044f: NoseConeCfg.checkbox.Automatic = \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 NoseConeCfg.lbl.Wallthickness = \u0422\u043e\u043b\u0449\u0438\u043d\u0430 \u0441\u0442\u0435\u043d\u043a\u0438: -NoseConeCfg.checkbox.Filled = \u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0439 +NoseConeCfg.checkbox.Filled = \u0421\u043f\u043b\u043e\u0448\u043d\u043e\u0439 NoseConeCfg.tab.General = \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 NoseConeCfg.tab.ttip.General = \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b NoseConeCfg.tab.Shoulder = \u0412\u044b\u0441\u0442\u0443\u043f \u043c\u0443\u0444\u0442\u044b @@ -1005,7 +1010,7 @@ StreamerCfg.lbl.longA1 = \u041a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\ StreamerCfg.lbl.longB1 = \u041a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0441\u043e\u043f\u0440\u043e\u0442\u0438\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043e\u0431\u0449\u0435\u0439 \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u043b\u0435\u043d\u0442\u044b.
StreamerCfg.lbl.longB2 = \u0411\u043e\u043b\u044c\u0448\u0438\u0439 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u043b\u043e\u0431\u043e\u0432\u043e\u0433\u043e \u0441\u043e\u043f\u0440\u043e\u0442\u0438\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f. StreamerCfg.lbl.Automatic = \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 -StreamerCfg.lbl.longC1 = \u041a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0441\u043e\u043f\u0440\u043e\u0442\u043e\u0438\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u043b\u0435\u043d\u0442\u044b. +StreamerCfg.lbl.longC1 = \u041a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0441\u043e\u043f\u0440\u043e\u0442\u0438\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u043b\u043e\u0449\u0430\u0434\u0438 \u043b\u0435\u043d\u0442\u044b. StreamerCfg.lbl.Posrelativeto = \u041f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e: StreamerCfg.lbl.plus = \u043f\u043b\u044e\u0441 StreamerCfg.lbl.Packedlength = \u0414\u043b\u0438\u043d\u0430 \u0443\u043a\u043b\u0430\u0434\u043a\u0438: @@ -1039,7 +1044,7 @@ TransitionCfg.lbl.Forediam = \u0414\u0438\u0430\u043c\u0435\u0442\u0440 \u0432\u TransitionCfg.checkbox.Automatic = \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 TransitionCfg.lbl.Aftdiam = \u0414\u0438\u0430\u043c\u0435\u0442\u0440 \u0432\u0445\u043e\u0434\u0430: TransitionCfg.lbl.Wallthickness = \u0422\u043e\u043b\u0449\u0438\u043d\u0430 \u0441\u0442\u0435\u043d\u043a\u0438: -TransitionCfg.checkbox.Filled = \u0417\u0430\u043b\u0438\u0442 +TransitionCfg.checkbox.Filled = \u0421\u043f\u043b\u043e\u0448\u043d\u043e\u0439 TransitionCfg.tab.General = \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 TransitionCfg.tab.Generalproperties = \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b TransitionCfg.tab.Shoulder = \u0412\u044b\u0441\u0442\u0443\u043f @@ -1065,18 +1070,18 @@ TrapezoidFinSetCfg.tab.General = \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u043 TrapezoidFinSetCfg.tab.Generalproperties = \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b ! StorageOptionChooser -StorageOptChooser.lbl.Simdatatostore = \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0441\u0447\u0442\u043e\u0432: +StorageOptChooser.lbl.Simdatatostore = \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0441\u0447\u0435\u0442\u043e\u0432: StorageOptChooser.rdbut.Allsimdata = \u0412\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0441\u0447\u0435\u0442\u0430 StorageOptChooser.lbl.longA1 = \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0441\u0447\u0435\u0442\u043e\u0432.
StorageOptChooser.lbl.longA2 = \u0420\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u043c! StorageOptChooser.rdbut.Every = \u041a\u0430\u0436\u0434\u044b\u0435 -StorageOptChooser.lbl.longB1 = \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0440\u0430\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441 \u0442\u0430\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439.
+StorageOptChooser.lbl.longB1 = \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0439 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441 \u0442\u0430\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439.
StorageOptChooser.lbl.longB2 = \u0411\u043e\u043b\u044c\u0448\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u044e\u0442 \u043c\u0435\u043d\u044c\u0448\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430. StorageOptChooser.lbl.seconds = \u0441\u0435\u043a\u0443\u043d\u0434 StorageOptChooser.rdbut.Onlyprimfig = \u0422\u043e\u043b\u044c\u043a\u043e \u0441\u0445\u0435\u043c\u0443 StorageOptChooser.lbl.longC1 = \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u0432\u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435
StorageOptChooser.lbl.longC2 = \u042d\u0442\u043e \u0434\u0430\u0435\u0442 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430. -StorageOptChooser.lbl.longD1 = \u041f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0440\u0438\u0443\u044e\u0449\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438. +StorageOptChooser.lbl.longD1 = \u041f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438. StorageOptChooser.ttip.Saveopt = \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 StorageOptChooser.lbl.Estfilesize = \u041e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430: StorageOptChooser.lbl.Saveopt = \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f @@ -1100,7 +1105,7 @@ TCMotorSelPan.equalsIgnoreCase.None = \u041d\u0435\u0442 TCMotorSelPan.lbl.NumberofsecondsorNone = (\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u043a\u0443\u043d\u0434 \u0438\u043b\u0438 "\u041d\u0435\u0442") TCMotorSelPan.lbl.Totalimpulse = \u041e\u0431\u0449\u0438\u0439 \u0438\u043c\u043f\u0443\u043b\u044c\u0441: TCMotorSelPan.lbl.Avgthrust = \u0421\u0440\u0435\u0434\u043d\u044f\u044f \u0442\u044f\u0433\u0430: -TCMotorSelPan.lbl.Maxthrust = \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044f\u0430 \u0442\u044f\u0433\u0430: +TCMotorSelPan.lbl.Maxthrust = \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0442\u044f\u0433\u0430: TCMotorSelPan.lbl.Burntime = \u0412\u0440\u0435\u043c\u044f \u0433\u043e\u0440\u0435\u043d\u0438\u044f: TCMotorSelPan.lbl.Launchmass = \u0421\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u044f \u043c\u0430\u0441\u0441\u0430: TCMotorSelPan.lbl.Emptymass = \u041e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0430\u044f \u043c\u0430\u0441\u0441\u0430: @@ -1160,7 +1165,7 @@ main.menu.edit.paste = \u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c main.menu.edit.delete = \u0423\u0434\u0430\u043b\u0438\u0442\u044c main.menu.edit.resize = \u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c... main.menu.edit.resize.desc = \u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u0438 \u0441\u0445\u0435\u043c\u044b -main.menu.edit.editprese = \u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043e\u043a \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 +main.menu.edit.editprese = \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 main.menu.edit.preferences = \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 main.menu.edit.preferences.desc = \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f @@ -1169,7 +1174,7 @@ main.menu.analyze.desc = \u0410\u043d\u0430\u043b\u0438\u0437 \u0440\u0430\u043a main.menu.analyze.componentAnalysis = \u0410\u043d\u0430\u043b\u0438\u0437 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 main.menu.analyze.componentAnalysis.desc = \u0410\u043d\u0430\u043b\u0438\u0437 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u043a\u0435\u0442\u044b \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 main.menu.analyze.optimization = \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u043a\u0435\u0442\u044b -main.menu.analyze.optimization.desc = \u041e\u0431\u0449\u0430\u044f\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0440\u0430\u043a\u0435\u0442\u044b +main.menu.analyze.optimization.desc = \u041e\u0431\u0449\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0440\u0430\u043a\u0435\u0442\u044b main.menu.analyze.customExpressions = \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f main.menu.analyze.customExpressions.desc = \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0442\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 @@ -1315,7 +1320,7 @@ TubeCoupler.TubeCoupler = \u041c\u0443\u0444\u0442\u0430 !InnerTube InnerTube.InnerTube = \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0442\u0440\u0443\u0431\u0430 ! TrapezoidFinSet -TrapezoidFinSet.TrapezoidFinSet = \u0422\u0440\u0430\u043f\u0435\u0446\u0438\u0435\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043f\u0435\u0440\u0435\u043d\u0438\u0435 +TrapezoidFinSet.TrapezoidFinSet = \u0422\u0440\u0430\u043f\u0435\u0446\u0435\u0438\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043f\u0435\u0440\u0435\u043d\u0438\u0435 ! FreeformFinSet FreeformFinSet.FreeformFinSet = \u041e\u043f\u0435\u0440\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b !MassComponent @@ -1358,13 +1363,13 @@ MotorMount.IgnitionEvent.short.NEVER = \u041d\u0438\u043a\u043e\u0433\u0434\u043 ComponentIcons.Nosecone = \u0413\u043e\u043b\u043e\u0432\u043d\u043e\u0439 \u043e\u0431\u0442\u0435\u043a\u0430\u0442\u0435\u043b\u044c ComponentIcons.Bodytube = \u041a\u043e\u0440\u043f\u0443\u0441\u043d\u0430\u044f \u0442\u0440\u0443\u0431\u0430 ComponentIcons.Transition = \u041f\u0435\u0440\u0435\u0445\u043e\u0434 -ComponentIcons.Trapezoidalfinset = \u0422\u0440\u0430\u043f\u0435\u0446\u0438\u0435\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043f\u0435\u0440\u0435\u043d\u0438\u0435 +ComponentIcons.Trapezoidalfinset = \u0422\u0440\u0430\u043f\u0435\u0446\u0435\u0438\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043f\u0435\u0440\u0435\u043d\u0438\u0435 ComponentIcons.Ellipticalfinset = \u042d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u043f\u0435\u0440\u0435\u043d\u0438\u0435 ComponentIcons.Freeformfinset = \u041e\u043f\u0435\u0440\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b ComponentIcons.Launchlug = \u041d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u043a\u043e\u043b\u044c\u0446\u043e ComponentIcons.Innertube = \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0442\u0440\u0443\u0431\u0430 ComponentIcons.Tubecoupler = \u041c\u0443\u0444\u0442\u0430 -ComponentIcons.Centeringring = \u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0435\u0435 \u043a\u043e\u043b\u044c\u0443\u043e +ComponentIcons.Centeringring = \u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0435\u0435 \u043a\u043e\u043b\u044c\u0446\u043e ComponentIcons.Bulkhead = \u041f\u0435\u0440\u0435\u0431\u043e\u0440\u043a\u0430 ComponentIcons.Engineblock = \u0423\u043f\u043e\u0440 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044f ComponentIcons.Parachute = \u041f\u0430\u0440\u0430\u0448\u044e\u0442 @@ -1408,7 +1413,7 @@ FlightEvent.Type.GROUND_HIT = \u041f\u0440\u0438\u0437\u0435\u043c\u043b\u0435\u FlightEvent.Type.SIMULATION_END = \u041a\u043e\u043d\u0435\u0446 \u0440\u0430\u0441\u0447\u0435\u0442\u0430 FlightEvent.Type.ALTITUDE = \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432\u044b\u0441\u043e\u0442\u044b FlightEvent.Type.TUMBLE = \u041e\u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u043d\u0438\u0435 -FlightEvent.Type.EXCEPTION = Exception +FlightEvent.Type.EXCEPTION = \u041e\u0448\u0438\u0431\u043a\u0430 ! ThrustCurveMotorColumns TCurveMotorCol.MANUFACTURER = \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c @@ -1584,8 +1589,8 @@ optimization.modifier.nosecone.diameter = \u0414\u0438\u0430\u043c\u0435\u0442\u optimization.modifier.nosecone.diameter.desc = \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u0430\u043c\u0435\u0442\u0440 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u043e\u0441\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u0442\u0435\u043a\u0430\u0442\u0435\u043b\u044f. optimization.modifier.nosecone.thickness = \u0422\u043e\u043b\u0449\u0438\u043d\u0430 optimization.modifier.nosecone.thickness.desc = \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u0449\u0438\u043d\u0443 \u0441\u0442\u0435\u043d\u043e\u043a \u043d\u043e\u0441\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u0442\u0435\u043a\u0430\u0442\u0435\u043b\u044f. -optimization.modifier.nosecone.shapeparameter = \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0444\u043e\u0440\u0438\u044b -optimization.modifier.nosecone.shapeparameter.desc = \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u0442\u0440 \u0444\u043e\u0440\u043c\u044b \u043d\u043e\u0441\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u0442\u0435\u043a\u0430\u0442\u0435\u043b\u044f. +optimization.modifier.nosecone.shapeparameter = \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0444\u043e\u0440\u043c\u044b +optimization.modifier.nosecone.shapeparameter.desc = \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0444\u043e\u0440\u043c\u044b \u043d\u043e\u0441\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u0442\u0435\u043a\u0430\u0442\u0435\u043b\u044f. optimization.modifier.transition.length = \u0414\u043b\u0438\u043d\u0430 optimization.modifier.transition.length.desc = \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u0438\u043d\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430. @@ -1638,7 +1643,7 @@ optimization.modifier.internalcomponent.position = \u041f\u043e\u043b\u043e\u043 optimization.modifier.internalcomponent.position.desc = \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e. optimization.modifier.masscomponent.mass = \u041c\u0430\u0441\u0441\u0430 -optimization.modifier.masscomponent.mass.desc = \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c the \u043c\u0430\u0441\u0441\u0443 \u0432\u0435\u0441\u043e\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430. +optimization.modifier.masscomponent.mass.desc = \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0443 \u0432\u0435\u0441\u043e\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430. optimization.modifier.parachute.diameter = \u0414\u0438\u0430\u043c\u0435\u0442\u0440 optimization.modifier.parachute.diameter.desc = \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u0430\u043c\u0435\u0442\u0440 \u043f\u0430\u0440\u0430\u0448\u044e\u0442\u043d\u043e\u0433\u043e \u043a\u0443\u043f\u043e\u043b\u0430. @@ -1712,7 +1717,7 @@ GeneralOptimizationDialog.status.stepSize.ttip = \u0422\u0435\u043a\u0443\u0449\ GeneralOptimizationDialog.btn.plotPath = \u0413\u0440\u0430\u0444\u0438\u043a \u043f\u0443\u0442\u0438 GeneralOptimizationDialog.btn.plotPath.ttip = \u041f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a \u043f\u0443\u0442\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 (\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u043b\u0438 \u0434\u0432\u0443\u0445 \u0441\u0442\u0435\u043f\u0435\u043d\u0435\u0439) GeneralOptimizationDialog.btn.save = \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0443\u0442\u044c -GeneralOptimizationDialog.btn.save.ttip = \u0421\u043e\u0445\u0440\u043d\u0430\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0432 \u0444\u0430\u0439\u043b CSV. +GeneralOptimizationDialog.btn.save.ttip = \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0432 \u0444\u0430\u0439\u043b CSV. GeneralOptimizationDialog.btn.apply = \u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e GeneralOptimizationDialog.btn.apply.ttip = \u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043a \u0441\u0445\u0435\u043c\u0435 \u0440\u0430\u043a\u0435\u0442\u044b GeneralOptimizationDialog.btn.reset = \u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c @@ -1751,7 +1756,7 @@ MaximumAltitudeParameter.name = \u0412\u044b\u0441\u043e\u0442\u0430 \u0430\u043 MaximumVelocityParameter.name = \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c MaximumAccelerationParameter.name = \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 StabilityParameter.name = \u0421\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c -GroundHitVelocityParameter.name = \u0421\u043a\u043e\u0440\u0441\u0442\u044c \u043f\u0440\u0438\u0437\u0435\u043c\u043b\u0435\u043d\u0438\u044f +GroundHitVelocityParameter.name = \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0437\u0435\u043c\u043b\u0435\u043d\u0438\u044f LandingDistanceParameter.name = \u0414\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u043f\u0440\u0438\u0437\u0435\u043c\u043b\u0435\u043d\u0438\u044f TotalFlightTimeParameter.name = \u041e\u0431\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u043b\u0435\u0442\u0430 DeploymentVelocityParameter.name = \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0438 \u043f\u0430\u0440\u0430\u0448\u044e\u0442\u0430 @@ -1791,7 +1796,7 @@ GuidedTourSelectionDialog.btn.start = \u041d\u0430\u0447\u0430\u0442\u044c! CustomFinImport.button.label = \u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f CustomFinImport.badFinImage = \u041d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u0423\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044c\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d \u043e\u0434\u0438\u043d\u043c \u0447\u0435\u0440\u043d\u044b\u043c \u0438\u043b\u0438 \u0442\u0435\u043c\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u043d\u0438\u0437\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. CustomFinImport.errorLoadingFile = \u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0430\u0439\u043b\u0430: -CustomFinImport.errorParsingFile = \u041e\u0448\u0438\u0431\u043a\u0430 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430: +CustomFinImport.errorParsingFile = \u041e\u0448\u0438\u0431\u043a\u0430 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430: CustomFinImport.undo = \u0418\u043c\u043f\u043e\u0440\u0442 \u0444\u043e\u0440\u043c\u044b \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 CustomFinImport.error.title = \u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 CustomFinImport.error.badimage = \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0438\u0437 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. @@ -1838,7 +1843,7 @@ table.column.Shape = \u0424\u043e\u0440\u043c\u0430 table.column.Material = \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b table.column.Finish = \u041e\u0442\u0434\u0435\u043b\u043a\u0430 table.column.Thickness = \u0422\u043e\u043b\u0449\u0438\u043d\u0430 -table.column.Filled = \u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d +table.column.Filled = \u0421\u043f\u043b\u043e\u0448\u043d\u043e\u0439 table.column.Mass = \u041c\u0430\u0441\u0441\u0430 table.column.Diameter = \u0414\u0438\u0430\u043c\u0435\u0442\u0440 table.column.Sides = \u0421\u0442\u043e\u0440\u043e\u043d\u044b @@ -1866,6 +1871,7 @@ MotorConfigurationPanel.btn.removeMotor = \u0423\u0434\u0430\u043b\u0438\u0442\u MotorConfigurationPanel.btn.selectMotor = \u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044c MotorConfigurationPanel.btn.selectIgnition = \u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0437\u0430\u0436\u0438\u0433\u0430\u043d\u0438\u0435 MotorConfigurationPanel.btn.resetIgnition = \u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0437\u0430\u0436\u0438\u0433\u0430\u043d\u0438\u0435 +MotorConfigurationPanel.lbl.nomotors = \u041a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u044f \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b. \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043e\u0434\u043d\u0443 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u0440\u043f\u0443\u0441\u043d\u044b\u0445 \u0442\u0440\u0443\u0431 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u043b\u0435\u0432\u0430. MotorConfigurationTableModel.table.ignition.default = \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e ({0}) RecoveryConfigurationPanel.table.deployment.default = \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e ({0}) @@ -1885,4 +1891,4 @@ SeparationSelectionDialog.opt.override = \u0418\u0437\u043c\u0435\u043d\u0438\u0 MotorConfigurationPanel.description = \u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0438 \u0438 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u0436\u0438\u0433\u0430\u043d\u0438\u044f \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439 \u0434\u043b\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u043b\u0435\u0442\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.
\u041a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u044f \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439: \u0423\u043a\u0430\u0436\u0438\u0442\u0435, \u043a\u0430\u043a\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u044f \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439.
\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0435\u0439: \u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044c \u0438 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u0436\u0438\u0433\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u044f. -MotorDescriptionSubstitutor.description = \u0414\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0438 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 +MotorDescriptionSubstitutor.description = \u0414\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u0438 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \ No newline at end of file diff --git a/core/resources/l10n/messages_tr.properties b/core/resources/l10n/messages_tr.properties new file mode 100644 index 000000000..e6ff1e8d6 --- /dev/null +++ b/core/resources/l10n/messages_tr.properties @@ -0,0 +1,171 @@ +# +# English base translation file +# +# Should you need to add new logical keys here is the proposed method +# +# className.ComponentType.componentName +# +# +# Text tokens within braces should not be translated, e.g. +# "The file '{filename}' exists." +# They are pieces that are inserted dynamically. +# + + +! Set to the name of the current translation file (used for debugging +purposes) +debug.currentFile = messages.properties + +! RocketActions +RocketActions.checkbox.Donotaskmeagain = Yeniden Tekrarlama +RocketActions.lbl.Youcanchangedefop = Hatal\u0131 \u00c7al\u0131\u015fmay\u0131 De\u011fi\u015ftirebilirsin +in the preferences. +RocketActions.showConfirmDialog.lbl1 = Se\u00e7ili sim\u00fclasyonlar\u0131 silmek ister misiniz? +RocketActions.showConfirmDialog.lbl2 = Bu \u00e7al\u0131\u015fma tamamlanmad\u0131. +RocketActions.showConfirmDialog.title = Sim\u00fclasyonlar\u0131 Sil +RocketActions.DelCompAct.Delete = Sil +RocketActions.DelCompAct.ttip.Delete = Se\u00e7ili par\u00e7ay\u0131 sil. +RocketActions.DelSimuAct.Delete = Sil +RocketActions.DelSimuAct.ttip.Delete = Se\u00e7ili sim\u00fclasyonu sil. +RocketActions.DelAct.Delete = Sil +RocketActions.DelAct.ttip.Delete = Se\u00e7ilen par\u00e7ay\u0131 ya da sim\u00fclasyonu sil +RocketActions.CutAction.Cut = Kes +RocketActions.CutAction.ttip.Cut = Kes bu par\u00e7ay\u0131 yada sim\u00fclasyonun +haf\u0131zadan ve kald\u0131r bu tasar\u0131mdan +RocketActions.CopyAct.Copy = Kopyala +RocketActions.CopyAct.ttip.Copy = Bu par\u00e7ay\u0131 kopyala (ve altpar\u00e7alar\u0131) +haf\u0131zaya +RocketActions.PasteAct.Paste = Yap\u0131\u015ft\u0131r +RocketActions.PasteAct.ttip.Paste = Yap\u0131\u015ft\u0131r par\u00e7ay\u0131 ya da simulasyonu haf\u0131za \u00fczerinden +tasar\u0131ma do\u011fru. +RocketActions.EditAct.Edit = D\u00fczenle +RocketActions.EditAct.ttip.Edit = Se\u00e7ilmi\u015f par\u00e7ay\u0131 d\u00fczenle . +RocketActions.NewStageAct.Newstage = Yeni A\u015fama +RocketActions.NewStageAct.ttip.Newstage = Yeni bir roket tasar\u0131m\u0131 ekle +RocketActions.ActBoosterstage = Yard\u0131mc\u0131/Y\u00fckseltici A\u015fama +RocketActions.MoveUpAct.Moveup = Yukar\u0131 \u00c7\u0131kar +RocketActions.MoveUpAct.ttip.Moveup = Yukar\u0131ya do\u011fru bu par\u00e7ay\u0131 haraket ettir. +RocketActions.MoveDownAct.Movedown = A\u015fa\u011f\u0131ya \u0130ndir +RocketActions.MoveDownAct.ttip.Movedown = A\u015fa\u011f\u0131ya do\u011fru bu par\u00e7ay\u0131 haraket +ettir. + +! RocketPanel +RocketPanel.FigTypeAct.Sideview = Yandan G\u00f6r\u00fcn\u00fc\u015f +RocketPanel.FigTypeAct.Backview = Arkadan G\u00f6r\u00fcn\u00fc\u015f +RocketPanel.FigTypeAct.Figure3D = 3D Resimlendirme +RocketPanel.FigTypeAct.Finished = 3D Bitmi\u015f +RocketPanel.FigTypeAct.Unfinished = 3D Bitmemi\u015f + + +RocketPanel.lbl.Flightcfg = U\u00e7u\u015f Bi\u00e7imi/Konumu: +RocketPanel.lbl.infoMessage = Click to select    Shift+Click +to select other    Double-click to edit    Click+drag to +move +RocketPanel.lbl.ViewType = G\u00f6r\u00fcn\u00fc\u015f \u015eekli: + +! BasicFrame +BasicFrame.tab.Rocketdesign = Roket Tasar\u0131m\u0131 +BasicFrame.tab.Flightconfig = Motorlar & Bi\u00e7imleri +BasicFrame.tab.Flightsim = U\u00e7u\u015f Sim\u00fclasyonlar\u0131 +BasicFrame.title.Addnewcomp = Yeni par\u00e7a ekle +BasicFrame.dlg.lbl1 = Tasar\u0131m ' +BasicFrame.dlg.lbl2 = ' Kaydedilmemi\u015f. +BasicFrame.dlg.lbl3 = Kaydetmek ister misiniz? +BasicFrame.dlg.title = Tasar\u0131m Kaydedilmedi +BasicFrame.StageName.Sustainer = Devam Et +BasicFrame.WarningDialog.txt1 = Problemler a\u00e7\u0131l\u0131rken d\u00fczenleniyor +BasicFrame.WarningDialog.txt2 = Baz\u0131 tasar\u0131m par\u00e7alar\u0131 d\u00fczg\u00fcnce +y\u00fcklenemedi. +BasicFrame.WarningDialog.title = Dosya a\u00e7\u0131l\u0131rken Tehlike + + +! General error messages used in multiple contexts +error.fileExists.title = File exists +error.fileExists.desc = File '{filename}' exists. \u00dczerine yazmak ister misiniz? + +error.writing.title = Hata Dosya Yaz\u0131l\u0131rken +error.writing.desc = Bir hata dosya yaz\u0131l\u0131rken ortaya \u00e7\u0131kt\u0131: +Configuration.lbl.override = Bu durum baz\u0131 u\u00e7u\u015f bi\u00e7imlerinde ge\u00e7ersizdir. + + +! Labels used in buttons of dialog windows +# TODO: Rename these to "btn.xxx" +button.ok = Tamam +button.cancel = \u00c7\u0131k\u0131\u015f +button.close = Kapat + +! Common labels used in buttons of dialog windows +dlg.but.ok = Tamam +dlg.but.cancel = \u00c7\u0131k\u0131\u015f +dlg.but.close = Kapat +! General file type names +filetypes.pdf = PDF files (*.pdf) +BasicFrame.SimpleFileFilter1 = All rocket designs (*.ork; *.rkt) +BasicFrame.SimpleFileFilter2 = OpenRocket designs (*.ork) +BasicFrame.SimpleFileFilter3 = RockSim designs (*.rkt) +BasicFrame.SimpleFileFilter4 = OpenRocket presets (*.orc) +filetypes.images = Resim Dosyalar\u0131 + + +! Diyolog Hakk\u0131nda +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:Turkish +AboutDialog.lbl.translator =Batuhan Dereli +AboutDialog.lbl.translatorWebsite =www.batuhandereli.com +AboutDialog.lbl.translatorIcon = + + +! Yaz\u0131c\u0131 +PrintDialog.title = Yazd\u0131r yada \u00c7\u0131kart +PrintDialog.but.previewAndPrint = \u00c7\u0131kt\u0131 \u00d6ncesi Bak & Yaz +PrintDialog.checkbox.showByStage = Par\u00e7a G\u00f6ster +PrintDialog.lbl.selectElements = \u0130\u00e7eren gruplar\u0131 se\u00e7: +printdlg.but.saveaspdf = Kaydet PDF Olarak +printdlg.but.preview = \u00d6nceki +printdlg.but.settings = Ayarlar +PrintDialog.error.preview.title = \u00d6nceki g\u00f6r\u00fcnt\u00fc ula\u015f\u0131lmaz +PrintDialog.error.preview.desc1 = Pdf g\u00f6r\u00fcnt\u00fc ula\u015f\u0131lmaz. +PrintDialog.error.preview.desc2 = L\u00fctfen kullan "Pdf Olarak Kaydet" i\u00e7eren +ayarlardan. + + +!PrintSettingsDialog +PrintSettingsDialog.title = Yaz\u0131c\u0131 Ayarlar\u0131 +PrintSettingsDialog.lbl.Templatefillcolor = Kal\u0131p Renkli Doldur: +PrintSettingsDialog.lbl.Templatebordercolor = Kal\u0131b\u0131 S\u0131n\u0131rl\u0131 Doldur: +PrintSettingsDialog.lbl.Papersize = Ka\u011f\u0131t Boyutu: +PrintSettingsDialog.lbl.Paperorientation = Ka\u011f\u0131t Hizalama: +PrintSettingsDialog.but.Reset = Yeniden Ba\u015flat +PrintSettingsDialog.but.Close = Kapat + + +! Bug Report dialog +bugreport.dlg.title = Hata Raporu +bugreport.dlg.but.Sendbugreport = Hata Raporu G\u00f6nder +bugreport.dlg.but.Sendbugreport.Ttip = Atomatik olarak hata raporu g\u00f6nder OPEN ROCKET +geli\u015ftiricilerine. +bugreport.dlg.successmsg1 = Hata raporu sorunsuz yolland\u0131. +bugreport.dlg.successmsg2 = Te\u015fekk\u00fcrler sizin sayenizde OPENROCKET daha iyi geli\u015ficek! +bugreport.dlg.successmsg3 = Hata Raporu G\u00f6nderildi +bugreport.dlg.connectedInternet = E\u011fer internet ba\u011flant\u0131n varsa, +basit\u00e7e t\u0131klay\u0131pHata Raporu G\u00f6nder. +bugreport.dlg.otherwise = Ba\u015fka \u015fekilde,adrese yollay\u0131n: +bugreport.lbl.Theinformation = Genel hata raporlar\u0131hakk\u0131nda bilgi i\u00e7eriyor.Emin de\u011filsen ve +hislerinden \u00f6t\u00fcr\u00fc koyuyorsan hata raporunu koyma . +bugreport.dlg.failedmsg1 = OpenRocket hata raporunu g\u00f6ndermek i\u00e7in uygun de\u011fil: +bugreport.dlg.failedmsg2 = L\u00fctfen manual bir yolla g\u00f6nder +bugreport.dlg.failedmsg3 = Hata raporu g\u00f6nderiliyor +bugreport.reportDialog.txt = OpenRocket i\u00e7erisindeki hatalar\u0131 +form doldurarak yollayabilirsiniz.
Hatta hatalar\u0131 dosyalay\u0131p internet sitesi +\u00fczerinde proje sayfas\u0131na koyabilirsin. +bugreport.reportDialog.txt2 = L\u00fctfen belirtiniz tam olarak nas\u0131l bir beklentiniz vard\u0131 +bugreport.dlg.provideDescription = L\u00fctfen Hatay\u0131 ilk ne zaman rastlad\u0131n\u0131z tam olarak a\u00e7\u0131klay\u0131n\u0131z +bugreport.dlg.provideDescription.title = Hata tan\u0131m\u0131 kayboluyor \ No newline at end of file diff --git a/core/src/net/sf/openrocket/file/rocksim/importt/RockSimAppearanceBuilder.java b/core/src/net/sf/openrocket/file/rocksim/importt/RockSimAppearanceBuilder.java index 4a05f6ae3..5ade83385 100644 --- a/core/src/net/sf/openrocket/file/rocksim/importt/RockSimAppearanceBuilder.java +++ b/core/src/net/sf/openrocket/file/rocksim/importt/RockSimAppearanceBuilder.java @@ -69,12 +69,13 @@ public class RockSimAppearanceBuilder extends AppearanceBuilder { if ("file".equals(name)) { if (value.length() > 0) { final File f = new File(value); - if (!f.exists()) { - //Find out how to get path of current rocksim file - //so I can look in it's directory + if (f.exists()) { + Attachment a = context.getAttachmentFactory().getAttachment(name); + setImage(context.getOpenRocketDocument().getDecalImage(a)); } - Attachment a = context.getAttachmentFactory().getAttachment(name); - setImage(context.getOpenRocketDocument().getDecalImage(a)); + // else { + // If we can't find the file on the filesystem, we just ignore the decal. + //} } } else if ("repeat".equals(name)) { repeat = "1".equals(value); diff --git a/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java b/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java index 422f110f9..baa175065 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java +++ b/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java @@ -28,7 +28,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public abstract class RocketComponent implements ChangeSource, Cloneable, Iterable, Visitable { +public abstract class RocketComponent implements ChangeSource, Cloneable, Iterable { private static final Logger log = LoggerFactory.getLogger(RocketComponent.class); // Because of changes to Java 1.7.0-45's mechanism to construct DataFlavor objects (used in Drag and Drop) @@ -1736,9 +1736,9 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab } ///////////// Visitor pattern implementation - @Override - public void accept(RocketComponentVisitor visitor) { + public R accept(RocketComponentVisitor visitor) { visitor.visit(this); + return visitor.getResult(); } //////////// Helper methods for subclasses diff --git a/core/src/net/sf/openrocket/rocketcomponent/RocketComponentVisitor.java b/core/src/net/sf/openrocket/rocketcomponent/RocketComponentVisitor.java index 0a28982e1..28419d6d0 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/RocketComponentVisitor.java +++ b/core/src/net/sf/openrocket/rocketcomponent/RocketComponentVisitor.java @@ -1,5 +1,19 @@ package net.sf.openrocket.rocketcomponent; -public interface RocketComponentVisitor extends Visitor { +public interface RocketComponentVisitor { + + /** + * The callback method. This method is the 2nd leg of the double-dispatch, having been invoked from a + * corresponding accept. + * + * @param visitable the instance of the Visitable (the target of what is being visiting) + */ + void visit(RocketComponent visitable); + + /** + * Return the final result + * @return + */ + R getResult(); } diff --git a/core/src/net/sf/openrocket/rocketcomponent/Visitable.java b/core/src/net/sf/openrocket/rocketcomponent/Visitable.java deleted file mode 100644 index 5f46b7ff9..000000000 --- a/core/src/net/sf/openrocket/rocketcomponent/Visitable.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Visitable.java - */ -package net.sf.openrocket.rocketcomponent; - -/** - * This interface describes a portion of the Visitor pattern, using generics to assure type-safety. - * The elements of the concrete object hierarchy are only visitable by an associated hierarchy of visitors, - * while these visitors are only able to visit the elements of that hierarchy. - * - * The key concept regarding the Visitor pattern is to realize that Java will only "discriminate" the type of an - * object being called, not the type of an object being passed. - * - * In order for the type of two objects to be determinable to the JVM, each object must be the receiver of an - * invocation. Here, when accept is called on a Visitable, the concrete type of the Visitable becomes "known" but the - * concrete type of the argument is still unknown. visit is then called on the parameter object, passing - * the Visitable back, which has type and identity. Flow of control has now been 'double-dispatched' such that the - * type (and identity) of both objects are known. - * - * Specifically, this interface is to be implemented by every class in the RocketComponent hierarchy that - * can be visited AND which are sufficiently specialized from their super class. If they only provide - * constraints to their superclass (such as TubeCoupler), then the implementation of this interface at - * the superclass level is sufficient. - * - * Admittedly, the syntax is a bit contorted here, as it is necessarily self-referential for type-safety. - * - * The visitor type - * The visitable (the concrete class that implements this interface) - */ -public interface Visitable, T extends Visitable> { - - /** - * Any class in the hierarchy that allows itself to be visited will implement this method. The normal - * behavior is that the visitor will invoke this method of a Visitable, passing itself. The Visitable - * turns around calls the Visitor back. This idiom is also known as 'double-dispatching'. - * - * @param visitor the visitor that will be called back - */ - public void accept(V visitor); - -} diff --git a/core/src/net/sf/openrocket/rocketcomponent/Visitor.java b/core/src/net/sf/openrocket/rocketcomponent/Visitor.java deleted file mode 100644 index edb39f2b1..000000000 --- a/core/src/net/sf/openrocket/rocketcomponent/Visitor.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Visitor.java - */ -package net.sf.openrocket.rocketcomponent; - -/** - * This interface describes a portion of the Visitor pattern, using generics to assure type-safety. - * The elements of the concrete object hierarchy are only visitable by an associated hierarchy of visitors, - * while these visitors are only able to visit the elements of that hierarchy. - * - * The key concept regarding the Visitor pattern is to realize that Java will only "discriminate" the type of an - * object being called, not the type of an object being passed. - * - * In order for the type of two objects to be determinable to the JVM, each object must be the receiver of an - * invocation. Here, when accept is called on a Visitable, the concrete type of the Visitable becomes "known" but the - * concrete type of the argument is still unknown. visit is then called on the parameter object, passing - * the Visitable back, which has type and identity. Flow of control has now been 'double-dispatched' such that the - * type (and identity) of both objects are known. - * - * Specifically, this interface is to be implemented by every class in the RocketComponent hierarchy that - * can be visited AND which are sufficiently specialized from their super class. If they only provide - * constraints to their superclass (such as TubeCoupler), then the implementation of this interface at - * the superclass level is sufficient. - * - * Admittedly, the syntax is a bit contorted here, as it is necessarily self-referential for type-safety. - * - * The visitor type (the concrete class that implements this interface) - * The visitable - */ -public interface Visitor, T extends Visitable> { - - /** - * The callback method. This method is the 2nd leg of the double-dispatch, having been invoked from a - * corresponding accept. - * - * @param visitable the instance of the Visitable (the target of what is being visiting) - */ - void visit(T visitable); -} \ No newline at end of file diff --git a/core/src/net/sf/openrocket/rocketvisitors/BredthFirstRecusiveVisitor.java b/core/src/net/sf/openrocket/rocketvisitors/BredthFirstRecusiveVisitor.java index ad9f9681d..a3a32f109 100644 --- a/core/src/net/sf/openrocket/rocketvisitors/BredthFirstRecusiveVisitor.java +++ b/core/src/net/sf/openrocket/rocketvisitors/BredthFirstRecusiveVisitor.java @@ -3,24 +3,24 @@ package net.sf.openrocket.rocketvisitors; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.RocketComponentVisitor; -public abstract class BredthFirstRecusiveVisitor implements RocketComponentVisitor { - +public abstract class BredthFirstRecusiveVisitor implements RocketComponentVisitor { + @Override public final void visit(RocketComponent visitable) { - + this.doAction(visitable); - - for ( RocketComponent child: visitable.getChildren() ) { + + for (RocketComponent child : visitable.getChildren()) { this.doAction(child); } - - for ( RocketComponent child: visitable.getChildren() ) { + + for (RocketComponent child : visitable.getChildren()) { this.visit(child); } - - + + } - protected abstract void doAction( RocketComponent visitable ); - + protected abstract void doAction(RocketComponent visitable); + } diff --git a/core/src/net/sf/openrocket/rocketvisitors/CopyFlightConfigurationVisitor.java b/core/src/net/sf/openrocket/rocketvisitors/CopyFlightConfigurationVisitor.java index 2bc35e084..239570907 100644 --- a/core/src/net/sf/openrocket/rocketvisitors/CopyFlightConfigurationVisitor.java +++ b/core/src/net/sf/openrocket/rocketvisitors/CopyFlightConfigurationVisitor.java @@ -1,10 +1,10 @@ package net.sf.openrocket.rocketvisitors; -import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.FlightConfigurableComponent; +import net.sf.openrocket.rocketcomponent.RocketComponent; -public class CopyFlightConfigurationVisitor extends DepthFirstRecusiveVisitor { - +public class CopyFlightConfigurationVisitor extends DepthFirstRecusiveVisitor { + private final String oldConfigId; private final String newConfigId; @@ -13,14 +13,18 @@ public class CopyFlightConfigurationVisitor extends DepthFirstRecusiveVisitor { this.oldConfigId = oldConfigId; this.newConfigId = newConfigId; } - + @Override public void doAction(RocketComponent visitable) { - if ( visitable instanceof FlightConfigurableComponent ) { - ((FlightConfigurableComponent)visitable).cloneFlightConfiguration(oldConfigId, newConfigId); + if (visitable instanceof FlightConfigurableComponent) { + ((FlightConfigurableComponent) visitable).cloneFlightConfiguration(oldConfigId, newConfigId); } } + @Override + public Void getResult() { + return null; + } } diff --git a/core/src/net/sf/openrocket/rocketvisitors/DepthFirstRecusiveVisitor.java b/core/src/net/sf/openrocket/rocketvisitors/DepthFirstRecusiveVisitor.java index f08d65080..29a0f6e51 100644 --- a/core/src/net/sf/openrocket/rocketvisitors/DepthFirstRecusiveVisitor.java +++ b/core/src/net/sf/openrocket/rocketvisitors/DepthFirstRecusiveVisitor.java @@ -3,19 +3,19 @@ package net.sf.openrocket.rocketvisitors; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.RocketComponentVisitor; -public abstract class DepthFirstRecusiveVisitor implements RocketComponentVisitor { - +public abstract class DepthFirstRecusiveVisitor implements RocketComponentVisitor { + @Override public final void visit(RocketComponent visitable) { - + this.doAction(visitable); - for ( RocketComponent child: visitable.getChildren() ) { + for (RocketComponent child : visitable.getChildren()) { this.visit(child); } } - protected abstract void doAction( RocketComponent visitable ); - + protected abstract void doAction(RocketComponent visitable); + } diff --git a/core/src/net/sf/openrocket/rocketvisitors/ListComponents.java b/core/src/net/sf/openrocket/rocketvisitors/ListComponents.java new file mode 100644 index 000000000..8a6f8f96b --- /dev/null +++ b/core/src/net/sf/openrocket/rocketvisitors/ListComponents.java @@ -0,0 +1,30 @@ +package net.sf.openrocket.rocketvisitors; + +import java.util.ArrayList; +import java.util.List; + +import net.sf.openrocket.rocketcomponent.RocketComponent; + +public class ListComponents extends DepthFirstRecusiveVisitor> { + + private final Class componentClazz; + protected List components = new ArrayList(); + + public ListComponents(Class componentClazz) { + super(); + this.componentClazz = componentClazz; + } + + @Override + public List getResult() { + return components; + } + + @Override + protected void doAction(RocketComponent visitable) { + if (componentClazz.isAssignableFrom(visitable.getClass())) { + components.add((T) visitable); + } + + } +} diff --git a/core/src/net/sf/openrocket/rocketvisitors/ListMotorMounts.java b/core/src/net/sf/openrocket/rocketvisitors/ListMotorMounts.java new file mode 100644 index 000000000..f86960e5c --- /dev/null +++ b/core/src/net/sf/openrocket/rocketvisitors/ListMotorMounts.java @@ -0,0 +1,18 @@ +package net.sf.openrocket.rocketvisitors; + +import net.sf.openrocket.rocketcomponent.MotorMount; +import net.sf.openrocket.rocketcomponent.RocketComponent; + +public class ListMotorMounts extends ListComponents { + + public ListMotorMounts() { + super(RocketComponent.class); + } + + @Override + protected void doAction(RocketComponent visitable) { + if (visitable instanceof MotorMount && ((MotorMount) visitable).isMotorMount()) { + components.add(visitable); + } + } +} diff --git a/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java b/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java index 1e7a395e3..22f7bcbb1 100644 --- a/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java +++ b/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java @@ -66,7 +66,7 @@ public class BasicEventSimulationEngine implements SimulationEngine { flightConfigurationId = configuration.getFlightConfigurationID(); MotorInstanceConfiguration motorConfiguration = setupMotorConfiguration(configuration); if (motorConfiguration.getMotorIDs().isEmpty()) { - throw new MotorIgnitionException("No motors defined in the simulation."); + throw new MotorIgnitionException(trans.get("BasicEventSimulationEngine.error.noMotorsDefined")); } status = new SimulationStatus(configuration, motorConfiguration, simulationConditions); @@ -403,7 +403,7 @@ public class BasicEventSimulationEngine implements SimulationEngine { case BURNOUT: { // If motor burnout occurs without lift-off, abort if (!status.isLiftoff()) { - throw new SimulationLaunchException("Motor burnout without liftoff."); + throw new SimulationLaunchException(trans.get("BasicEventSimulationEngine.error.earlyMotorBurnout")); } // Add ejection charge event MotorId motorId = (MotorId) event.getData(); @@ -514,7 +514,7 @@ public class BasicEventSimulationEngine implements SimulationEngine { // If no motor has ignited, abort if (!status.isMotorIgnited()) { - throw new MotorIgnitionException("No motors ignited."); + throw new MotorIgnitionException(trans.get("BasicEventSimulationEngine.error.noIgnition")); } return ret; @@ -579,7 +579,7 @@ public class BasicEventSimulationEngine implements SimulationEngine { " rocketOrientationQuaternion=" + status.getRocketOrientationQuaternion() + " rocketRotationVelocity=" + status.getRocketRotationVelocity() + " effectiveLaunchRodLength=" + status.getEffectiveLaunchRodLength()); - throw new SimulationException("Simulation resulted in not-a-number (NaN) value, please report a bug."); + throw new SimulationException(trans.get("BasicEventSimulationEngine.error.NaNResult")); } } diff --git a/core/web/html/actions/updates.php b/core/web/html/actions/updates.php index 9756a61d4..94d57bdc6 100644 --- a/core/web/html/actions/updates.php +++ b/core/web/html/actions/updates.php @@ -80,13 +80,18 @@ header("Content-type: text/plain"); $version = $_GET["version"]; $updates = ""; -$unstable = "13.11.1"; +$unstable = "13.11.2"; $stable = "1.0.0"; -if (preg_match("/^13.11$/", $version)) { +if (preg_match("/^13.11.1$/", $version)) { + $updates = "Version: " . $unstable . "\n" . + "4: Bug fixes - Various fixes to motor selection\n". + ""; +} else if (preg_match("/^13.11$/", $version)) { $updates = "Version: " . $unstable . "\n" . "4: Bug fixes - Tube Coupler configuration among other things\n". + "4: Bug fixes - Various fixes to motor selection\n". ""; } else if (preg_match("/^13.09.1$/", $version)) { $updates = "Version: " . $unstable . "\n" . diff --git a/core/web/html/download.html b/core/web/html/download.html index 28fc613c8..39c3a72a3 100644 --- a/core/web/html/download.html +++ b/core/web/html/download.html @@ -48,6 +48,10 @@

Recent news:

+

01.01.2014: Version 13.11.2 is + released! This release contains bug fixes, + usability improvements, and layout fixes. +

15.11.2013: Version 13.11.1 is released! This release contains bug fixes including fixing Tube Coupler configuration, various exceptions in @@ -97,20 +101,20 @@ Support This Project

OpenRocket can be started in most graphical environments (including Windows) by double-clicking the package icon. No installation is required.

From the command line OpenRocket can be started by - java -jar OpenRocket-13.11.1.jar

+ java -jar OpenRocket-13.11.2.jar

Android version

The Android version allows opening OpenRocket files, viewing simulations and motors. Later versions will allow running diff --git a/core/web/html/index.html b/core/web/html/index.html index 5fa108937..461fdfd07 100644 --- a/core/web/html/index.html +++ b/core/web/html/index.html @@ -49,12 +49,12 @@

Introduction

@@ -96,6 +96,10 @@

News

+

01.01.2014: Version 13.11.2 is + released! This release contains bug fixes, + usability improvements, and layout fixes. +

15.11.2013: Version 13.11.1 is released! This release contains bug fixes including fixing Tube Coupler configuration, various exceptions in diff --git a/core/web/htp/htp.def b/core/web/htp/htp.def index 63f6affe0..a738a918f 100644 --- a/core/web/htp/htp.def +++ b/core/web/htp/htp.def @@ -1,4 +1,4 @@ - + diff --git a/core/web/htp/news.htp b/core/web/htp/news.htp index 6b97eeb90..3f3cd529f 100644 --- a/core/web/htp/news.htp +++ b/core/web/htp/news.htp @@ -9,6 +9,11 @@ +

01.01.2014: Version 13.11.2 is + released! This release contains bug fixes, + usability improvements, and layout fixes. +

+

15.11.2013: Version 13.11.1 is released! This release contains bug fixes including fixing Tube Coupler configuration, various exceptions in diff --git a/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java b/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java index e3e08e5d2..862a2f3af 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java @@ -311,19 +311,14 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec } public void setMotorMountAndConfig( MotorMount mount, String currentConfig ) { - double diameter = 0; - - if ( mount != null ) { - diameter = mount.getMotorMountDiameter(); - } - if (currentConfig != null && mount != null) { MotorConfiguration motorConf = mount.getMotorConfiguration().get(currentConfig); selectedMotor = (ThrustCurveMotor) motorConf.getMotor(); selectedDelay = motorConf.getEjectionDelay(); - diameter = mount.getMotorMountDiameter(); } + selectedMotorSet = null; + // If current motor is not found in db, add a new ThrustCurveMotorSet containing it if (selectedMotor != null) { for (ThrustCurveMotorSet motorSet : database) { @@ -426,6 +421,7 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec curveSelectionBox.setEnabled(false); curveSelectionLabel.setEnabled(false); motorInformationPanel.clearData(); + table.clearSelection(); return; } diff --git a/swing/src/net/sf/openrocket/gui/main/BasicFrame.java b/swing/src/net/sf/openrocket/gui/main/BasicFrame.java index b5aad9423..eb49551be 100644 --- a/swing/src/net/sf/openrocket/gui/main/BasicFrame.java +++ b/swing/src/net/sf/openrocket/gui/main/BasicFrame.java @@ -120,7 +120,8 @@ public class BasicFrame extends JFrame { private static final int SHORTCUT_KEY = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(); public static final int COMPONENT_TAB = 0; - public static final int SIMULATION_TAB = 1; + public static final int CONFIGURATION_TAB = 1; + public static final int SIMULATION_TAB = 2; /** @@ -267,7 +268,7 @@ public class BasicFrame extends JFrame { // Upper-left segment, component tree - JPanel panel = new JPanel(new MigLayout("fill, flowy", "", "[grow]")); + JPanel panel = new JPanel(new MigLayout("fill, flowy", "[grow][grow 0]","[grow]")); tree = new ComponentTree(document); tree.setSelectionModel(componentSelectionModel); diff --git a/swing/src/net/sf/openrocket/gui/main/SwingExceptionHandler.java b/swing/src/net/sf/openrocket/gui/main/SwingExceptionHandler.java index dc4e7e64d..094fd508b 100644 --- a/swing/src/net/sf/openrocket/gui/main/SwingExceptionHandler.java +++ b/swing/src/net/sf/openrocket/gui/main/SwingExceptionHandler.java @@ -13,49 +13,49 @@ import org.slf4j.LoggerFactory; public class SwingExceptionHandler implements Thread.UncaughtExceptionHandler, ExceptionHandler { - + private static final Logger log = LoggerFactory.getLogger(SwingExceptionHandler.class); - + private static final int MEMORY_RESERVE = 512 * 1024; - + /** * A memory reserve of 0.5 MB of memory, that can be freed when showing the dialog. *

* This field is package-private so that the JRE cannot optimize its use away. */ volatile byte[] memoryReserve = null; - + private volatile boolean handling = false; - - - - + + + + @Override public void uncaughtException(final Thread thread, final Throwable throwable) { - + // Free memory reserve if out of memory if (isOutOfMemoryError(throwable)) { memoryReserve = null; handling = false; log.error("Out of memory error detected", throwable); } - + if (isNonFatalJREBug(throwable)) { log.warn("Ignoring non-fatal JRE bug", throwable); return; } - + log.error("Handling uncaught exception on thread=" + thread, throwable); throwable.printStackTrace(); - + if (handling) { log.warn("Exception is currently being handled, ignoring"); return; } - + try { handling = true; - + // Show on the EDT if (SwingUtilities.isEventDispatchThread()) { log.info("Exception handler running on EDT, showing dialog"); @@ -69,9 +69,9 @@ public class SwingExceptionHandler implements Thread.UncaughtExceptionHandler, E } }); } - + } catch (Throwable ex) { - + // Make sure the handler does not throw any exceptions try { log.error("Caught exception while handling exception", ex); @@ -79,15 +79,15 @@ public class SwingExceptionHandler implements Thread.UncaughtExceptionHandler, E ex.printStackTrace(); } catch (Exception ignore) { } - + } finally { // Mark handling as completed handling = false; } - + } - - + + /** * Handle an error condition programmatically without throwing an exception. * This can be used in cases where recovery of the error is desirable. @@ -102,8 +102,8 @@ public class SwingExceptionHandler implements Thread.UncaughtExceptionHandler, E log.error(message, new Throwable()); handleErrorCondition(new InternalException(message)); } - - + + /** * Handle an error condition programmatically without throwing an exception. * This can be used in cases where recovery of the error is desirable. @@ -119,8 +119,8 @@ public class SwingExceptionHandler implements Thread.UncaughtExceptionHandler, E log.error(message, exception); handleErrorCondition(new InternalException(message, exception)); } - - + + /** * Handle an error condition programmatically without throwing an exception. * This can be used in cases where recovery of the error is desirable. @@ -137,7 +137,7 @@ public class SwingExceptionHandler implements Thread.UncaughtExceptionHandler, E log.error("Error occurred", exception); } final Thread thread = Thread.currentThread(); - + if (SwingUtilities.isEventDispatchThread()) { log.info("Running in EDT, showing dialog"); this.showDialog(thread, exception); @@ -155,8 +155,8 @@ public class SwingExceptionHandler implements Thread.UncaughtExceptionHandler, E log.error("Exception occurred in error handler", e); } } - - + + /** * The actual handling routine. * @@ -164,82 +164,82 @@ public class SwingExceptionHandler implements Thread.UncaughtExceptionHandler, E * @param e the exception. */ private void showDialog(Thread t, Throwable e) { - + // Out of memory if (isOutOfMemoryError(e)) { log.info("Showing out-of-memory dialog"); JOptionPane.showMessageDialog(null, new Object[] { - "OpenRocket is out of available memory!", - "You should immediately close unnecessary design windows,", - "save any unsaved designs and restart OpenRocket!" - }, "Out of memory", JOptionPane.ERROR_MESSAGE); + "OpenRocket is out of available memory!", + "You should immediately close unnecessary design windows,", + "save any unsaved designs and restart OpenRocket!" + }, "Out of memory", JOptionPane.ERROR_MESSAGE); return; } - + // Create the message String msg = e.getClass().getSimpleName() + ": " + e.getMessage(); if (msg.length() > 90) { msg = msg.substring(0, 80) + "..."; } - + // Unknown Error if (!(e instanceof Exception) && !(e instanceof LinkageError)) { log.info("Showing Error dialog"); JOptionPane.showMessageDialog(null, new Object[] { - "An unknown Java error occurred:", - msg, - "You should immediately close unnecessary design windows,
" + - "save any unsaved designs and restart OpenRocket!" - }, "Unknown Java error", JOptionPane.ERROR_MESSAGE); + "An unknown Java error occurred:", + msg, + "You should immediately close unnecessary design windows,
" + + "save any unsaved designs and restart OpenRocket!" + }, "Unknown Java error", JOptionPane.ERROR_MESSAGE); return; } - - + + // Normal exception, show question dialog log.info("Showing Exception dialog"); int selection = JOptionPane.showOptionDialog(null, new Object[] { "OpenRocket encountered an uncaught exception. This typically signifies " + "a bug in the software.", - "        " + msg + "", - " ", - "Please take a moment to report this bug to the developers.", - "This can be done automatically if you have an Internet connection." + "        " + msg + "", + " ", + "Please take a moment to report this bug to the developers.", + "This can be done automatically if you have an Internet connection." }, "Uncaught exception", JOptionPane.DEFAULT_OPTION, - JOptionPane.ERROR_MESSAGE, null, - new Object[] { "View bug report", "Close" }, "View bug report"); - + JOptionPane.ERROR_MESSAGE, null, + new Object[] { "View bug report", "Close" }, "View bug report"); + if (selection != 0) { // User cancelled log.info(Markers.USER_MARKER, "User chose not to fill bug report"); return; } - + // Show bug report dialog log.info(Markers.USER_MARKER, "User requested sending bug report"); BugReportDialog.showExceptionDialog(null, t, e); } - - - + + + /** * Registers the uncaught exception handler. This should be used to ensure that * all necessary registrations are performed. */ public void registerExceptionHandler() { - + Thread.setDefaultUncaughtExceptionHandler(this); - + // Handler for modal dialogs of Sun's Java implementation // See bug ID 4499199. System.setProperty("sun.awt.exception.handler", AwtHandler.class.getName()); - + reserveMemory(); - + } - - + + /** * Reserve the buffer memory that is freed in case an OutOfMemoryError occurs. */ @@ -249,9 +249,9 @@ public class SwingExceptionHandler implements Thread.UncaughtExceptionHandler, E memoryReserve[i] = (byte) i; } } - - - + + + /** * Return whether this throwable was caused by an OutOfMemoryError * condition. An exception is deemed to be caused by OutOfMemoryError @@ -271,9 +271,9 @@ public class SwingExceptionHandler implements Thread.UncaughtExceptionHandler, E } return false; } - - - + + + /** * Handler used in modal dialogs by Sun Java implementation. */ @@ -282,8 +282,8 @@ public class SwingExceptionHandler implements Thread.UncaughtExceptionHandler, E Application.getExceptionHandler().uncaughtException(Thread.currentThread(), t); } } - - + + /** * Detect various non-fatal Sun JRE bugs. * @@ -291,32 +291,32 @@ public class SwingExceptionHandler implements Thread.UncaughtExceptionHandler, E * @return whether this exception should be ignored */ private boolean isNonFatalJREBug(Throwable t) { - + // NOTE: Calling method logs the entire throwable, so log only message here - - + + /* * Detect and ignore bug 6826104 in Sun JRE. */ if (t instanceof NullPointerException) { StackTraceElement[] trace = t.getStackTrace(); - + if (trace.length > 3 && trace[0].getClassName().equals("sun.awt.X11.XWindowPeer") && trace[0].getMethodName().equals("restoreTransientFor") && - + trace[1].getClassName().equals("sun.awt.X11.XWindowPeer") && trace[1].getMethodName().equals("removeFromTransientFors") && - + trace[2].getClassName().equals("sun.awt.X11.XWindowPeer") && trace[2].getMethodName().equals("setModalBlocked")) { log.warn("Ignoring Sun JRE bug (6826104): http://bugs.sun.com/view_bug.do?bug_id=6826104" + t); return true; } - + } - - + + /* * Detect and ignore bug 6828938 in Sun JRE 1.6.0_14 - 1.6.0_16. */ @@ -326,26 +326,26 @@ public class SwingExceptionHandler implements Thread.UncaughtExceptionHandler, E if (elements.length >= 3 && (buggyClass.equals(elements[0].getClassName()) || buggyClass.equals(elements[1].getClassName()) || - buggyClass.equals(elements[2].getClassName()))) { + buggyClass.equals(elements[2].getClassName()))) { log.warn("Ignoring Sun JRE bug 6828938: " + "(see http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6828938): " + t); return true; } } - + /* * Detect and ignore bug 6561072 in Sun JRE 1.6.0_? */ if (t instanceof NullPointerException) { StackTraceElement[] trace = t.getStackTrace(); - + if (trace.length > 3 && trace[0].getClassName().equals("javax.swing.JComponent") && trace[0].getMethodName().equals("repaint") && - + trace[1].getClassName().equals("sun.swing.FilePane$2") && trace[1].getMethodName().equals("repaintListSelection") && - + trace[2].getClassName().equals("sun.swing.FilePane$2") && trace[2].getMethodName().equals("repaintSelection")) { log.warn("Ignoring Sun JRE bug 6561072 " + @@ -353,14 +353,14 @@ public class SwingExceptionHandler implements Thread.UncaughtExceptionHandler, E return true; } } - - + + /* * Detect and ignore bug 6933331 in Sun JRE 1.6.0_18 and others */ if (t instanceof IllegalStateException) { StackTraceElement[] trace = t.getStackTrace(); - + if (trace.length > 1 && trace[0].getClassName().equals("sun.awt.windows.WComponentPeer") && trace[0].getMethodName().equals("getBackBuffer")) { @@ -369,20 +369,20 @@ public class SwingExceptionHandler implements Thread.UncaughtExceptionHandler, E return true; } } - + /* * Detect and ignore bug in Sun JRE 1.6.0_19 */ if (t instanceof NullPointerException) { StackTraceElement[] trace = t.getStackTrace(); - + if (trace.length > 3 && trace[0].getClassName().equals("sun.awt.shell.Win32ShellFolder2") && trace[0].getMethodName().equals("pidlsEqual") && - + trace[1].getClassName().equals("sun.awt.shell.Win32ShellFolder2") && trace[1].getMethodName().equals("equals") && - + trace[2].getClassName().equals("sun.awt.shell.Win32ShellFolderManager2") && trace[2].getMethodName().equals("isFileSystemRoot")) { log.warn("Ignoring Sun JRE bug " + @@ -390,7 +390,7 @@ public class SwingExceptionHandler implements Thread.UncaughtExceptionHandler, E return true; } } - + /* * Detect Sun JRE bug in D3D */ @@ -401,25 +401,43 @@ public class SwingExceptionHandler implements Thread.UncaughtExceptionHandler, E return true; } } - + + /* + * Detect and ignore DnD bug in component tree - related to 6560955 in Sun JRE. + */ + if (t instanceof NullPointerException) { + StackTraceElement[] trace = t.getStackTrace(); + + if (trace.length > 2 && + trace[0].getClassName().equals("javax.swing.tree.TreePath") && + trace[0].getMethodName().equals("pathByAddingChild") && + + trace[1].getClassName().equals("javax.swing.plaf.basic.BasicTreeUI") && + trace[1].getMethodName().equals("getDropLineRect")) { + + log.warn("Ignoring Sun JRE bug updating drop location " + + "(see http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6560955): " + t); + return true; + } + } return false; } - - + + @SuppressWarnings("unused") private static class InternalException extends Exception { public InternalException() { super(); } - + public InternalException(String message, Throwable cause) { super(message, cause); } - + public InternalException(String message) { super(message); } - + public InternalException(Throwable cause) { super(cause); } diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurationPanel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurationPanel.java index 28417a1a7..dd3e022d6 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurationPanel.java @@ -16,8 +16,11 @@ import net.sf.openrocket.gui.dialogs.flightconfiguration.RenameConfigDialog; import net.sf.openrocket.gui.main.BasicFrame; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.FlightConfigurableComponent; +import net.sf.openrocket.rocketcomponent.RecoveryDevice; import net.sf.openrocket.rocketcomponent.Rocket; import net.sf.openrocket.rocketcomponent.RocketComponent; +import net.sf.openrocket.rocketvisitors.ListComponents; +import net.sf.openrocket.rocketvisitors.ListMotorMounts; import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.StateChangeListener; @@ -38,7 +41,11 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe private final MotorConfigurationPanel motorConfigurationPanel; private final RecoveryConfigurationPanel recoveryConfigurationPanel; private final SeparationConfigurationPanel separationConfigurationPanel; - + + private final static int MOTOR_TAB_INDEX = 0; + private final static int RECOVERY_TAB_INDEX = 1; + private final static int SEPARATION_TAB_INDEX = 2; + @Override public void stateChanged(EventObject e) { updateButtonState(); @@ -178,9 +185,37 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe private void updateButtonState() { String currentId = rocket.getDefaultConfiguration().getFlightConfigurationID(); + // Enable the remove/rename/copy buttons only when a configuration is selected. removeConfButton.setEnabled(currentId != null); renameConfButton.setEnabled(currentId != null); copyConfButton.setEnabled(currentId != null); + + // Count the number of motor mounts + int motorMountCount = rocket.accept(new ListMotorMounts()).size(); + + // Count the number of recovery devices + int recoveryDeviceCount = rocket.accept(new ListComponents(RecoveryDevice.class)).size(); + + // Count the number of stages + int stageCount = rocket.getStageCount(); + + // Enable the new configuration button only when a motor mount is defined. + newConfButton.setEnabled(motorMountCount > 0); + + // Only enable the recovery tab if there is a motor mount and there is a recovery device + tabs.setEnabledAt(RECOVERY_TAB_INDEX, motorMountCount > 0 && recoveryDeviceCount > 0); + + // If the selected tab was the recovery tab, and there is no longer any recovery devices, + // switch to the motor tab. + if( recoveryDeviceCount == 0 && tabs.getSelectedIndex() == RECOVERY_TAB_INDEX ) { + tabs.setSelectedIndex(MOTOR_TAB_INDEX); + } + + tabs.setEnabledAt(SEPARATION_TAB_INDEX, motorMountCount > 0 && stageCount > 1); + + if ( stageCount ==1 && tabs.getSelectedIndex() == SEPARATION_TAB_INDEX ) { + tabs.setSelectedIndex(MOTOR_TAB_INDEX); + } } diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java index a012f034f..88ae150d6 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java @@ -1,5 +1,6 @@ package net.sf.openrocket.gui.main.flightconfigpanel; +import java.awt.CardLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; @@ -22,6 +23,8 @@ import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; +import javax.swing.event.TableModelEvent; +import javax.swing.event.TableModelListener; import javax.swing.table.TableCellRenderer; import net.miginfocom.swing.MigLayout; @@ -49,6 +52,10 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel private final JButton selectMotorButton, removeMotorButton, selectIgnitionButton, resetIgnitionButton; + private final JPanel cards; + private final static String HELP_LABEL = "help"; + private final static String TABLE_LABEL = "table"; + private final MotorChooserDialog motorChooserDialog; protected FlightConfigurableTableModel configurationTableModel; @@ -57,7 +64,6 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel motorChooserDialog = new MotorChooserDialog(SwingUtilities.getWindowAncestor(flightConfigurationPanel)); - { //// Select motor mounts JPanel subpanel = new JPanel(new MigLayout("")); @@ -75,8 +81,16 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel this.add(subpanel, "split, w 200lp, growy"); } + cards = new JPanel(new CardLayout()); + this.add( cards ); + + JLabel helpText = new JLabel(trans.get("MotorConfigurationPanel.lbl.nomotors")); + cards.add(helpText, HELP_LABEL ); + JScrollPane scroll = new JScrollPane(table); - this.add(scroll, "grow, wrap"); + cards.add(scroll, TABLE_LABEL ); + + this.add(cards, "grow, wrap"); //// Select motor selectMotorButton = new JButton(trans.get("MotorConfigurationPanel.btn.selectMotor")); @@ -122,6 +136,14 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel } + protected void showEmptyText() { + ((CardLayout)cards.getLayout()).show(cards, HELP_LABEL); + } + + protected void showContent() { + ((CardLayout)cards.getLayout()).show(cards, TABLE_LABEL); + } + @Override protected JTable initializeTable() { //// Motor selection table. @@ -133,6 +155,16 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel } }; + // Listen to changes to the table so we can disable the help text when a + // motor mount is added through the edit body tube dialog. + configurationTableModel.addTableModelListener( new TableModelListener() { + + @Override + public void tableChanged(TableModelEvent e) { + MotorConfigurationPanel.this.updateButtonState(); + } + + }); JTable configurationTable = new JTable(configurationTableModel); configurationTable.getTableHeader().setReorderingAllowed(false); configurationTable.setCellSelectionEnabled(true); @@ -151,6 +183,7 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel } } }); + return configurationTable; } @@ -165,12 +198,21 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel } private void updateButtonState() { - String currentID = rocket.getDefaultConfiguration().getFlightConfigurationID(); - MotorMount currentMount = getSelectedComponent(); - selectMotorButton.setEnabled(currentMount != null && currentID != null); - removeMotorButton.setEnabled(currentMount != null && currentID != null); - selectIgnitionButton.setEnabled(currentMount != null && currentID != null); - resetIgnitionButton.setEnabled(currentMount != null && currentID != null); + if( configurationTableModel.getColumnCount() > 1 ) { + showContent(); + String currentID = rocket.getDefaultConfiguration().getFlightConfigurationID(); + MotorMount currentMount = getSelectedComponent(); + selectMotorButton.setEnabled(currentMount != null && currentID != null); + removeMotorButton.setEnabled(currentMount != null && currentID != null); + selectIgnitionButton.setEnabled(currentMount != null && currentID != null); + resetIgnitionButton.setEnabled(currentMount != null && currentID != null); + } else { + showEmptyText(); + selectMotorButton.setEnabled(false); + removeMotorButton.setEnabled(false); + selectIgnitionButton.setEnabled(false); + resetIgnitionButton.setEnabled(false); + } } diff --git a/swing/src/net/sf/openrocket/gui/util/SwingPreferences.java b/swing/src/net/sf/openrocket/gui/util/SwingPreferences.java index 5b03fc056..50ef74b16 100644 --- a/swing/src/net/sf/openrocket/gui/util/SwingPreferences.java +++ b/swing/src/net/sf/openrocket/gui/util/SwingPreferences.java @@ -42,7 +42,7 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences { private static final List SUPPORTED_LOCALES; static { List list = new ArrayList(); - for (String lang : new String[] { "en", "de", "es", "fr", "it", "ru", "cs", "pl", "ja", "pt" }) { + for (String lang : new String[] { "en", "de", "es", "fr", "it", "ru", "cs", "pl", "ja", "pt", "tr" }) { list.add(new Locale(lang)); } list.add(new Locale("zh","CN")); diff --git a/swing/src/net/sf/openrocket/startup/SwingStartup.java b/swing/src/net/sf/openrocket/startup/SwingStartup.java index 2ccbb56a5..6a21f241a 100644 --- a/swing/src/net/sf/openrocket/startup/SwingStartup.java +++ b/swing/src/net/sf/openrocket/startup/SwingStartup.java @@ -10,6 +10,7 @@ import javax.swing.SwingUtilities; import javax.swing.Timer; import javax.swing.ToolTipManager; +import net.miginfocom.layout.LayoutUtil; import net.sf.openrocket.arch.SystemInfo; import net.sf.openrocket.arch.SystemInfo.Platform; import net.sf.openrocket.communication.UpdateInfo; @@ -50,6 +51,10 @@ public class SwingStartup { // Check for "openrocket.debug" property before anything else checkDebugStatus(); + + if (System.getProperty("openrocket.debug.layout") != null) { + LayoutUtil.setGlobalDebugMillis(100); + } // Initialize logging first so we can use it initializeLogging();