diff --git a/README.md b/README.md index 59e191e..adc9d9d 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ load and the matching results at each moment. The **?** icon next to each calculator's title explains the theory: how it works, the key design insights and the assumptions behind the formulas (hover on desktop, tap on touch screens). -The site is available in **English, German, Dutch and Turkish**. Pick a language in the header; the +The site is available in **English, German, Spanish, Dutch and Turkish**. Pick a language in the header; the choice is remembered in the browser. It covers the whole interface, calculator labels and results, warnings, sketches, the theory notes and the PDF report. @@ -89,7 +89,7 @@ optionally a sketch to `js/preview.js`, and a check to `tests/run-tests.js`. ## Translations -English is the source language. Texts are written in English in the code, and `js/i18n/de.js`, +English is the source language. Texts are written in English in the code, and `js/i18n/de.js`, `es.js`, `nl.js` and `tr.js` map each English text to its translation (`PEC.t(text, vars)` looks it up and falls back to English). `npm test` lists any text that has no translation, so when you add or change a label, warning, theory note or sketch text, add the same English key to each language file. diff --git a/index.html b/index.html index 00ce251..8edf2ab 100644 --- a/index.html +++ b/index.html @@ -62,6 +62,7 @@

Saved calculations

+ diff --git a/js/i18n.js b/js/i18n.js index 46790a6..c194cb2 100644 --- a/js/i18n.js +++ b/js/i18n.js @@ -11,6 +11,7 @@ var LANGS = [ { code: 'en', name: 'English', locale: 'en-GB' }, { code: 'de', name: 'Deutsch', locale: 'de-DE' }, + { code: 'es', name: 'Español', locale: 'es-ES' }, { code: 'nl', name: 'Nederlands', locale: 'nl-NL' }, { code: 'tr', name: 'Türkçe', locale: 'tr-TR' } ]; diff --git a/js/i18n/es.js b/js/i18n/es.js new file mode 100644 index 0000000..4ed9ba0 --- /dev/null +++ b/js/i18n/es.js @@ -0,0 +1,733 @@ +/* + * Spanish translations, keyed by the English source text (see js/i18n.js). + */ +(function (root) { + 'use strict'; + root.PEC.i18n.add('es', { + "Reference": "Referencia", + "Material properties": "Propiedades de materiales", + "No calculator matches.": "Ninguna calculadora coincide.", + "Source:": "Fuente:", + "Save": "Guardar", + "Save as…": "Guardar como…", + "Export PDF": "Exportar PDF", + "Print": "Imprimir", + "Copy link": "Copiar enlace", + "Download JSON": "Descargar JSON", + "Reset": "Restablecer", + "Report": "Informe", + "Project / reference": "Proyecto / referencia", + "Notes (included in the PDF)": "Notas (incluidas en el PDF)", + "Skip to calculator": "Ir a la calculadora", + "Geometry sketch: {name}": "Esquema de la geometría: {name}", + "Chart: {title}. {y} from {y0} to {y1} {yu} over {x} from {x0} to {x1} {xu}.": "Gráfico: {title}. {y} de {y0} a {y1} {yu} frente a {x} de {x0} a {x1} {xu}.", + "Geometry": "Geometría", + "Animate the sketch: load, deflect and release": "Animar el esquema: cargar, deformar y soltar", + "▶ Animate": "▶ Animar", + "Results": "Resultados", + "Formulas": "Fórmulas", + "Formulas from the free {link} resource. This is an independent tool, not affiliated with JPE. Check results before relying on them for critical designs.": "Fórmulas del recurso gratuito {link}. Esta es una herramienta independiente, sin relación con JPE. Compruebe los resultados antes de confiar en ellos para diseños críticos.", + "Reset all inputs of this calculator to their defaults?": "¿Restablecer todas las entradas de esta calculadora a sus valores predeterminados?", + "Loaded:": "Cargado:", + "Enter a valid number for: {fields}": "Introduzca un número válido para: {fields}", + "Calculation error: {msg}": "Error de cálculo: {msg}", + "Schematic sketch, not to scale; {notes}.": "Esquema ilustrativo, no a escala; {notes}.", + "Schematic sketch, not to scale.": "Esquema ilustrativo, no a escala.", + "Not to scale: {notes}.": "No a escala: {notes}.", + "Drawn to scale from the inputs.": "Dibujado a escala a partir de las entradas.", + "❚❚ Stop": "❚❚ Detener", + "Theory: how it works": "Teoría: cómo funciona", + "Theory": "Teoría", + "How it works": "Cómo funciona", + "Key points": "Puntos clave", + "Assumptions": "Hipótesis", + "Tip: press ▶ Animate on the sketch to see the motion.": "Consejo: pulse ▶ Animar en el esquema para ver el movimiento.", + "Full article on JPE Precision Point": "Artículo completo en JPE Precision Point", + "Saved \"{name}\"": "Guardado \"{name}\"", + "Name for this calculation:": "Nombre de este cálculo:", + "Open": "Abrir", + "Delete": "Eliminar", + "Opened \"{name}\"": "Abierto \"{name}\"", + "Delete \"{name}\"?": "¿Eliminar \"{name}\"?", + "Nothing to export": "Nada que exportar", + "Import failed: {msg}": "Error al importar: {msg}", + "Link copied – it contains all inputs": "Enlace copiado: contiene todas las entradas", + "Copy this link:": "Copie este enlace:", + "Custom values": "Valores personalizados", + "Fix the inputs first": "Corrija primero las entradas", + "Preparing…": "Preparando…", + "Precision Engineering Calculators": "Calculadoras de ingeniería de precisión", + "PDF downloaded": "PDF descargado", + "PDF export failed: {msg}": "Error al exportar el PDF: {msg}", + "Used as presets in the calculators. Where JPE gives a range, the lower bound is used for strength and the midpoint for stiffness and thermal values. Poisson's ratio is not part of the JPE table; typical handbook values are shown.": "Se usan como valores predefinidos en las calculadoras. Cuando JPE da un intervalo, se usa el límite inferior para la resistencia y el valor medio para la rigidez y los valores térmicos. El coeficiente de Poisson no forma parte de la tabla de JPE; se muestran valores típicos de manual.", + "Material": "Material", + "typ.": "típ.", + "No saved calculations yet. Use “Save” on a calculator, or import a JSON file.": "Aún no hay cálculos guardados. Use “Guardar” en una calculadora o importe un archivo JSON.", + "No saved calculations for this calculator yet. Use “Save” on a calculator, or import a JSON file.": "Aún no hay cálculos guardados para esta calculadora. Use “Guardar” en una calculadora o importe un archivo JSON.", + "Could not load {src}": "No se pudo cargar {src}", + "Generated {date}": "Generado el {date}", + "Project: {project}": "Proyecto: {project}", + "Notes: {notes}": "Notas: {notes}", + "Symbol": "Símbolo", + "Value": "Valor", + "Unit": "Unidad", + "Input": "Entrada", + "Result": "Resultado", + "Warnings": "Advertencias", + "Formulas from the free JPE Precision Point resource. This report is generated by an independent tool and is not affiliated with JPE; verify results for critical designs.": "Fórmulas del recurso gratuito JPE Precision Point. Este informe lo genera una herramienta independiente sin relación con JPE; verifique los resultados para diseños críticos.", + "page {p} / {n}": "página {p} / {n}", + "load {p} %": "carga {p} %", + "Cross-section": "Sección transversal", + "width b = {b}, thickness t = {t}": "anchura b = {b}, espesor t = {t}", + "Notch detail": "Detalle de la entalla", + "rotation happens in the thin neck": "la rotación se produce en el cuello delgado", + "flat": "plano", + "width t = {t} (into page)": "anchura t = {t} (perpendicular al plano)", + "pole, a = {a}": "polo, a = {a}", + "w = {w}, t = {t} per leaf spring": "w = {w}, t = {t} por resorte de lámina", + "deflected shape (exaggerated)": "forma deformada (exagerada)", + "Section": "Sección", + "F < F_b: the column stays straight": "F < F_b: la columna se mantiene recta", + "F = F_b: the column buckles sideways in this mode": "F = F_b: la columna pandea lateralmente en este modo", + "load removed: the column springs back (elastic)": "carga retirada: la columna recupera su forma (elástica)", + "guided": "guiado", + "body 1 (top), body 2 (bottom)": "cuerpo 1 (arriba), cuerpo 2 (abajo)", + "Contact": "Contacto", + "free vibration at {f} (slowed down, amplitude exaggerated)": "vibración libre a {f} (ralentizada, amplitud exagerada)", + "enter a mass m to get the eigenfrequency": "introduzca una masa m para obtener la frecuencia propia", + "approach at v₀": "aproximación a v₀", + "contact: the spring decelerates the mass": "contacto: el resorte decelera la masa", + "rebound at −v₀ (no damping)": "rebote a −v₀ (sin amortiguamiento)", + "base (thread)": "base (rosca)", + "spacer": "separador", + "clamped part": "pieza apretada", + "S-shape (end guided)": "Forma S (extremo guiado)", + "C-shape (end free)": "Forma C (extremo libre)", + "bending about y": "flexión respecto a y", + "bending about x": "flexión respecto a x", + "Show or hide the calculator list": "Mostrar u ocultar la lista de calculadoras", + "formulas from JPE Precision Point": "fórmulas de JPE Precision Point", + "Language": "Idioma", + "Unit system": "Sistema de unidades", + "Switch between metric (SI) and US customary units": "Cambiar entre unidades métricas (SI) y unidades habituales de EE. UU.", + "Metric": "Métrico", + "Saved": "Guardados", + "Saved calculations, JSON import/export": "Cálculos guardados, importación/exportación JSON", + "Toggle light/dark theme": "Cambiar entre tema claro y oscuro", + "Toggle theme": "Cambiar tema", + "Search calculators…": "Buscar calculadoras…", + "Search calculators": "Buscar calculadoras", + "Saved calculations": "Cálculos guardados", + "all calculators": "todas las calculadoras", + "Close": "Cerrar", + "Export JSON": "Exportar JSON", + "Import JSON": "Importar JSON", + "L/t < 10: slender beam theory becomes inaccurate.": "L/t < 10: la teoría de vigas esbeltas pierde precisión.", + "Deflection exceeds the stroke allowed by the stress limit.": "La deflexión supera la carrera permitida por el límite de tensión.", + "L/d < 10: slender beam theory becomes inaccurate.": "L/d < 10: la teoría de vigas esbeltas pierde precisión.", + "β < 0.01: limited by manufacturability.": "β < 0.01: limitado por la fabricabilidad.", + "β > 0.5: hinge functionality is lost; formulas are outside their range.": "β > 0.5: se pierde la función de bisagra; las fórmulas están fuera de su rango.", + "Load position a must lie between 0 and L.": "La posición de la carga a debe estar entre 0 y L.", + "L/h < 10: slender beam theory becomes inaccurate (shear deformation not included).": "L/h < 10: la teoría de vigas esbeltas pierde precisión (no incluye la deformación por cortante).", + "Slope > 5°: small-rotation assumption violated.": "Pendiente > 5°: no se cumple la hipótesis de pequeñas rotaciones.", + "Hollow rectangle needs a uniform wall thickness ((wₒ − wᵢ) = (hₒ − hᵢ)) for the thin-walled formula.": "El rectángulo hueco necesita un espesor de pared uniforme ((wₒ − wᵢ) = (hₒ − hᵢ)) para la fórmula de pared delgada.", + "Assumes free warping. For clamped leaf springs see \"Torsion of leaf springs: Restrained warping\".": "Supone alabeo libre. Para resortes de lámina empotrados, véase «Torsion of leaf springs: Restrained warping».", + "Stress at the Euler load exceeds the yield strength: the column yields before it buckles (Euler not valid).": "La tensión a la carga de Euler supera el límite elástico: la columna plastifica antes de pandear (Euler no es válido).", + "Applied force exceeds the Euler buckling load.": "La fuerza aplicada supera la carga de pandeo de Euler.", + "No point contact: the combined curvature is zero or negative in one direction (line contact or conforming surfaces).": "No hay contacto puntual: la curvatura combinada es cero o negativa en una dirección (contacto lineal o superficies conformes).", + "ε_rr > 800: approaching line contact, use rectangular-contact equations.": "ε_rr > 800: se aproxima a un contacto lineal; use las ecuaciones de contacto rectangular.", + "Enter at least one stiffness.": "Introduzca al menos una rigidez.", + "All inputs must be positive.": "Todas las entradas deben ser positivas.", + "No positive spacer length: the bolt's relative change must lie between those of the clamped part and the spacer.": "No hay longitud de separador positiva: la variación relativa del tornillo debe estar entre las de la pieza apretada y el separador.", + "v_max reached, a_max not reached (I/III)": "se alcanza v_max, no se alcanza a_max (I/III)", + "neither v_max nor a_max reached (II/IV)": "no se alcanza ni v_max ni a_max (II/IV)", + "v_max and a_max reached (V)": "se alcanzan v_max y a_max (V)", + "a_max reached, v_max not reached (VI)": "se alcanza a_max, no se alcanza v_max (VI)", + "Inner dimensions must be smaller than outer dimensions.": "Las dimensiones interiores deben ser menores que las exteriores.", + "Inner diameter must be smaller than outer diameter.": "El diámetro interior debe ser menor que el exterior.", + "Flange/web thickness too large for the given w and h.": "Espesor de ala/alma demasiado grande para los w y h dados.", + "average shear stress (thin-walled); inner corners are higher without fillets": "tensión cortante media (pared delgada); sin redondeos, las esquinas interiores tienen tensiones mayores", + "Maximum stress exceeds the allowable stress.": "La tensión máxima supera la tensión admisible.", + "section walls drawn thicker than scale": "paredes de la sección dibujadas más gruesas que a escala", + "thin section drawn thicker than scale": "sección delgada dibujada más gruesa que a escala", + "tube wall drawn thicker than scale": "pared del tubo dibujada más gruesa que a escala", + "section thickness drawn thicker than scale": "espesor de la sección dibujado más grueso que a escala", + "thickness drawn thicker than scale": "espesor dibujado más grueso que a escala", + "deflection exaggerated for clarity": "deflexión exagerada para mayor claridad", + "overview: hinge thickness drawn thicker than scale": "vista general: espesor de la bisagra dibujado más grueso que a escala", + "detail: hinge thickness drawn thicker than scale": "detalle: espesor de la bisagra dibujado más grueso que a escala", + "rotation exaggerated for clarity": "rotación exagerada para mayor claridad", + "pole lies outside the drawing": "el polo está fuera del dibujo", + "sideways deflection exaggerated": "deflexión lateral exagerada", + "views drawn without the misalignment angle θ": "vistas dibujadas sin el ángulo de desalineación θ", + "contact ellipse enlarged": "elipse de contacto ampliada", + "approach exaggerated for clarity": "aproximación exagerada para mayor claridad", + "Could not render the geometry preview": "No se pudo mostrar la vista previa de la geometría", + "diameter drawn thicker than scale": "diámetro dibujado más grueso que a escala", + "deflection reduced for clarity": "deflexión reducida para mayor claridad", + "slowed down to about 2.5 s per move": "ralentizado a unos 2.5 s por movimiento", + "widths schematic, lengths to scale": "anchuras esquemáticas, longitudes a escala", + "Not a calculator export file.": "No es un archivo exportado de la calculadora.", + "The file contains no calculations for this app.": "El archivo no contiene cálculos para esta aplicación.", + "Leaf spring": "Resorte de lámina", + "Flexures": "Mecanismos flexibles", + "Stiffness in all six directions, stress and stroke of a straight leaf spring in S-shape (guided end) or C-shape (free end) deformation.": "Rigidez en las seis direcciones, tensión y carrera de un resorte de lámina recto con deformación en forma S (extremo guiado) o en forma C (extremo libre).", + "Deformation shape": "Forma de deformación", + "S-shape (end guided, rotation fixed)": "Forma S (extremo guiado, rotación impedida)", + "C-shape (end free to rotate)": "Forma C (extremo con rotación libre)", + "Length": "Longitud", + "Width": "Anchura", + "Thickness": "Espesor", + "Rotation Rₓ of the end (for C_y)": "Rotación Rₓ del extremo (para C_y)", + "Rₓ fixed": "Rₓ impedida", + "Rₓ free": "Rₓ libre", + "Preset (JPE table)": "Valor predefinido (tabla JPE)", + "Young's modulus": "Módulo de Young", + "Poisson's ratio": "Coeficiente de Poisson", + "Yield strength": "Límite elástico", + "Fatigue strength": "Resistencia a la fatiga", + "Stress criterion": "Criterio de tensión", + "Dynamic movement → fatigue limit": "Movimiento dinámico → límite de fatiga", + "Static deformation → yield limit": "Deformación estática → límite elástico", + "Safety factor": "Factor de seguridad", + "Load case": "Caso de carga", + "Deflection in compliant direction": "Deflexión en la dirección flexible", + "u_z = (3/5)·uₓ² / L (parasitic shortening)": "u_z = (3/5)·uₓ² / L (acortamiento parásito)", + "F_b = π²·E·I / L_b², L_b = L (Beam theory: Buckling)": "F_b = π²·E·I / L_b², L_b = L (Teoría de vigas: pandeo)", + "Stiffness": "Rigidez", + "Stiffness in x (compliant)": "Rigidez en x (flexible)", + "Axial stiffness at uₓ = 0": "Rigidez axial con uₓ = 0", + "Axial stiffness at uₓ": "Rigidez axial con uₓ", + "Rotational stiffness about x": "Rigidez rotacional respecto a x", + "Rotational stiffness about y": "Rigidez rotacional respecto a y", + "Torsional stiffness about z": "Rigidez torsional respecto a z", + "Force for deflection uₓ": "Fuerza para la deflexión uₓ", + "Maximum bending stress": "Tensión máxima de flexión", + "Allowable stress (fatigue / SF)": "Tensión admisible (fatiga / FS)", + "Stress utilisation": "Grado de utilización de la tensión", + "Maximum stroke at allowable stress": "Carrera máxima a la tensión admisible", + "Parasitic axial shortening": "Acortamiento axial parásito", + "Buckling (axial compression)": "Pandeo (compresión axial)", + "Buckling length": "Longitud de pandeo", + "Euler buckling load": "Carga de pandeo de Euler", + "F_b = π²·E·I / L_b², L_b = 2L (Beam theory: Buckling)": "F_b = π²·E·I / L_b², L_b = 2L (Teoría de vigas: pandeo)", + "Allowable stress (yield / SF)": "Tensión admisible (fluencia / FS)", + "A leaf spring is a thin plate that bends easily through its thickness (x) but is very stiff in its own plane. It works as a frictionless, play-free guide: compliant in x, stiff in y, z and the in-plane rotation.": "Un resorte de lámina es una placa delgada que se flexiona fácilmente en la dirección de su espesor (x), pero es muy rígida en su propio plano. Funciona como una guía sin fricción ni holgura: flexible en x, rígida en y, z y en la rotación en el plano.", + "S-shape: both ends clamped, so the moving end stays parallel. It is 4× stiffer than the C-shape (free end) with the same dimensions.": "Forma S: ambos extremos empotrados, de modo que el extremo móvil se mantiene paralelo. Es 4× más rígida que la forma C (extremo libre) con las mismas dimensiones.", + "Compliant stiffness grows with t³ and drops with L³. Doubling the thickness makes it 8× stiffer.": "La rigidez en la dirección flexible crece con t³ y disminuye con L³. Duplicar el espesor la hace 8× más rígida.", + "For a given stroke the stress is σ ∝ E·t·uₓ/L². Long, thin springs give the most stroke.": "Para una carrera dada, la tensión es σ ∝ E·t·uₓ/L². Los resortes largos y delgados dan la mayor carrera.", + "The end also moves axially by u_z ≈ 0.6·uₓ²/L, and the axial stiffness C_z falls quickly as the spring deflects.": "El extremo también se desplaza axialmente u_z ≈ 0.6·uₓ²/L, y la rigidez axial C_z cae rápidamente al flexionarse el resorte.", + "Use the fatigue limit for moving parts and the yield limit for static deformation.": "Use el límite de fatiga para piezas en movimiento y el límite elástico para deformación estática.", + "Linear elastic, small deflections": "Elástico lineal, pequeñas deflexiones", + "Slender: L/t > 10": "Esbelto: L/t > 10", + "Rectangular section, ideal clamping": "Sección rectangular, empotramiento ideal", + "Rod spring (wire flexure)": "Resorte de varilla (alambre flexible)", + "Stiffness, stress and stroke of a round rod (wire) flexure in S-shape or C-shape deformation.": "Rigidez, tensión y carrera de una varilla redonda flexible (alambre) con deformación en forma S o forma C.", + "Diameter": "Diámetro", + "Lateral deflection": "Deflexión lateral", + "Lateral stiffness": "Rigidez lateral", + "Bending stiffness": "Rigidez a flexión", + "Torsional stiffness": "Rigidez torsional", + "A rod (wire) flexure is a thin round bar. It is compliant laterally in both directions and in torsion, and stiff only along its axis. It fixes a single degree of freedom, which makes it ideal as a strut, for example in a hexapod or a statically determined support.": "Una varilla flexible (alambre) es una barra redonda delgada. Es flexible lateralmente en ambas direcciones y a torsión, y rígida solo a lo largo de su eje. Fija un único grado de libertad, lo que la hace ideal como puntal, por ejemplo en un hexápodo o en un apoyo isostático.", + "S-shape (both ends clamped) is 4× stiffer laterally than the C-shape.": "La forma S (ambos extremos empotrados) es 4× más rígida lateralmente que la forma C.", + "Lateral stiffness scales with d⁴/L³, so a small change in diameter has a big effect.": "La rigidez lateral escala con d⁴/L³, así que un pequeño cambio de diámetro tiene un gran efecto.", + "Axial stiffness drops as the rod deflects laterally (C_z(uₓ)).": "La rigidez axial disminuye a medida que la varilla se flexiona lateralmente (C_z(uₓ)).", + "Under compression the rod can buckle. Check F_b against the axial load.": "A compresión la varilla puede pandear. Compare F_b con la carga axial.", + "No necked sections": "Sin secciones con estrechamiento", + "Folded leaf spring": "Resorte de lámina plegado", + "Displacement, stiffness and stress of an L-shaped (folded) leaf spring loaded at its free end by a force at angle θ.": "Desplazamiento, rigidez y tensión de un resorte de lámina en forma de L (plegado) cargado en su extremo libre por una fuerza con ángulo θ.", + "Length of leg 1 (vertical)": "Longitud del brazo 1 (vertical)", + "Length of leg 2 (horizontal)": "Longitud del brazo 2 (horizontal)", + "Load": "Carga", + "Force at free end": "Fuerza en el extremo libre", + "Force angle (from x-axis)": "Ángulo de la fuerza (desde el eje x)", + "Guided end, L₁ = L₂ = L: C = (15/2)·E·I/L³, C(θ) = C·(1 + (3/5)·sin 2θ)": "Extremo guiado, L₁ = L₂ = L: C = (15/2)·E·I/L³, C(θ) = C·(1 + (3/5)·sin 2θ)", + "Displacement of the free end": "Desplazamiento del extremo libre", + "Displacement in x": "Desplazamiento en x", + "Displacement in y": "Desplazamiento en y", + "Absolute displacement": "Desplazamiento absoluto", + "Direction of displacement": "Dirección del desplazamiento", + "Displacement in force direction": "Desplazamiento en la dirección de la fuerza", + "Absolute stiffness (bidirectional)": "Rigidez absoluta (bidireccional)", + "Projected stiffness (unidirectional)": "Rigidez proyectada (unidireccional)", + "Guided-end stiffness at θ": "Rigidez con extremo guiado para θ", + "Stress": "Tensión", + "Maximum bending moment": "Momento flector máximo", + "A folded (L-shaped) leaf spring is two leaf springs at 90°. Each leg bends, so the free end can move in both in-plane directions while staying stiff out of plane. You get a large stroke in a compact space.": "Un resorte de lámina plegado (en forma de L) son dos resortes de lámina a 90°. Cada brazo se flexiona, de modo que el extremo libre puede moverse en ambas direcciones del plano sin perder rigidez fuera del plano. Se obtiene una gran carrera en poco espacio.", + "The stiffness depends on the direction of the force (θ), and the end does not move exactly in the force direction (φ ≠ θ).": "La rigidez depende de la dirección de la fuerza (θ), y el extremo no se mueve exactamente en la dirección de la fuerza (φ ≠ θ).", + "The largest bending moment occurs at the clamp or at the corner.": "El mayor momento flector se produce en el empotramiento o en la esquina.", + "Out-of-plane stiffness C_z combines bending of both legs as one plate with shear.": "La rigidez fuera del plano C_z combina la flexión de ambos brazos como una sola placa con el cortante.", + "With a guided end (rotation fixed) and L₁ = L₂ the stiffness is (15/2)·EI/L³.": "Con el extremo guiado (rotación impedida) y L₁ = L₂ la rigidez es (15/2)·EI/L³.", + "Torsion of leg 1 neglected for C_z": "Se desprecia la torsión del brazo 1 para C_z", + "Elastic (notch) hinge": "Bisagra elástica (de entalla)", + "Stiffness of a circular notch hinge at the hinge (A) and at a lever point B, maximum stress and maximum rotation.": "Rigidez de una bisagra de entalla circular en la bisagra (A) y en un punto de palanca B, tensión máxima y rotación máxima.", + "Notch cutting diameter, side 1": "Diámetro de corte de la entalla, lado 1", + "Diameter of the circular cut": "Diámetro del corte circular", + "Notch cutting diameter, side 2": "Diámetro de corte de la entalla, lado 2", + "0 = straight (flat) side": "0 = lado recto (plano)", + "Minimum hinge thickness": "Espesor mínimo de la bisagra", + "Hinge width (depth)": "Anchura de la bisagra (profundidad)", + "Distance hinge A → point B": "Distancia bisagra A → punto B", + "Hinge rotation": "Rotación de la bisagra", + "D = 2·d₁·d₂ / (d₁ + d₂), D = 2·d₁ for a straight side (d₂ → ∞), β = h/D": "D = 2·d₁·d₂ / (d₁ + d₂), D = 2·d₁ para un lado recto (d₂ → ∞), β = h/D", + "C_Ay ≈ G·h·t / D = E·h·t / (2D(1+ν)) (rough estimate)": "C_Ay ≈ G·h·t / D = E·h·t / (2D(1+ν)) (estimación aproximada)", + "Realistic range 0.01 < β < 0.5": "Rango realista 0.01 < β < 0.5", + "Effective hinge length": "Longitud efectiva de la bisagra", + "Hinge parameter": "Parámetro de la bisagra", + "Stiffness at hinge A": "Rigidez en la bisagra A", + "Stiffness in x": "Rigidez en x", + "Stiffness in y (rough estimate)": "Rigidez en y (estimación aproximada)", + "Stiffness in z": "Rigidez en z", + "Rotational stiffness about y (hinge axis)": "Rigidez rotacional respecto a y (eje de la bisagra)", + "Rotational stiffness about z": "Rigidez rotacional respecto a z", + "Stiffness at point B": "Rigidez en el punto B", + "Stiffness in y": "Rigidez en y", + "Stiffness in z (actuation direction)": "Rigidez en z (dirección de accionamiento)", + "Force at B for rotation R_y": "Fuerza en B para la rotación R_y", + "Displacement of B": "Desplazamiento de B", + "Moment at hinge": "Momento en la bisagra", + "Maximum stress": "Tensión máxima", + "Maximum rotation at allowable stress": "Rotación máxima a la tensión admisible", + "A notch (elastic) hinge is made by cutting two circular notches into a solid block, leaving a thin neck of thickness h. Rotation concentrates in the neck, so the part rotates about the hinge without friction, play or wear, and it can be machined monolithically.": "Una bisagra de entalla (elástica) se obtiene cortando dos entallas circulares en un bloque macizo, dejando un cuello delgado de espesor h. La rotación se concentra en el cuello, de modo que la pieza gira alrededor de la bisagra sin fricción, holgura ni desgaste, y puede mecanizarse de forma monolítica.", + "Rotational stiffness K_Ay ≈ 0.093·E·t·h²·√(h/D). It is very sensitive to the neck thickness h.": "Rigidez rotacional K_Ay ≈ 0.093·E·t·h²·√(h/D). Es muy sensible al espesor del cuello h.", + "β = h/D sets the trade-off: a small β gives low rotational stiffness but also low support stiffness.": "β = h/D define el compromiso: un β pequeño da una rigidez rotacional baja, pero también una rigidez de soporte baja.", + "Stress grows with rotation: σ ≈ 0.58·E·√(h/D)·R_y. Notch hinges are limited to small angles (typically well under a degree for metals).": "La tensión crece con la rotación: σ ≈ 0.58·E·√(h/D)·R_y. Las bisagras de entalla se limitan a ángulos pequeños (normalmente muy por debajo de un grado en metales).", + "Stiffness at a lever point B combines the hinge translation with rotation times the lever arm (1/C_B = 1/C_A + L²/K_A).": "La rigidez en un punto de palanca B combina la traslación de la bisagra con la rotación multiplicada por el brazo de palanca (1/C_B = 1/C_A + L²/K_A).", + "Small rotations": "Rotaciones pequeñas", + "C_Ay is only a rough estimate": "C_Ay es solo una estimación aproximada", + "Cross spring pivot": "Pivote de resortes cruzados", + "Rotational stiffness, buckling load, rolling radius and maximum angle of a cross spring pivot with the pole at a·L.": "Rigidez rotacional, carga de pandeo, radio de rodadura y ángulo máximo de un pivote de resortes cruzados con el polo en a·L.", + "Geometry (per leaf spring)": "Geometría (por resorte de lámina)", + "Leaf spring length": "Longitud del resorte de lámina", + "Leaf spring width": "Anchura del resorte de lámina", + "Leaf spring thickness": "Espesor del resorte de lámina", + "Pole location (fraction of L)": "Posición del polo (fracción de L)", + "Rotation angle": "Ángulo de rotación", + "I = w·t³/12 (single leaf spring)": "I = w·t³/12 (un solo resorte de lámina)", + "ρ/L = −(√2/30)·(36·(a − 0.5)² − 5) (equivalent rolling radius)": "ρ/L = −(√2/30)·(36·(a − 0.5)² − 5) (radio de rodadura equivalente)", + "Classical double symmetric (a = 0.5, total width w): K = 0.5·K_ref, F_b = 0.5·F_b,ref, θ_max = θ_ref": "Clásico doble simétrico (a = 0.5, anchura total w): K = 0.5·K_ref, F_b = 0.5·F_b,ref, θ_max = θ_ref", + "Special classical, a = 0.5 ± √5/6 (ρ = 0): K = 2.67·K_ref, F_b = 0.5·F_b,ref, θ_max = θ_ref/3.3": "Clásico especial, a = 0.5 ± √5/6 (ρ = 0): K = 2.67·K_ref, F_b = 0.5·F_b,ref, θ_max = θ_ref/3.3", + "\"Haberland\" cross spring (ρ/L = −0.047): K = 4·K_ref, F_b = F_b,ref, θ_max = θ_ref/4": "Resortes cruzados «Haberland» (ρ/L = −0.047): K = 4·K_ref, F_b = F_b,ref, θ_max = θ_ref/4", + "Pivot with pole at a·L": "Pivote con el polo en a·L", + "Rotational stiffness": "Rigidez rotacional", + "Torque at θ": "Par para θ", + "Equivalent rolling radius": "Radio de rodadura equivalente", + "Reference (non-crossing, a = 0.5)": "Referencia (sin cruce, a = 0.5)", + "Reference stiffness": "Rigidez de referencia", + "Reference buckling load (radial)": "Carga de pandeo de referencia (radial)", + "Reference max. angle at allowable stress": "Ángulo máx. de referencia a la tensión admisible", + "Stress at θ (reference geometry)": "Tensión para θ (geometría de referencia)", + "Classical double symmetric (a = 0.5)": "Clásico doble simétrico (a = 0.5)", + "Buckling load": "Carga de pandeo", + "Maximum angle": "Ángulo máximo", + "Special classical (a = 0.5 ± √5/6)": "Clásico especial (a = 0.5 ± √5/6)", + "\"Haberland\" cross spring": "Resortes cruzados «Haberland»", + "A cross spring pivot uses two leaf springs that cross each other (in projection). Together they block both translations but allow rotation about the line where they cross. It is a frictionless rotary bearing for limited angles.": "Un pivote de resortes cruzados usa dos resortes de lámina que se cruzan (en proyección). Juntos bloquean ambas traslaciones, pero permiten la rotación alrededor de la línea en la que se cruzan. Es un cojinete giratorio sin fricción para ángulos limitados.", + "The pole position a (fraction of L) sets the stiffness: K = 8(1 − 3a + 3a²)·EI/L, which is lowest at a = 0.5.": "La posición del polo a (fracción de L) determina la rigidez: K = 8(1 − 3a + 3a²)·EI/L, que es mínima en a = 0.5.", + "The centre of rotation shifts slightly with angle (parasitic motion). At a = 0.5 ± √5/6 the rolling radius is zero.": "El centro de rotación se desplaza ligeramente con el ángulo (movimiento parásito). En a = 0.5 ± √5/6 el radio de rodadura es cero.", + "A radial load can buckle the springs: F_b,ref = 8π²EI/L².": "Una carga radial puede hacer pandear los resortes: F_b,ref = 8π²EI/L².", + "The maximum angle is limited by stress: θ_ref = 2σ·L/(E·t). Thin springs rotate further.": "El ángulo máximo está limitado por la tensión: θ_ref = 2σ·L/(E·t). Los resortes delgados giran más.", + "Identical leaf springs": "Resortes de lámina idénticos", + "Orthogonal crossing": "Cruce ortogonal", + "Small angles": "Ángulos pequeños", + "Area moment of inertia": "Momento de inercia de área", + "Beam theory": "Teoría de vigas", + "Area, second moments of area, section moduli and torsion constant of common cross-sections.": "Área, momentos de inercia de área, módulos resistentes y constante de torsión de secciones transversales habituales.", + "Shape": "Forma", + "Rectangle (w × h)": "Rectángulo (w × h)", + "Hollow rectangle": "Rectángulo hueco", + "Solid circle (Ø d)": "Círculo macizo (Ø d)", + "Tube (Ø do / Ø di)": "Tubo (Ø do / Ø di)", + "I-beam": "Perfil en I", + "Triangle (w × h)": "Triángulo (w × h)", + "Ellipse (semi-axes r₁, r₂)": "Elipse (semiejes r₁, r₂)", + "Height (bending direction)": "Altura (dirección de flexión)", + "Outer width": "Anchura exterior", + "Outer height": "Altura exterior", + "Inner width": "Anchura interior", + "Inner height": "Altura interior", + "Outer diameter": "Diámetro exterior", + "Inner diameter": "Diámetro interior", + "Flange thickness": "Espesor del ala", + "Web thickness": "Espesor del alma", + "Semi-axis (width direction)": "Semieje (dirección de la anchura)", + "Semi-axis (bending direction)": "Semieje (dirección de flexión)", + "Rectangle: Iₓ = w·h³/12, I_y = w³·h/12": "Rectángulo: Iₓ = w·h³/12, I_y = w³·h/12", + "Hollow rectangle: Iₓ = (wₒ·hₒ³ − wᵢ·hᵢ³)/12": "Rectángulo hueco: Iₓ = (wₒ·hₒ³ − wᵢ·hᵢ³)/12", + "Circle: Iₓ = I_y = π/4·r⁴": "Círculo: Iₓ = I_y = π/4·r⁴", + "Tube: Iₓ = I_y = π/4·(rₒ⁴ − rᵢ⁴)": "Tubo: Iₓ = I_y = π/4·(rₒ⁴ − rᵢ⁴)", + "I-beam: Iₓ = w·h³/12 − (w − t₂)(h − 2t₁)³/12, I_y = t₂³(h − 2t₁)/12 + 2w³t₁/12": "Perfil en I: Iₓ = w·h³/12 − (w − t₂)(h − 2t₁)³/12, I_y = t₂³(h − 2t₁)/12 + 2w³t₁/12", + "Triangle: Iₓ = w·h³/36, I_y = w³·h/48": "Triángulo: Iₓ = w·h³/36, I_y = w³·h/48", + "Ellipse: Iₓ = π/4·r₁·r₂³, I_y = π/4·r₁³·r₂": "Elipse: Iₓ = π/4·r₁·r₂³, I_y = π/4·r₁³·r₂", + "Section modulus W = I/e (e = distance to outer fibre)": "Módulo resistente W = I/e (e = distancia a la fibra exterior)", + "Radius of gyration i = √(I/A)": "Radio de giro i = √(I/A)", + "Torsion constant J_T: see Beam theory: Torsion": "Constante de torsión J_T: véase Teoría de vigas: torsión", + "Area": "Área", + "Second moment of area about x": "Momento de inercia de área respecto a x", + "Second moment of area about y": "Momento de inercia de área respecto a y", + "Outer fibre distance (x-axis bending)": "Distancia a la fibra exterior (flexión respecto al eje x)", + "Outer fibre distance (y-axis bending)": "Distancia a la fibra exterior (flexión respecto al eje y)", + "Section modulus about x": "Módulo resistente respecto a x", + "Section modulus about y": "Módulo resistente respecto a y", + "Radius of gyration about x": "Radio de giro respecto a x", + "Radius of gyration about y": "Radio de giro respecto a y", + "Torsion constant": "Constante de torsión", + "The second moment of area I = ∫y²·dA measures how well a cross-section resists bending. Material far from the neutral axis counts most, which is why I-beams and tubes are so efficient.": "El momento de inercia de área I = ∫y²·dA mide cuánto resiste una sección transversal la flexión. El material alejado del eje neutro es el que más cuenta, por eso los perfiles en I y los tubos son tan eficientes.", + "For a rectangle I = w·h³/12. Height counts cubed, so a beam laid flat is much weaker.": "Para un rectángulo I = w·h³/12. La altura cuenta al cubo, así que una viga tumbada es mucho más débil.", + "Bending stress σ = M/W, with section modulus W = I/e and e the distance to the outer fibre.": "Tensión de flexión σ = M/W, con el módulo resistente W = I/e y e la distancia a la fibra exterior.", + "Bending about the weak axis (smallest I) governs buckling.": "La flexión respecto al eje débil (I mínimo) determina el pandeo.", + "The torsion constant J_T equals the polar moment only for circular sections. Open sections have a very small J_T.": "La constante de torsión J_T solo es igual al momento polar en secciones circulares. Las secciones abiertas tienen un J_T muy pequeño.", + "Homogeneous material": "Material homogéneo", + "Bending about the centroidal axes": "Flexión respecto a los ejes centroidales", + "Tension, compression & shear": "Tracción, compresión y cortante", + "Axial and shear stress, strain, elongation and stiffness of a prismatic bar.": "Tensión axial y cortante, deformación unitaria, alargamiento y rigidez de una barra prismática.", + "Bar": "Barra", + "Loads": "Cargas", + "Axial force (+ tension)": "Fuerza axial (+ tracción)", + "Shear force": "Esfuerzo cortante", + "τ = F_y / A (average), γ = τ / G, δ = γ·l": "τ = F_y / A (media), γ = τ / G, δ = γ·l", + "Cross-sectional area": "Área de la sección transversal", + "Tension / compression": "Tracción / compresión", + "Normal stress": "Tensión normal", + "Strain": "Deformación unitaria", + "Elongation": "Alargamiento", + "Axial stiffness": "Rigidez axial", + "Shear": "Cortante", + "Shear modulus": "Módulo de cortante", + "Average shear stress": "Tensión cortante media", + "Shear strain": "Deformación angular", + "Shear deformation": "Deformación por cortante", + "Shear stiffness": "Rigidez a cortante", + "Stress check": "Comprobación de tensiones", + "Von Mises stress": "Tensión de von Mises", + "Hooke's law for a bar: under axial force it stretches (σ = E·ε), and under transverse force it shears (τ = G·γ). Stiffness depends on the material (E, G) and the shape (A/l).": "Ley de Hooke para una barra: bajo fuerza axial se alarga (σ = E·ε) y bajo fuerza transversal se deforma a cortante (τ = G·γ). La rigidez depende del material (E, G) y de la forma (A/l).", + "Axial stiffness C_z = E·A/l. Long, thin members are compliant.": "Rigidez axial C_z = E·A/l. Los elementos largos y delgados son flexibles.", + "G = E/(2(1+ν)) ≈ 0.38·E for metals.": "G = E/(2(1+ν)) ≈ 0.38·E para metales.", + "The bar also narrows sideways by the Poisson ratio: Δh/h = −ν·ε.": "La barra también se estrecha lateralmente según el coeficiente de Poisson: Δh/h = −ν·ε.", + "Combined stresses are checked with von Mises: σ_V = √(σ² + 3τ²).": "Las tensiones combinadas se comprueban con von Mises: σ_V = √(σ² + 3τ²).", + "Uniform stress over the section (average shear)": "Tensión uniforme en la sección (cortante medio)", + "Linear elastic": "Elástico lineal", + "Beam bending": "Flexión de vigas", + "Deflection curve, slopes, stiffness and bending stress for standard support and load cases.": "Curva de deflexión, pendientes, rigidez y tensión de flexión para casos estándar de apoyo y carga.", + "Support & load case": "Apoyos y caso de carga", + "Case": "Caso", + "Cantilever, point load F at free end": "Voladizo, carga puntual F en el extremo libre", + "Cantilever, moment M at free end": "Voladizo, momento M en el extremo libre", + "Cantilever, uniform load q": "Voladizo, carga uniforme q", + "Simply supported, point load F at distance a": "Simplemente apoyada, carga puntual F a la distancia a", + "Simply supported, moment M at end B": "Simplemente apoyada, momento M en el extremo B", + "Simply supported, uniform load q": "Simplemente apoyada, carga uniforme q", + "Both ends clamped, uniform load q": "Ambos extremos empotrados, carga uniforme q", + "Clamped / guided end (rotation fixed), point load F": "Empotrada / extremo guiado (rotación impedida), carga puntual F", + "Beam length": "Longitud de la viga", + "Point load": "Carga puntual", + "Moment": "Momento", + "Distributed load": "Carga distribuida", + "Load position from A": "Posición de la carga desde A", + "Bending about": "Flexión respecto a", + "x-axis (deflection along h)": "eje x (deflexión según h)", + "y-axis (deflection along w)": "eje y (deflexión según w)", + "Valid for slender beams: L/h > 10 and θ < 5°": "Válido para vigas esbeltas: L/h > 10 y θ < 5°", + "σ_max = F·L·e / I (at the clamp)": "σ_max = F·L·e / I (en el empotramiento)", + "Second moment of area": "Momento de inercia de área", + "Outer fibre distance": "Distancia a la fibra exterior", + "Deformation": "Deformación", + "Maximum deflection": "Deflexión máxima", + "Location of maximum deflection": "Posición de la deflexión máxima", + "Slope at A": "Pendiente en A", + "Slope at B": "Pendiente en B", + "Stiffness at free end": "Rigidez en el extremo libre", + "Deflection curve": "Curva de deflexión", + "Rotational stiffness at free end": "Rigidez rotacional en el extremo libre", + "σ_max = q·L²·e / (2I) (at the clamp)": "σ_max = q·L²·e / (2I) (en el empotramiento)", + "δy(z) = F·b·z·(L² − b² − z²) / (6EIL) for z ≤ a": "δy(z) = F·b·z·(L² − b² − z²) / (6EIL) para z ≤ a", + "θ_A = F·a·b·(L + b) / (6EIL), θ_B = F·a·b·(L + a) / (6EIL)": "θ_A = F·a·b·(L + b) / (6EIL), θ_B = F·a·b·(L + a) / (6EIL)", + "C = 3EIL / (a²b²) at z = a": "C = 3EIL / (a²b²) en z = a", + "Stiffness at load point": "Rigidez en el punto de carga", + "Rotational stiffness at B": "Rigidez rotacional en B", + "σ_max = q·L²·e / (12I) at the clamps": "σ_max = q·L²·e / (12I) en los empotramientos", + "σ_max = F·L·e / (2I) at both ends": "σ_max = F·L·e / (2I) en ambos extremos", + "Stiffness at guided end": "Rigidez en el extremo guiado", + "Euler–Bernoulli beam theory: the curvature of a beam equals M/(E·I). Integrating twice and applying the support conditions gives the deflection curve, slopes and stiffness for each load case.": "Teoría de vigas de Euler–Bernoulli: la curvatura de una viga es igual a M/(E·I). Integrando dos veces y aplicando las condiciones de apoyo se obtienen la curva de deflexión, las pendientes y la rigidez para cada caso de carga.", + "Stiffness scales with E·I/L³, so length matters most. Halving L gives an 8× stiffer beam.": "La rigidez escala con E·I/L³, así que la longitud es lo que más influye. Reducir L a la mitad da una viga 8× más rígida.", + "Clamped ends are much stiffer than pinned ends. For a central load, clamped–clamped is 4× stiffer than simply supported.": "Los extremos empotrados son mucho más rígidos que los articulados. Con una carga central, empotrada–empotrada es 4× más rígida que simplemente apoyada.", + "The maximum stress is at the point of maximum moment, at the outer fibre: σ = M·e/I.": "La tensión máxima está en el punto de momento máximo, en la fibra exterior: σ = M·e/I.", + "Self-weight is a uniform load q = ρ·g·A.": "El peso propio es una carga uniforme q = ρ·g·A.", + "Slender beam: L/h > 10 (shear deformation neglected)": "Viga esbelta: L/h > 10 (se desprecia la deformación por cortante)", + "Small slopes (< 5°)": "Pendientes pequeñas (< 5°)", + "Torsion": "Torsión", + "Torsion constant, torsional stiffness, twist angle and shear stress of shafts and thin-walled sections (free warping).": "Constante de torsión, rigidez torsional, ángulo de giro y tensión cortante de ejes y secciones de pared delgada (alabeo libre).", + "Shaft": "Eje", + "Torque": "Par", + "Circle: J_T = π·r⁴/2, τ_max = 2T / (π·r³)": "Círculo: J_T = π·r⁴/2, τ_max = 2T / (π·r³)", + "Tube: J_T = π·(rₒ⁴ − rᵢ⁴)/2, τ_max = 2T·rₒ / (π·(rₒ⁴ − rᵢ⁴))": "Tubo: J_T = π·(rₒ⁴ − rᵢ⁴)/2, τ_max = 2T·rₒ / (π·(rₒ⁴ − rᵢ⁴))", + "Rectangle (w ≥ h): J_T = (1/16)·w·h³·(16/3 − 3.36·(h/w)·(1 − h⁴/(12w⁴)))": "Rectángulo (w ≥ h): J_T = (1/16)·w·h³·(16/3 − 3.36·(h/w)·(1 − h⁴/(12w⁴)))", + "Rectangle: τ_max = 3T/(w·h²)·(1 + 0.6095·h/w + 0.8865·(h/w)² − 1.8023·(h/w)³ + 0.9100·(h/w)⁴)": "Rectángulo: τ_max = 3T/(w·h²)·(1 + 0.6095·h/w + 0.8865·(h/w)² − 1.8023·(h/w)³ + 0.9100·(h/w)⁴)", + "Thin-walled box (uniform t): J_T = 2t²(w − t)²(h − t)² / ((w + h)·t − 2t²), τ_avg = T / (2t(w − t)(h − t))": "Cajón de pared delgada (t uniforme): J_T = 2t²(w − t)²(h − t)² / ((w + h)·t − 2t²), τ_avg = T / (2t(w − t)(h − t))", + "Von Mises (pure shear): σ_V = √3·τ_max": "Von Mises (cortante puro): σ_V = √3·τ_max", + "Angle of twist": "Ángulo de giro", + "Maximum shear stress": "Tensión cortante máxima", + "Thin-walled: average shear stress (thin-walled); inner corners are higher without fillets.": "Pared delgada: tensión cortante media (pared delgada); sin redondeos, las esquinas interiores tienen tensiones mayores.", + "A shaft loaded by a torque T twists by θ = T·L/(G·J_T). The torsion constant J_T depends strongly on the shape of the section.": "Un eje cargado con un par T gira un ángulo θ = T·L/(G·J_T). La constante de torsión J_T depende mucho de la forma de la sección.", + "Closed sections (tubes, boxes) are orders of magnitude stiffer in torsion than open sections (strips, I-beams, slit tubes) of the same area.": "Las secciones cerradas (tubos, cajones) son órdenes de magnitud más rígidas a torsión que las secciones abiertas (pletinas, perfiles en I, tubos ranurados) de la misma área.", + "For a thin strip J_T ≈ w·h³/3. That is why leaf springs are compliant in torsion.": "Para una pletina delgada J_T ≈ w·h³/3. Por eso los resortes de lámina son flexibles a torsión.", + "Maximum shear is at the outer surface of a round shaft and at the middle of the long side of a rectangle.": "El cortante máximo está en la superficie exterior de un eje redondo y en el centro del lado largo de un rectángulo.", + "Von Mises for pure shear: σ_V = √3·τ.": "Von Mises para cortante puro: σ_V = √3·τ.", + "Free warping (see restrained warping for clamped leaf springs)": "Alabeo libre (véase alabeo restringido para resortes de lámina empotrados)", + "Euler buckling": "Pandeo de Euler", + "Critical Euler buckling load of a column for the standard end conditions.": "Carga crítica de pandeo de Euler de una columna para las condiciones de extremo estándar.", + "Column": "Columna", + "End conditions": "Condiciones de extremo", + "Clamped – free (k = 2)": "Empotrado – libre (k = 2)", + "Pinned – pinned (k = 1)": "Articulado – articulado (k = 1)", + "Clamped – guided, sway allowed (k = 1)": "Empotrado – guiado, con desplazamiento lateral (k = 1)", + "Pinned – guided, sway allowed (k = 2)": "Articulado – guiado, con desplazamiento lateral (k = 2)", + "Clamped – pinned (k = 0.7)": "Empotrado – articulado (k = 0.7)", + "Clamped – clamped (k = 0.5)": "Empotrado – empotrado (k = 0.5)", + "Applied axial force": "Fuerza axial aplicada", + "I = min(Iₓ, I_y) (weakest axis)": "I = min(Iₓ, I_y) (eje más débil)", + "σ_b = F_b / A, slenderness λ = L_b / √(I/A)": "σ_b = F_b / A, esbeltez λ = L_b / √(I/A)", + "Reinforced leaf spring: see Beam theory: Buckling": "Resorte de lámina reforzado: véase Teoría de vigas: pandeo", + "Smallest second moment of area": "Menor momento de inercia de área", + "Slenderness ratio": "Esbeltez", + "Stress at buckling load": "Tensión a la carga de pandeo", + "Safety against buckling": "Seguridad frente al pandeo", + "Compressive stress at F": "Tensión de compresión con F", + "A slender column under compression stays straight until the load reaches the Euler load F_b = π²·E·I/(k·L)². Above that it suddenly bows sideways (buckles), even though the stress may still be well below yield.": "Una columna esbelta a compresión se mantiene recta hasta que la carga alcanza la carga de Euler F_b = π²·E·I/(k·L)². Por encima, se curva lateralmente de repente (pandea), aunque la tensión aún pueda estar muy por debajo del límite elástico.", + "End conditions set the effective length k·L, from k = 2 (clamped–free) to k = 0.5 (clamped–clamped). The difference is a factor of 16 in load.": "Las condiciones de extremo fijan la longitud efectiva k·L, desde k = 2 (empotrado–libre) hasta k = 0.5 (empotrado–empotrado). La diferencia es un factor 16 en la carga.", + "The weakest axis (smallest I) buckles first.": "El eje más débil (I mínimo) pandea primero.", + "Stocky columns (low slenderness) yield before they buckle. Check that σ_b exceeds the yield strength.": "Las columnas robustas (poca esbeltez) plastifican antes de pandear. Compruebe si σ_b supera el límite elástico.", + "Real columns have imperfections and eccentric loads, so keep a healthy margin F_b/F.": "Las columnas reales tienen imperfecciones y cargas excéntricas, así que mantenga un margen holgado F_b/F.", + "Ideal straight column, centric load": "Columna recta ideal, carga centrada", + "Linear elastic material": "Material elástico lineal", + "Hertz contact": "Contacto de Hertz", + "Contact & dynamics": "Contacto y dinámica", + "Approach, contact pressure, contact ellipse and stiffness for two curved bodies (sphere–plane, sphere–sphere, ball–groove, crossed cylinders…).": "Aproximación, presión de contacto, elipse de contacto y rigidez de dos cuerpos curvos (esfera–plano, esfera–esfera, bola–ranura, cilindros cruzados…).", + "Body 1 radii (+ convex, − concave, 0 = flat)": "Radios del cuerpo 1 (+ convexo, − cóncavo, 0 = plano)", + "Smallest radius": "Radio menor", + "Largest radius": "Radio mayor", + "Body 1 material": "Material del cuerpo 1", + "Young's modulus body 1": "Módulo de Young del cuerpo 1", + "Poisson's ratio body 1": "Coeficiente de Poisson del cuerpo 1", + "Body 2 radii (+ convex, − concave, 0 = flat)": "Radios del cuerpo 2 (+ convexo, − cóncavo, 0 = plano)", + "Body 2 material": "Material del cuerpo 2", + "Young's modulus body 2": "Módulo de Young del cuerpo 2", + "Poisson's ratio body 2": "Coeficiente de Poisson del cuerpo 2", + "Angle between body x-axes": "Ángulo entre los ejes x de los cuerpos", + "Normal force": "Fuerza normal", + "Valid for ε_rr < 800; above that use line-contact equations": "Válido para ε_rr < 800; por encima, use las ecuaciones de contacto lineal", + "Equivalent geometry & material": "Geometría y material equivalentes", + "Equivalent Young's modulus": "Módulo de Young equivalente", + "Principal relative radius (small)": "Radio relativo principal (menor)", + "Principal relative radius (large)": "Radio relativo principal (mayor)", + "Equivalent radius": "Radio equivalente", + "Ratio of curvature radii": "Relación de radios de curvatura", + "Ellipticity correction (approach)": "Corrección por elipticidad (aproximación)", + "Ellipticity correction (stress)": "Corrección por elipticidad (tensión)", + "Approach (deformation)": "Aproximación (deformación)", + "Maximum contact pressure": "Presión de contacto máxima", + "Contact ellipse semi-axis (large)": "Semieje de la elipse de contacto (mayor)", + "Contact ellipse semi-axis (small)": "Semieje de la elipse de contacto (menor)", + "Average stiffness": "Rigidez media", + "Local (tangent) stiffness": "Rigidez local (tangente)", + "When two curved bodies are pressed together they flatten locally into a small circular or elliptical contact. Hertz theory gives the contact size, approach and pressure from the curvatures, the elastic moduli and the load.": "Cuando dos cuerpos curvos se presionan entre sí, se aplanan localmente formando un pequeño contacto circular o elíptico. La teoría de Hertz da el tamaño del contacto, la aproximación y la presión a partir de las curvaturas, los módulos elásticos y la carga.", + "The behaviour is non-linear: approach δ ∝ F^(2/3), contact size ∝ F^(1/3). Stiffness rises with load, which is why preload stiffens a contact.": "El comportamiento es no lineal: aproximación δ ∝ F^(2/3), tamaño del contacto ∝ F^(1/3). La rigidez aumenta con la carga, por eso la precarga rigidiza un contacto.", + "Large radii (or a ball in a conforming groove) and stiff materials give a stiffer contact and lower pressure.": "Los radios grandes (o una bola en una ranura conforme) y los materiales rígidos dan un contacto más rígido y una presión menor.", + "The maximum shear stress is just below the surface (about 0.48·a deep for a sphere). Fatigue cracks start there.": "La tensión cortante máxima está justo bajo la superficie (a unos 0.48·a de profundidad en una esfera). Ahí se inician las grietas de fatiga.", + "Local stiffness dF/dδ = 1.5·F/δ.": "Rigidez local dF/dδ = 1.5·F/δ.", + "Smooth, frictionless, non-conforming surfaces": "Superficies lisas, sin fricción y no conformes", + "Contact small compared with the radii": "Contacto pequeño en comparación con los radios", + "Impact force": "Fuerza de impacto", + "Peak force, approach, duration and deceleration when a mass hits a spring (undamped collision).": "Fuerza máxima, aproximación, duración y deceleración cuando una masa choca contra un resorte (colisión sin amortiguamiento).", + "Collision": "Colisión", + "Moving mass": "Masa en movimiento", + "Impact velocity": "Velocidad de impacto", + "Stiffness body 1": "Rigidez del cuerpo 1", + "Stiffness body 2 (0 = rigid)": "Rigidez del cuerpo 2 (0 = rígido)", + "c = C₁·C₂ / (C₁ + C₂) (use local Hertz stiffness if both bodies are rigid)": "c = C₁·C₂ / (C₁ + C₂) (use la rigidez local de Hertz si ambos cuerpos son rígidos)", + "t = (π/2)·√(m/c) (time to decelerate to v = 0)": "t = (π/2)·√(m/c) (tiempo para decelerar hasta v = 0)", + "Collision stiffness": "Rigidez de colisión", + "Maximum collision force": "Fuerza máxima de colisión", + "Maximum approach": "Aproximación máxima", + "Deceleration time": "Tiempo de deceleración", + "Maximum deceleration": "Deceleración máxima", + "Average deceleration": "Deceleración media", + "Contact force during collision": "Fuerza de contacto durante la colisión", + "A mass m hitting a spring at velocity v₀ is decelerated as the spring compresses. All of the kinetic energy ½·m·v₀² becomes spring energy ½·c·u², which gives the peak force and approach.": "Una masa m que choca contra un resorte a la velocidad v₀ se decelera a medida que el resorte se comprime. Toda la energía cinética ½·m·v₀² se convierte en energía elástica ½·c·u², de lo que se obtienen la fuerza máxima y la aproximación.", + "Peak force F = v₀·√(m·c). A stiffer contact means a higher force over a shorter time.": "Fuerza máxima F = v₀·√(m·c). Un contacto más rígido implica una fuerza mayor durante un tiempo más corto.", + "Contact time to standstill: t = (π/2)·√(m/c), a quarter of the mass–spring period.": "Tiempo de contacto hasta la detención: t = (π/2)·√(m/c), un cuarto del periodo masa–resorte.", + "Springs in series (c = C₁C₂/(C₁+C₂)): a soft bumper limits the force.": "Resortes en serie (c = C₁C₂/(C₁+C₂)): un tope blando limita la fuerza.", + "For hard bodies, use the local Hertz stiffness at the expected load.": "Para cuerpos duros, use la rigidez local de Hertz a la carga esperada.", + "Undamped, linear spring": "Resorte lineal sin amortiguamiento", + "Rigid mass": "Masa rígida", + "Equivalent stiffness & eigenfrequency": "Rigidez equivalente y frecuencia propia", + "Combine up to six springs in series or parallel and compute the eigenfrequency of a mass on the result.": "Combine hasta seis resortes en serie o en paralelo y calcule la frecuencia propia de una masa sobre el resultado.", + "Springs (leave blank to ignore)": "Resortes (deje en blanco para ignorar)", + "Arrangement": "Disposición", + "Series: 1/C = Σ 1/Cᵢ": "Serie: 1/C = Σ 1/Cᵢ", + "Parallel: C = Σ Cᵢ": "Paralelo: C = Σ Cᵢ", + "Stiffness 1": "Rigidez 1", + "Stiffness 2": "Rigidez 2", + "Stiffness 3": "Rigidez 3", + "Stiffness 4": "Rigidez 4", + "Stiffness 5": "Rigidez 5", + "Stiffness 6": "Rigidez 6", + "Mass (for eigenfrequency)": "Masa (para la frecuencia propia)", + "Suspended mass": "Masa suspendida", + "Series: 1/C = 1/C₁ + 1/C₂ + …": "Serie: 1/C = 1/C₁ + 1/C₂ + …", + "Parallel: C = C₁ + C₂ + …": "Paralelo: C = C₁ + C₂ + …", + "Number of springs": "Número de resortes", + "Equivalent stiffness": "Rigidez equivalente", + "Eigenfrequency": "Frecuencia propia", + "Static sag under gravity": "Flecha estática por gravedad", + "Springs in series share the same force, so their compliances (1/C) add. Springs in parallel share the same displacement, so their stiffnesses add.": "Los resortes en serie soportan la misma fuerza, así que sus flexibilidades (1/C) se suman. Los resortes en paralelo comparten el mismo desplazamiento, así que sus rigideces se suman.", + "In series the weakest element dominates. A stiff frame cannot compensate for a compliant joint.": "En serie domina el elemento más débil. Un bastidor rígido no puede compensar una unión flexible.", + "Eigenfrequency f₀ = (1/2π)·√(C/m).": "Frecuencia propia f₀ = (1/2π)·√(C/m).", + "Rule of thumb: f₀ ≈ 15.8/√(δ[mm]) Hz, where δ is the static sag under gravity.": "Regla práctica: f₀ ≈ 15.8/√(δ[mm]) Hz, donde δ es la flecha estática por gravedad.", + "Linear springs": "Resortes lineales", + "Lumped (rigid) mass": "Masa concentrada (rígida)", + "Third order motion profile": "Perfil de movimiento de tercer orden", + "Motion & control": "Movimiento y control", + "Jerk-limited point-to-point move: phase times, move time and position/velocity/acceleration profiles.": "Movimiento punto a punto con jerk limitado: tiempos de fase, tiempo de movimiento y perfiles de posición/velocidad/aceleración.", + "Move": "Movimiento", + "Distance": "Distancia", + "Maximum velocity": "Velocidad máxima", + "Maximum acceleration": "Aceleración máxima", + "Maximum jerk": "Jerk máximo", + "s_v = v_max·(2√(v_max/j_max)) if v_max·j_max < a_max², else v_max·(v_max/a_max + a_max/j_max)": "s_v = v_max·(2√(v_max/j_max)) si v_max·j_max < a_max², si no v_max·(v_max/a_max + a_max/j_max)", + "I/III: t_j = √(v_max/j_max), t_a = t_j, t_v = s/v_max": "I/III: t_j = √(v_max/j_max), t_a = t_j, t_v = s/v_max", + "t₁ = t_j, t₂ = t_a, t₃ = t_a + t_j, t₄ = t_v, t₅ = t_v + t_j, t₆ = t_v + t_a, t₇ = t_v + t_j + t_a (move time)": "t₁ = t_j, t₂ = t_a, t₃ = t_a + t_j, t₄ = t_v, t₅ = t_v + t_j, t₆ = t_v + t_a, t₇ = t_v + t_j + t_a (tiempo de movimiento)", + "Profile shape": "Forma del perfil", + "Characteristic times": "Tiempos característicos", + "Jerk time": "Tiempo de jerk", + "Acceleration time": "Tiempo de aceleración", + "Velocity time": "Tiempo a velocidad", + "Total move time": "Tiempo total de movimiento", + "Achieved": "Alcanzado", + "Peak velocity": "Velocidad máxima alcanzada", + "Peak acceleration": "Aceleración máxima alcanzada", + "Final position (check)": "Posición final (comprobación)", + "Position": "Posición", + "Velocity": "Velocidad", + "Acceleration": "Aceleración", + "A third-order (jerk-limited, S-curve) profile moves a distance s while limiting velocity, acceleration and jerk. The motion has up to seven phases: jerk up, constant acceleration, jerk down, cruise, then the mirror image.": "Un perfil de tercer orden (jerk limitado, curva en S) recorre una distancia s limitando la velocidad, la aceleración y el jerk. El movimiento tiene hasta siete fases: jerk creciente, aceleración constante, jerk decreciente, velocidad de crucero y, después, la imagen simétrica.", + "Limiting jerk avoids sudden steps in force, so it excites fewer resonances and settles faster.": "Limitar el jerk evita saltos bruscos de fuerza, así se excitan menos resonancias y el sistema se estabiliza antes.", + "When all limits are reached, the move time is t ≈ s/v + v/a + a/j.": "Cuando se alcanzan todos los límites, el tiempo de movimiento es t ≈ s/v + v/a + a/j.", + "Short moves never reach v_max (and sometimes not a_max). The calculator picks the right profile shape (I–VI).": "Los movimientos cortos nunca alcanzan v_max (y a veces tampoco a_max). La calculadora elige la forma de perfil adecuada (I–VI).", + "Peak motor force follows from m·a_max. Use the acceleration plot to size the drive.": "La fuerza máxima del motor se obtiene de m·a_max. Use el gráfico de aceleración para dimensionar el accionamiento.", + "Start and end at rest": "Inicio y fin en reposo", + "Symmetric acceleration and deceleration": "Aceleración y deceleración simétricas", + "Thermal shrinkage in bolted joints": "Contracción térmica en uniones atornilladas", + "Thermal": "Térmico", + "Spacer length that makes the clamped stack shrink exactly as much as the bolt, keeping preload at cryogenic or elevated temperatures.": "Longitud del separador que hace que el paquete apretado se contraiga exactamente lo mismo que el tornillo, manteniendo la precarga a temperaturas criogénicas o elevadas.", + "Clamped stack": "Paquete apretado", + "Length of clamped part": "Longitud de la pieza apretada", + "Relative change clamped part": "Variación relativa de la pieza apretada", + "Alu-6061, 293 K → 77 K": "Alu-6061, 293 K → 77 K", + "Relative change spacer": "Variación relativa del separador", + "Relative change bolt": "Variación relativa del tornillo", + "Required spacer length": "Longitud necesaria del separador", + "Length ratio L_C : L_S": "Relación de longitudes L_C : L_S", + "Bolt grip length": "Longitud de apriete del tornillo", + "Stack length change": "Variación de longitud del paquete", + "If a bolt and the parts it clamps shrink differently when cooled (or expand when heated), the preload changes. The joint may loosen or overload. Adding a spacer of a third material can make the clamped stack, on average, shrink exactly like the bolt.": "Si un tornillo y las piezas que aprieta se contraen de forma distinta al enfriarse (o se dilatan al calentarse), la precarga cambia. La unión puede aflojarse o sobrecargarse. Añadir un separador de un tercer material puede hacer que el paquete apretado, en promedio, se contraiga exactamente como el tornillo.", + "Condition: (L_C·r_C + L_S·r_S)/(L_C + L_S) = r_B, with r the relative length change between the two temperatures.": "Condición: (L_C·r_C + L_S·r_S)/(L_C + L_S) = r_B, con r la variación relativa de longitud entre las dos temperaturas.", + "The bolt's r must lie between those of the clamped part and the spacer.": "El r del tornillo debe estar entre los de la pieza apretada y el separador.", + "At cryogenic temperatures use integrated values (r = ΔL/L from tables), not room-temperature α.": "A temperaturas criogénicas use valores integrados (r = ΔL/L de tablas), no el α a temperatura ambiente.", + "Uniform temperature": "Temperatura uniforme", + "Linear stack (no thread or head compliance effects)": "Paquete lineal (sin efectos de flexibilidad de la rosca o la cabeza)", + "Thermal expansion": "Dilatación térmica", + "Linear thermal expansion of a part and the mismatch between two materials.": "Dilatación térmica lineal de una pieza y la diferencia de dilatación entre dos materiales.", + "Part": "Pieza", + "Temperature change": "Variación de temperatura", + "Material 1": "Material 1", + "Expansion coefficient 1": "Coeficiente de dilatación 1", + "Material 2": "Material 2", + "Expansion coefficient 2": "Coeficiente de dilatación 2", + "Mismatch = (α₁ − α₂)·L·ΔT": "Diferencia = (α₁ − α₂)·L·ΔT", + "Expansion material 1": "Dilatación del material 1", + "Expansion material 2": "Dilatación del material 2", + "Mismatch": "Diferencia de dilatación", + "A part changes length by ΔL = α·L·ΔT when its temperature changes. In precision mechanics this is often the largest error source.": "Una pieza cambia de longitud ΔL = α·L·ΔT cuando varía su temperatura. En mecánica de precisión suele ser la mayor fuente de error.", + "100 mm of aluminium (α ≈ 23 µm/m·K) grows 2.3 µm per kelvin.": "100 mm de aluminio (α ≈ 23 µm/m·K) crecen 2.3 µm por kelvin.", + "A mismatch between joined materials causes drift or thermal stress.": "Una diferencia de dilatación entre materiales unidos provoca deriva o tensiones térmicas.", + "Use low-expansion materials (Invar, Zerodur, SiC) or matched pairs, and design so the thermal centre does not move.": "Use materiales de baja dilatación (Invar, Zerodur, SiC) o pares compatibles, y diseñe de forma que el centro térmico no se desplace.", + "Constant α over the temperature range": "α constante en el rango de temperaturas", + "Free expansion": "Dilatación libre", + "Aluminum 6082-T6": "Aluminio 6082-T6", + "5·10⁸ cycles": "5·10⁸ ciclos", + "Aluminum 7075-T6": "Aluminio 7075-T6", + "Aluminum oxide": "Óxido de aluminio", + "est.": "est.", + "Brass": "Latón", + "Copper": "Cobre", + "Diamond": "Diamante", + "Glue (Araldite 2030)": "Adhesivo (Araldite 2030)", + "Granite": "Granito", + "Inconel 718 (annealed and aged)": "Inconel 718 (recocido y envejecido)", + "Invar": "Invar", + "Macor": "Macor", + "Magnesium": "Magnesio", + "Molybdenum (Alloy 362)": "Molibdeno (Alloy 362)", + "Nickel": "Níquel", + "PA-6.6 (Nylon)": "PA-6.6 (nailon)", + "PEEK": "PEEK", + "Phosphor bronze": "Bronce fosforoso", + "POM (Delrin)": "POM (Delrin)", + "PP Polypropylene": "PP polipropileno", + "10⁷ cycles": "10⁷ ciclos", + "PTFE (Teflon)": "PTFE (teflón)", + "Quartz (crystal)": "Cuarzo (cristalino)", + "Silicon": "Silicio", + "Silicon carbide": "Carburo de silicio", + "Silicon nitride": "Nitruro de silicio", + "Stavax": "Stavax", + "Steel (carbon)": "Acero (al carbono)", + "Steel (spring)": "Acero (para resortes)", + "Steel (stainless)": "Acero (inoxidable)", + "10⁶ cycles": "10⁶ ciclos", + "Ti-6Al-4V (grade 5)": "Ti-6Al-4V (grado 5)", + "Titanium (grade 2)": "Titanio (grado 2)", + "Tungsten": "Wolframio", + "Tungsten carbide": "Carburo de wolframio", + "Zerodur": "Zerodur", + "Differences from the JPE article": "Diferencias con el artículo de JPE", + "References": "Referencias", + "Differences from the JPE table": "Diferencias con la tabla de JPE", + "† corrected from the literature, ? JPE value kept but questionable.": "† corregido según la bibliografía, ? valor de JPE conservado pero dudoso.", + "b/L > 0.2: shear lowers C_y noticeably below the JPE (bending only) value.": "b/L > 0.2: el cortante reduce C_y notablemente por debajo del valor de JPE (solo flexión).", + "Stress at θ exceeds the allowable stress.": "La tensión para θ supera la tensión admisible.", + "C_y differs from the JPE article. JPE uses bending only (E·t·b³/L³). In the width direction b is often comparable to L, so shear deformation adds a compliance of 12(1+ν)·L/(5·E·b·t) (Timoshenko beam, shear coefficient κ = 5/6). For a 20 mm long, 10 mm wide spring this lowers C_y to about 56 % of the JPE value. Both values are shown.": "C_y difiere del artículo de JPE. JPE usa solo la flexión (E·t·b³/L³). En la dirección de la anchura, b suele ser comparable a L, por lo que la deformación por cortante añade una flexibilidad de 12(1+ν)·L/(5·E·b·t) (viga de Timoshenko, coeficiente de cortante κ = 5/6). Para un resorte de 20 mm de largo y 10 mm de ancho, esto reduce C_y a aproximadamente el 56 % del valor de JPE. Se muestran ambos valores.", + "C_y = 1 / (L³/(E·t·b³) + 12(1+ν)·L/(5·E·b·t)) (bending + shear, κ = 5/6)": "C_y = 1 / (L³/(E·t·b³) + 12(1+ν)·L/(5·E·b·t)) (flexión + cortante, κ = 5/6)", + "C_y,JPE = E·t·b³ / L³ (bending only)": "C_y,JPE = E·t·b³ / L³ (solo flexión)", + "Stiffness in y (width direction, incl. shear)": "Rigidez en y (dirección de la anchura, incl. cortante)", + "Stiffness in y, JPE formula (bending only)": "Rigidez en y, fórmula de JPE (solo flexión)", + "C_y = 1 / (4L³/(E·t·b³) + 12(1+ν)·L/(5·E·b·t)) (bending + shear, κ = 5/6)": "C_y = 1 / (4L³/(E·t·b³) + 12(1+ν)·L/(5·E·b·t)) (flexión + cortante, κ = 5/6)", + "C_y,JPE = E·t·b³ / (4L³) (bending only)": "C_y,JPE = E·t·b³ / (4L³) (solo flexión)", + "C_z differs from the JPE article. The shear term uses the shear coefficient κ = 5/6 for a rectangular section, where JPE uses the full area (κ = 1), which understates the shear compliance by about 17 %. As in JPE, C_z only holds when the end cannot rotate (for example three folded springs in a tangential arrangement) and torsion of leg 1 is neglected. With a truly free end, an out-of-plane force twists leg 1 and the stiffness is much lower.": "C_z difiere del artículo de JPE. El término de cortante usa el coeficiente de cortante κ = 5/6 para una sección rectangular, mientras que JPE usa el área completa (κ = 1), lo que subestima la flexibilidad a cortante en un 17 % aproximadamente. Como en JPE, C_z solo es válida cuando el extremo no puede girar (por ejemplo, tres resortes plegados en disposición tangencial) y se desprecia la torsión del brazo 1. Con un extremo realmente libre, una fuerza fuera del plano retuerce el brazo 1 y la rigidez es mucho menor.", + "C_z = E·t·b³ / ((L₁+L₂)³ + (12/5)·b²(L₁+L₂)(1+ν)) (guided end, κ = 5/6, torsion of leg 1 neglected)": "C_z = E·t·b³ / ((L₁+L₂)³ + (12/5)·b²(L₁+L₂)(1+ν)) (extremo guiado, κ = 5/6, sin torsión del brazo 1)", + "Stiffness out of plane, guided end (stiff direction)": "Rigidez fuera del plano, extremo guiado (dirección rígida)", + "Stress and maximum angle for the chosen pole position are added; JPE gives them only for the reference a = 0.5. A leaf rotating about a pole at a·L carries end moments (4 − 6a)·E·I·θ/L and (6a − 2)·E·I·θ/L, so the stress is n = max(|4 − 6a|, |6a − 2|) times the reference stress (n = 3.24 at a = 0.5 ± √5/6, which JPE rounds to 3.3).": "Se añaden la tensión y el ángulo máximo para la posición del polo elegida; JPE solo los da para la referencia a = 0.5. Una lámina que gira alrededor de un polo en a·L soporta momentos en los extremos de (4 − 6a)·E·I·θ/L y (6a − 2)·E·I·θ/L, por lo que la tensión es n = max(|4 − 6a|, |6a − 2|) veces la tensión de referencia (n = 3.24 en a = 0.5 ± √5/6, que JPE redondea a 3.3).", + "JPE writes F_b,ref = 8π²·E·I/L² = π²·E·b·t³/(3L²), but with I = b·t³/12 the two expressions differ by a factor 2. The calculator keeps 8π²·E·I/L², two leaves each buckling with both ends clamped (4π²·E·I/L² per leaf); JPE's second expression equals a single leaf.": "JPE escribe F_b,ref = 8π²·E·I/L² = π²·E·b·t³/(3L²), pero con I = b·t³/12 las dos expresiones difieren en un factor 2. La calculadora mantiene 8π²·E·I/L², dos láminas que pandean cada una con ambos extremos empotrados (4π²·E·I/L² por lámina); la segunda expresión de JPE corresponde a una sola lámina.", + "n = max(|4 − 6a|, |6a − 2|) (end moment of a leaf relative to a = 0.5)": "n = max(|4 − 6a|, |6a − 2|) (momento en el extremo de una lámina respecto a a = 0.5)", + "End moment factor": "Factor de momento en el extremo", + "Maximum stress at θ": "Tensión máxima para θ", + "Maximum angle at allowable stress": "Ángulo máximo a la tensión admisible", + "JPE reads the ellipticity factors f₂ and f₃ from a graph. The calculator computes them from the exact elliptical Hertz solution with complete elliptic integrals, which replaces the earlier Brewe–Hamrock curve fit (that fit underestimated the approach by up to 12 % near ε_rr = 800).": "JPE lee los factores de elipticidad f₂ y f₃ de un gráfico. La calculadora los obtiene de la solución exacta de Hertz para el contacto elíptico con integrales elípticas completas, que sustituye al ajuste de curvas de Brewe–Hamrock usado antes (ese ajuste subestimaba la aproximación hasta un 12 % cerca de ε_rr = 800).", + "f₂, f₃ from the exact elliptic-integral solution (f₂ = f₃ = 1 for circular contact)": "f₂, f₃ de la solución exacta con integrales elípticas (f₂ = f₃ = 1 para contacto circular)", + "JPE lists λ = 208 W/m·K; phosphor bronze (C51000) conducts about 69 W/m·K.": "JPE indica λ = 208 W/m·K; el bronce fosforoso (C51000) conduce unos 69 W/m·K.", + "JPE fatigue strength (114 MPa) is above its yield strength (76 MPa, annealed); spring tempers have a much higher yield strength.": "La resistencia a la fatiga de JPE (114 MPa) supera su límite elástico (76 MPa, recocido); los estados de temple para resortes tienen un límite elástico mucho mayor.", + "JPE lists α = 13 µm/m·K; unfilled PTFE expands about ten times more.": "JPE indica α = 13 µm/m·K; el PTFE sin carga se dilata unas diez veces más.", + "JPE yield strength (669 MPa) is above its ultimate strength (550 MPa). Check the supplier data for your spring steel.": "El límite elástico de JPE (669 MPa) supera su resistencia a la tracción (550 MPa). Compruebe los datos del proveedor de su acero para resortes.", + "JPE yield strength (600 MPa) is above its ultimate strength (344 MPa). Tungsten carbide is brittle and has no yield point; use the supplier's transverse rupture strength.": "El límite elástico de JPE (600 MPa) supera su resistencia a la tracción (344 MPa). El carburo de wolframio es frágil y no tiene límite elástico; use la resistencia a la rotura transversal del proveedor.", + "About": "Acerca de", + "Author": "Autor", + "License": "Licencia", + "Disclaimer": "Aviso legal", + "Read the license": "Leer la licencia", + "Source code on GitHub": "Código fuente en GitHub", + "Precision Engineering Calculators is a free set of web calculators for precision mechanical design: flexures, beams, contact, dynamics and thermal effects. It is built on the formulas of the free JPE Precision Point articles and runs entirely in your browser; your calculations are stored only on your own device.": "Calculadoras de ingeniería de precisión es un conjunto gratuito de calculadoras web para el diseño mecánico de precisión: mecanismos flexibles, vigas, contacto, dinámica y efectos térmicos. Se basa en las fórmulas de los artículos gratuitos de JPE Precision Point y funciona por completo en su navegador; sus cálculos se guardan solo en su propio dispositivo.", + "Open source under the MIT License: you may use, copy, modify and share it freely, as long as the copyright and license notice are kept.": "Código abierto bajo la licencia MIT: puede usarlo, copiarlo, modificarlo y compartirlo libremente, siempre que se mantengan el aviso de copyright y la licencia.", + "This is an independent tool and is not affiliated with or endorsed by JPE. Verify results before using them in critical designs.": "Esta es una herramienta independiente, sin relación con JPE ni respaldada por JPE. Verifique los resultados antes de usarlos en diseños críticos." + }); +})(typeof window !== 'undefined' ? window : globalThis); diff --git a/tests/run-tests.js b/tests/run-tests.js index d0cd023..f17804f 100644 --- a/tests/run-tests.js +++ b/tests/run-tests.js @@ -8,7 +8,7 @@ var path = require('path'); var vm = require('vm'); var ROOT = path.join(__dirname, '..'); -['js/core.js', 'js/i18n.js', 'js/i18n/de.js', 'js/i18n/nl.js', 'js/i18n/tr.js', 'js/materials.js', 'js/sections.js', 'js/common.js', +['js/core.js', 'js/i18n.js', 'js/i18n/de.js', 'js/i18n/es.js', 'js/i18n/nl.js', 'js/i18n/tr.js', 'js/materials.js', 'js/sections.js', 'js/common.js', 'js/calculators/flexures.js', 'js/calculators/beams.js', 'js/calculators/dynamics.js', 'js/theory.js', 'js/preview.js' ].forEach(function (f) { vm.runInThisContext(fs.readFileSync(path.join(ROOT, f), 'utf8'), { filename: f }); });