@rr0/ufoathome 0.146.1 → 0.147.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-embed-scene/rr0-scene.mjs +289 -289
- package/dist-embed-scene/sightingSchema-C5EbtAl0.js +1 -0
- package/dist-embed-sighting/rr0-sighting.mjs +296 -296
- package/dist-embed-sighting/sightingSchema-C5EbtAl0.js +1 -0
- package/dist-embed-sighting-editor/{BeamEditor-qZfCSNrr.js → BeamEditor-BHpoDP6v.js} +2 -2
- package/dist-embed-sighting-editor/BodyEditor-rPUSfhG-.js +27 -0
- package/dist-embed-sighting-editor/{InterviewEditorElement-CpK8gAgI.js → InterviewEditorElement-t69V1VkN.js} +2 -2
- package/dist-embed-sighting-editor/LanternEditor-BCc-i5j1.js +9 -0
- package/dist-embed-sighting-editor/{LaunchEditor-Dry3DiMo.js → LaunchEditor-D-1-8brV.js} +2 -2
- package/dist-embed-sighting-editor/{SightingEditorMessages_es-8tTlDrVR.js → SightingEditorMessages_es-gnJ7BSen.js} +1 -1
- package/dist-embed-sighting-editor/{SightingEditorMessages_fr-B6HG_PkP.js → SightingEditorMessages_fr-2oIyqapc.js} +1 -1
- package/dist-embed-sighting-editor/{SightingEditorMessages_it-BwIheqwp.js → SightingEditorMessages_it-CwMJTuAx.js} +1 -1
- package/dist-embed-sighting-editor/{SightingFileEditor-IEZGobI0.js → SightingFileEditor-B_d4jvL8.js} +1 -1
- package/dist-embed-sighting-editor/rr0-sighting-editor.mjs +382 -351
- package/dist-embed-sighting-editor/sightingSchema-C5EbtAl0.js +1 -0
- package/package.json +1 -1
- package/dist-embed-scene/sightingSchema-BpEpb5Vc.js +0 -1
- package/dist-embed-sighting/sightingSchema-BpEpb5Vc.js +0 -1
- package/dist-embed-sighting-editor/BodyEditor-XZ5oo20k.js +0 -27
- package/dist-embed-sighting-editor/LanternEditor-D2yl5PH3.js +0 -9
- package/dist-embed-sighting-editor/sightingSchema-BpEpb5Vc.js +0 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import{w as o,x as u,U as h,y as c,u as m,v as p,t as f,z as g}from"./rr0-sighting-editor.mjs";import{lanternEditorMessages_en as l}from"./LanternEditorMessages_en-3XzIx2c4.js";class a{static RELEASE={en:"Let go",fr:"Lâcher",es:"Suelta",it:"Lancio"};static LANTERNS={en:"Lanterns",fr:"Lanternes",es:"Farolillos",it:"Lanterne"};static AIR={en:"Air",fr:"Air",es:"Aire",it:"Aria"};static LANTERN={en:"Each lantern",fr:"Chaque lanterne",es:"Cada farolillo",it:"Ogni lanterna"};static instant(e,t,n){return{type:"number",key:e,min:-36e3,max:36e3,step:1,unit:"s",scale:.001,required:!0,label:t,hint:n,group:a.LANTERNS}}static wind(e,t,n){return[{type:"number",key:`${e}.towardDeg`,min:0,max:360,step:1,unit:"°",group:a.AIR,hint:n,label:{en:`${t.en}, towards`,fr:`${t.fr}, vers`,es:`${t.es}, hacia`,it:`${t.it}, verso`}},{type:"number",key:`${e}.speedMS`,min:0,max:60,step:.1,unit:"m/s",group:a.AIR,label:{en:`${t.en}, speed`,fr:`${t.fr}, vitesse`,es:`${t.es}, velocidad`,it:`${t.it}, velocità`}}]}static SET={kind:"lantern",title:{en:"Sky lanterns",fr:"Lanternes célestes",es:"Farolillos voladores",it:"Lanterne volanti"},parameters:[{type:"said",key:"title",label:{en:"Name",fr:"Nom",es:"Nombre",it:"Nome"},group:a.RELEASE},{type:"position",key:"site.eastM",secondKey:"site.northM",saidKey:"site.saidPosition",native:"local",step:1,rangeM:1e5,group:a.RELEASE,label:{en:"Where they are let go",fr:"Lieu du lâcher",es:"Lugar de la suelta",it:"Luogo del rilascio"},hint:{en:"Where they are let go: from the observer, from something else in the scene, or as a latitude and a longitude.",fr:"D'où elles sont lâchées : par rapport à l'observateur, à autre chose dans la scène, ou en latitude et longitude.",es:"Desde dónde se sueltan: respecto al observador, a otra cosa de la escena, o en latitud y longitud.",it:"Da dove vengono lasciate andare: rispetto all'osservatore, a qualcos'altro nella scena, o in latitudine e longitudine."}},{type:"number",key:"site.altitudeM",min:-1e3,max:5e3,step:.1,unit:"m",group:a.RELEASE,effective:()=>0,label:{en:"Height above the place's ground",fr:"Hauteur au-dessus du sol du lieu",es:"Altura sobre el suelo del lugar",it:"Altezza sul suolo del luogo"},hint:{en:"A garden on a hill above the place, a roof.",fr:"Un jardin sur une colline au-dessus du lieu, un toit.",es:"Un jardín en una colina sobre el lugar, un tejado.",it:"Un giardino su una collina sopra il luogo, un tetto."}},{type:"number",key:"site.originElevationM",min:-500,max:6e3,step:1,unit:"m",group:a.RELEASE,effective:()=>0,label:{en:"The place's ground above the sea",fr:"Sol du lieu au-dessus de la mer",es:"Suelo del lugar sobre el mar",it:"Suolo del luogo sul mare"},hint:{en:"What sets how thin the air they climb into is: a lantern climbs less high from a mountain town.",fr:"Ce qui règle la raréfaction de l'air où elles montent : une lanterne monte moins haut depuis une ville de montagne.",es:"Lo que fija lo enrarecido del aire en que suben: un farolillo sube menos desde un pueblo de montaña.",it:"Ciò che fissa la rarefazione dell'aria in cui salgono: una lanterna sale meno in alto da un paese di montagna."}},{type:"number",key:"group.count",min:1,max:200,step:1,required:!0,group:a.LANTERNS,label:{en:"How many",fr:"Combien",es:"Cuántos",it:"Quante"}},a.instant("group.fromT",{en:"First let go at",fr:"Première lâchée à",es:"Primero soltado a",it:"Prima lasciata a"},{en:"Seconds of the recording: before its start (negative) for lanterns already up when it begins.",fr:"Secondes de l'enregistrement : avant son début (négatif) pour des lanternes déjà en l'air quand il commence.",es:"Segundos de la grabación: antes de su inicio (negativo) para farolillos ya en el aire cuando empieza.",it:"Secondi della registrazione: prima del suo inizio (negativo) per lanterne già in aria quando inizia."}),a.instant("group.untilT",{en:"Last let go at",fr:"Dernière lâchée à",es:"Último soltado a",it:"Ultima lasciata a"},{en:"Seconds of the recording; the others in between, about evenly.",fr:"Secondes de l'enregistrement ; les autres entre les deux, à peu près régulièrement.",es:"Segundos de la grabación; los demás entre ambos, más o menos regularmente.",it:"Secondi della registrazione; le altre in mezzo, più o meno regolarmente."}),{type:"number",key:"group.radiusM",min:0,max:5e3,step:1,unit:"m",group:a.LANTERNS,effective:()=>20,label:{en:"Let go within",fr:"Lâchées dans un rayon de",es:"Soltados en un radio de",it:"Lasciate entro"},hint:{en:"A crowd lets them go a few metres apart.",fr:"Une foule les lâche à quelques mètres les unes des autres.",es:"Una multitud los suelta a pocos metros unos de otros.",it:"Una folla le lascia andare a pochi metri l'una dall'altra."}},{type:"number",key:"group.burnS.min",min:10,max:3600,step:1,unit:"s",group:a.LANTERNS,effective:()=>480,label:{en:"Burns at least",fr:"Brûle au moins",es:"Arde al menos",it:"Brucia almeno"},hint:{en:"How long each burns from when it is let go, drawn between the two: 8 to 15 minutes by the sellers. It vanishes when it goes out.",fr:"Combien de temps chacune brûle après son lâcher, tiré entre les deux : 8 à 15 minutes selon les vendeurs. Elle disparaît en s'éteignant.",es:"Cuánto arde cada uno desde que se suelta, sorteado entre ambos: de 8 a 15 minutos según los vendedores. Desaparece al apagarse.",it:"Quanto brucia ciascuna da quando è lasciata andare, estratto tra i due: da 8 a 15 minuti secondo i venditori. Scompare spegnendosi."}},{type:"number",key:"group.burnS.max",min:10,max:3600,step:1,unit:"s",group:a.LANTERNS,effective:()=>900,label:{en:"Burns at most",fr:"Brûle au plus",es:"Arde como mucho",it:"Brucia al massimo"}},{type:"number",key:"group.insideExcessK.min",min:10,max:400,step:1,unit:"K",group:a.LANTERNS,effective:()=>125,label:{en:"Hotter than the air, at least",fr:"Plus chaude que l'air, au moins",es:"Más caliente que el aire, al menos",it:"Più calda dell'aria, almeno"},hint:{en:"How much hotter than the air its air is at full burn, drawn between the two: what sets how fast it climbs, and so how high it gets.",fr:"De combien son air est plus chaud que l'air autour à plein feu, tiré entre les deux : ce qui règle à quelle vitesse elle monte, et donc jusqu'où.",es:"Cuánto más caliente que el aire está su aire a pleno fuego, sorteado entre ambos: lo que fija lo rápido que sube, y por tanto hasta dónde.",it:"Di quanto la sua aria è più calda dell'aria intorno a piena fiamma, estratto tra i due: ciò che fissa quanto in fretta sale, e quindi fin dove."}},{type:"number",key:"group.insideExcessK.max",min:10,max:400,step:1,unit:"K",group:a.LANTERNS,effective:()=>175,label:{en:"Hotter than the air, at most",fr:"Plus chaude que l'air, au plus",es:"Más caliente que el aire, como mucho",it:"Più calda dell'aria, al massimo"}},{type:"number",key:"group.burnedS",min:0,max:3600,step:1,unit:"s",group:a.LANTERNS,effective:()=>0,label:{en:"Already burnt when let go",fr:"Déjà brûlé au lâcher",es:"Ya ardido al soltarlo",it:"Già bruciato al lancio"},hint:{en:"For lanterns the account only has from where they were first seen, already up and partly burnt.",fr:"Pour des lanternes que le compte rendu n'a que depuis là où elles ont été vues la première fois, déjà en l'air et en partie consumées.",es:"Para farolillos que el relato solo tiene desde donde se vieron por primera vez, ya en el aire y en parte consumidos.",it:"Per lanterne che il resoconto ha solo da dove sono state viste la prima volta, già in aria e in parte consumate."}},{type:"number",key:"group.seed",min:0,max:4294967295,step:1,group:a.LANTERNS,effective:()=>1,label:{en:"Draw",fr:"Tirage",es:"Sorteo",it:"Estrazione"},hint:{en:"What the draws start from: another number, other lanterns within the same bounds, the same each time for the same number.",fr:"Ce dont partent les tirages : un autre nombre, d'autres lanternes dans les mêmes bornes, les mêmes à chaque fois pour le même nombre.",es:"De qué parten los sorteos: otro número, otros farolillos dentro de los mismos límites, los mismos cada vez para el mismo número.",it:"Da cosa partono le estrazioni: un altro numero, altre lanterne negli stessi limiti, le stesse ogni volta per lo stesso numero."}},{type:"set",key:"group.explains",group:a.LANTERNS,label:{en:"Stand for the shapes",fr:"Représentent les formes",es:"Representan las formas",it:"Rappresentano le forme"},options:(e,t)=>{const n=t?.shapes??[],i=(e.group?.explains??[]).filter(s=>!n.some(r=>r.value===s));return[...n,...i.map(s=>({value:s,label:s}))]},empty:{en:"No shape",fr:"Aucune forme",es:"Ninguna forma",it:"Nessuna forma"}},...a.wind("wind",{en:"Wind at the ground",fr:"Vent au sol",es:"Viento en el suelo",it:"Vento al suolo"},{en:"Where it blows TOWARDS, which is where the lanterns go: the opposite of where a weather report says it comes from.",fr:"Là où il souffle, VERS où, qui est où vont les lanternes : l'inverse d'où un bulletin météo dit qu'il vient.",es:"Hacia DÓNDE sopla, que es adonde van los farolillos: lo contrario de donde un parte dice que viene.",it:"VERSO dove soffia, che è dove vanno le lanterne: l'opposto di da dove un bollettino dice che viene."}),...a.wind("windAloft",{en:"Wind aloft",fr:"Vent en altitude",es:"Viento en altura",it:"Vento in quota"},{en:"The wind higher up, blended with the ground's in between: what makes lanterns let go at one spot part ways as they climb.",fr:"Le vent plus haut, mêlé à celui du sol entre les deux : ce qui fait se séparer en montant des lanternes lâchées au même endroit.",es:"El viento más arriba, mezclado con el del suelo en medio: lo que separa al subir farolillos soltados en el mismo sitio.",it:"Il vento più in alto, mescolato a quello al suolo nel mezzo: ciò che separa salendo lanterne lasciate andare nello stesso punto."}),{type:"number",key:"windAloft.atM",min:10,max:1e4,step:10,unit:"m",group:a.AIR,label:{en:"Wind aloft, at",fr:"Vent en altitude, à",es:"Viento en altura, a",it:"Vento in quota, a"},hint:{en:"Metres above where they are let go.",fr:"Mètres au-dessus d'où elles sont lâchées.",es:"Metros sobre donde se sueltan.",it:"Metri sopra dove vengono lasciate andare."}},{type:"number",key:"airTemperatureC",min:-60,max:50,step:.5,unit:"°C",group:a.AIR,effective:()=>10,label:{en:"Air temperature",fr:"Température de l'air",es:"Temperatura del aire",it:"Temperatura dell'aria"},hint:{en:"At the ground, falling by 6.5 °C a kilometre above: what their hot air is lighter than. A cold night lifts them higher.",fr:"Au sol, baissant de 6,5 °C par kilomètre au-dessus : ce dont leur air chaud est plus léger. Une nuit froide les porte plus haut.",es:"En el suelo, bajando 6,5 °C por kilómetro: de lo que su aire caliente es más ligero. Una noche fría los sube más.",it:"Al suolo, calando di 6,5 °C per chilometro: ciò di cui la loro aria calda è più leggera. Una notte fredda le porta più in alto."}},{type:"number",key:"turbulence.horizontalMS",min:0,max:10,step:.1,unit:"m/s",group:a.AIR,effective:()=>o.TURBULENCE.horizontalMS,label:{en:"Gusts, across",fr:"Rafales, à l'horizontale",es:"Ráfagas, en horizontal",it:"Raffiche, in orizzontale"},hint:{en:"How far the air's speed strays from the wind's, each lantern meeting its own gusts: what stretches a group into a shifting string. 0 for a still air.",fr:"De combien la vitesse de l'air s'écarte de celle du vent, chaque lanterne prise dans ses propres rafales : ce qui étire un groupe en une file mouvante. 0 pour un air immobile.",es:"Cuánto se aparta la velocidad del aire de la del viento, cada farolillo en sus propias ráfagas: lo que estira un grupo en una fila cambiante. 0 para un aire quieto.",it:"Di quanto la velocità dell'aria si scosta da quella del vento, ogni lanterna nelle proprie raffiche: ciò che allunga un gruppo in una fila mutevole. 0 per un'aria ferma."}},{type:"number",key:"turbulence.verticalMS",min:0,max:10,step:.1,unit:"m/s",group:a.AIR,effective:()=>o.TURBULENCE.verticalMS,label:{en:"Gusts, up and down",fr:"Rafales, de haut en bas",es:"Ráfagas, arriba y abajo",it:"Raffiche, in su e in giù"}},{type:"number",key:"turbulence.timescaleS",min:1,max:600,step:1,unit:"s",group:a.AIR,effective:()=>o.TURBULENCE.timescaleS,label:{en:"A gust lasts",fr:"Une rafale dure",es:"Una ráfaga dura",it:"Una raffica dura"}},{type:"number",key:"lantern.luminousIntensityCd",min:.1,max:1e3,step:.1,unit:"cd",group:a.LANTERN,effective:()=>o.COMMON.luminousIntensityCd,label:{en:"Light",fr:"Lumière",es:"Luz",it:"Luce"},hint:{en:"Its flame's light through the paper, at full burn.",fr:"La lumière de sa flamme à travers le papier, à plein feu.",es:"La luz de su llama a través del papel, a pleno fuego.",it:"La luce della sua fiamma attraverso la carta, a piena fiamma."}},{type:"colour",key:"lantern.color",group:a.LANTERN,label:{en:"Colour",fr:"Couleur",es:"Color",it:"Colore"}},{type:"number",key:"lantern.envelopeVolumeM3",min:.01,max:10,step:.01,unit:"m³",group:a.LANTERN,effective:()=>o.COMMON.envelopeVolumeM3,label:{en:"Air it holds",fr:"Air qu'elle contient",es:"Aire que contiene",it:"Aria che contiene"}},{type:"number",key:"lantern.massKg",min:.005,max:5,step:.001,unit:"kg",group:a.LANTERN,effective:()=>o.COMMON.massKg,label:{en:"Weight when let go",fr:"Poids au lâcher",es:"Peso al soltarlo",it:"Peso al lancio"}}]};static publish(){u.publish(a.SET)}}class w{constructor(e,t,n){this.container=e,this.host=t,this.language=n,u.of("lantern")||a.publish(),this.render(),this.setLanguage(n)}messages=l;languageToken=0;currentId;form;list;language;shown=[];async setLanguage(e){const t=++this.languageToken;this.language=e;const n=h.includes(e)?e:"en",i=n==="en"?l:await c(n);t===this.languageToken&&(this.messages=i,this.render(),this.sync())}sync(){const e=this.launches;this.shown=[...e],e.some(s=>s.id===this.currentId)||(this.currentId=e[0]?.id),this.list?.setItems(e.map(s=>({id:s.id,label:this.labelOf(s)})),this.currentId),this.syncAddState();const t=this.current;if(this.element("lantern-fields").hidden=t===void 0,!t)return;const n=t.releases?.length??0,i=this.element("lantern-releases");i.hidden=n===0,i.textContent=this.messages.releasesNote.replace("{n}",String(n)),this.form??=new m(this.element("lantern-parameters"),this.language,"lantern.",{said:()=>this.host.said(),writingLanguage:()=>this.host.writingLanguage()}),this.form.show(a.SET,new p(()=>this.current,s=>this.editLaunch(r=>s(r)),()=>({shapes:this.host.shapes().map(s=>({value:s.id,label:s.label}))}),this.host.positionPlace?.()),()=>this.written())}refresh(){this.syncAddState();const e=this.launches;e.length===this.shown.length&&e.every((t,n)=>t.id===this.shown[n].id)||this.sync()}syncAddState(){const e=this.siteOfNew()!==void 0;this.list?.setAddState(e,e?void 0:this.messages.addLaunchNowhere)}get current(){return this.launches.find(e=>e.id===this.currentId)}render(){const e=this.messages;this.form=void 0,this.container.innerHTML=`<div class="launch-editor">
|
|
2
|
+
<p class="launch-intro">${e.intro}</p>
|
|
3
|
+
<div id="lantern-list"></div>
|
|
4
|
+
<div id="lantern-fields" class="launch-fields">
|
|
5
|
+
<div id="lantern-parameters" class="launch-parameters"></div>
|
|
6
|
+
<p id="lantern-releases" class="launch-intro" hidden></p>
|
|
7
|
+
<p class="launch-intro">${e.derivedNote}</p>
|
|
8
|
+
</div>
|
|
9
|
+
</div>`,this.list=new f({header:this.element("lantern-list"),body:this.element("lantern-fields"),ids:{list:"lantern-select",remove:"lantern-delete",add:"lantern-add"},onSelect:t=>{this.currentId=t,this.sync()},onAdd:()=>this.addLaunch(),onRemove:()=>this.deleteCurrent()}),this.list.setLabels({list:e.launch,remove:e.deleteLaunch,add:e.addLaunch,empty:e.none})}written(){const e=this.current;e&&this.list?.rename(e.id,this.labelOf(e))}editLaunch(e){const t=this.current;if(!t)return;const n=structuredClone(t);e(n),this.writeLaunches(this.launches.map(i=>i===t?n:i)),this.host.changed()}siteOfNew(){const e=this.host.sighting(),t=e.event?.place?.[0];if(t?.lat===void 0||t.lng===void 0)return;const n=e.observerTrack?.getInterpolatedPoseAt(0),i=(n?.headingDeg??0)*Math.PI/180,s=111320,r=n?.lng!==void 0?(n.lng-t.lng)*s*Math.cos(t.lat*Math.PI/180):0,d=n?.lat!==void 0?(n.lat-t.lat)*s:0;return{eastM:Math.round(r+1500*Math.sin(i)),northM:Math.round(d+1500*Math.cos(i))}}addLaunch(){const e=this.siteOfNew();if(!e)return;let t=this.launches.length+1;for(;this.launches.some(s=>s.id===`lanterns-${t}`);)t++;const n=g(this.host.sighting(),0),i={id:`lanterns-${t}`,site:e,group:{count:12,fromT:0,untilT:12e4,seed:t},wind:{towardDeg:Math.round((n.windDirectionDeg+180)%360),speedMS:Math.round(n.windSpeed*10)/10}};this.writeLaunches([...this.launches,i]),this.currentId=i.id,this.host.changed(),this.sync()}deleteCurrent(){const e=this.current;e&&(this.currentId=void 0,this.writeLaunches(this.launches.filter(t=>t!==e)),this.host.changed(),this.sync())}writeLaunches(e){const t=this.host.sighting(),n={...t.interpretation??{bodies:[]},lanterns:e.length>0?e:void 0};n.lanterns===void 0&&delete n.lanterns;const i=n.bodies.length===0&&n.title===void 0&&n.smoke===void 0&&n.flares===void 0&&n.lanterns===void 0;t.interpretation=i?void 0:n}labelOf(e){const t=this.host.said().read(e.title);return t?`${t} (${e.id})`:e.id}get launches(){return this.host.sighting().interpretation?.lanterns??[]}element(e){return this.container.querySelector(`#${e}`)}}export{w as LanternEditor};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{L as h,x as c,U as g,G as f,u as d,t as u,v as p,D as v}from"./rr0-sighting-editor.mjs";import{launchEditorMessages_en as m}from"./LaunchEditorMessages_en-DH8gI1vo.js";class s{static plumeValue(e){return t=>h.plumeOf(t)[e]}static plume(e,t){return{type:"number",key:`plume.${e}`,effective:s.plumeValue(e),...t}}static burn(e,t){return{type:"number",key:e,min:-3600,max:36e3,step:.1,unit:"s",scale:.001,label:t.label,hint:t.hint,group:{en:"Engine",fr:"Moteur",es:"Motor",it:"Motore"},effective:i=>t.ends(i.track??[])?.t}}static nextPlace(e){const t=e[e.length-1]??{t:0,lat:0,lng:0,altitudeKm:0},i=e[e.length-2]??t,a=(n,l=0)=>e.length>1?t[n]-i[n]:l;return{t:t.t+(e.length>1?a("t"):1e4),lat:t.lat+a("lat"),lng:t.lng+a("lng"),altitudeKm:Math.max(0,t.altitudeKm+a("altitudeKm"))}}static SET={kind:"launch",title:{en:"Launch",fr:"Lancement",es:"Lanzamiento",it:"Lancio"},parameters:[{type:"said",key:"title",label:{en:"Name",fr:"Nom",es:"Nombre",it:"Nome"},group:{en:"Vehicle",fr:"Lanceur",es:"Lanzador",it:"Lanciatore"}},{type:"text",key:"vehicle.mission",label:{en:"Mission",fr:"Mission",es:"Misión",it:"Missione"},placeholder:"Starlink Group 10-49",group:{en:"Vehicle",fr:"Lanceur",es:"Lanzador",it:"Lanciatore"}},{type:"number",key:"vehicle.engine.thrustKN",min:1,max:1e5,step:1,unit:"kN",label:{en:"Thrust (vacuum)",fr:"Poussée (dans le vide)",es:"Empuje (en el vacío)",it:"Spinta (nel vuoto)"},hint:{en:"Merlin Vacuum 934, RL10 110, a solid booster several thousand. With the specific impulse, it sets how much exhaust leaves each second.",fr:"Merlin Vacuum 934, RL10 110, un booster à poudre plusieurs milliers. Avec l'impulsion spécifique, elle fixe le débit d'échappement.",es:"Merlin Vacuum 934, RL10 110, un propulsor sólido varios miles. Con el impulso específico, fija el caudal de escape.",it:"Merlin Vacuum 934, RL10 110, un booster solido diverse migliaia. Con l'impulso specifico, fissa la portata dello scarico."},group:{en:"Engine",fr:"Moteur",es:"Motor",it:"Motore"}},{type:"number",key:"vehicle.engine.specificImpulseS",min:100,max:500,step:1,unit:"s",label:{en:"Specific impulse (vacuum)",fr:"Impulsion spécifique (dans le vide)",es:"Impulso específico (en el vacío)",it:"Impulso specifico (nel vuoto)"},hint:{en:"Times 9.81 m/s² it is the exhaust velocity, which sets how fast the exhaust spreads round the stage: 348 s is 3.4 km/s.",fr:"Multipliée par 9,81 m/s², c'est la vitesse d'éjection, qui fixe la vitesse à laquelle l'échappement s'étale autour de l'étage : 348 s font 3,4 km/s.",es:"Multiplicado por 9,81 m/s² es la velocidad de escape, que fija la rapidez con que el escape se extiende alrededor de la etapa: 348 s son 3,4 km/s.",it:"Moltiplicato per 9,81 m/s² è la velocità di scarico, che fissa quanto in fretta lo scarico si allarga attorno allo stadio: 348 s sono 3,4 km/s."},group:{en:"Engine",fr:"Moteur",es:"Motor",it:"Motore"}},{type:"choice",key:"vehicle.engine.propellant",label:{en:"Propellant",fr:"Ergols",es:"Propelentes",it:"Propellenti"},hint:{en:"What the exhaust is made of decides how much of it turns into particles that scatter light.",fr:"Ce dont l'échappement est fait décide quelle part devient des particules qui diffusent la lumière.",es:"De qué está hecho el escape decide qué parte se vuelve partículas que difunden la luz.",it:"Di cosa è fatto lo scarico decide quanta parte diventa particelle che diffondono la luce."},choices:[{value:"rp1-lox",label:{en:"Kerosene and oxygen",fr:"Kérosène et oxygène",es:"Queroseno y oxígeno",it:"Cherosene e ossigeno"}},{value:"methane-lox",label:{en:"Methane and oxygen",fr:"Méthane et oxygène",es:"Metano y oxígeno",it:"Metano e ossigeno"}},{value:"hydrogen-lox",label:{en:"Hydrogen and oxygen",fr:"Hydrogène et oxygène",es:"Hidrógeno y oxígeno",it:"Idrogeno e ossigeno"}},{value:"hypergolic",label:{en:"Hypergolic",fr:"Hypergolique",es:"Hipergólico",it:"Ipergolico"}},{value:"solid",label:{en:"Solid",fr:"Poudre",es:"Sólido",it:"Solido"}}],group:{en:"Engine",fr:"Moteur",es:"Motor",it:"Motore"}},s.burn("burnFromT",{label:{en:"Engine start",fr:"Allumage du moteur",es:"Encendido del motor",it:"Accensione del motore"},hint:{en:"When the engine started, in seconds of the recording; it may be before it. Empty: the first point of the path.",fr:"Quand le moteur s'est allumé, en secondes de l'enregistrement ; avant lui si besoin. Vide : le premier point du chemin.",es:"Cuándo se encendió el motor, en segundos de la grabación; puede ser antes. Vacío: el primer punto de la trayectoria.",it:"Quando si è acceso il motore, in secondi della registrazione; può essere prima. Vuoto: il primo punto del percorso."},ends:e=>e[0]}),s.burn("burnUntilT",{label:{en:"Engine cut-off",fr:"Extinction du moteur",es:"Apagado del motor",it:"Spegnimento del motore"},hint:{en:"When the engine stopped, in seconds of the recording. Empty: the last point of the path. Nothing is let go after it.",fr:"Quand le moteur s'est éteint, en secondes de l'enregistrement. Vide : le dernier point du chemin. Rien n'est lâché après.",es:"Cuándo se apagó el motor, en segundos de la grabación. Vacío: el último punto de la trayectoria. Nada se suelta después.",it:"Quando si è spento il motore, in secondi della registrazione. Vuoto: l'ultimo punto del percorso. Dopo non si rilascia nulla."},ends:e=>e[e.length-1]}),s.plume("exhaustKgPerS",{min:.1,max:1e5,step:.1,unit:"kg/s",label:{en:"Exhaust flow",fr:"Débit d'échappement",es:"Caudal de escape",it:"Portata di scarico"},hint:{en:"How much exhaust leaves the engine each second: how bright the plume is. Thrust over exhaust velocity when the engine is stated.",fr:"La masse d'échappement qui sort du moteur chaque seconde : la luminosité du panache. La poussée sur la vitesse d'éjection quand le moteur est donné.",es:"La masa de escape que sale del motor cada segundo: el brillo de la estela. El empuje sobre la velocidad de escape cuando se da el motor.",it:"La massa di scarico che esce dal motore ogni secondo: la luminosità della scia. La spinta sulla velocità di scarico quando il motore è dato."},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),s.plume("condensedShare",{min:0,max:1,step:.01,label:{en:"Share that scatters",fr:"Part qui diffuse",es:"Parte que difunde",it:"Parte che diffonde"},hint:{en:"The share of the exhaust that ends up as particles that scatter the Sun's light. Nobody has measured it for a launch: the one number to fit against a photograph.",fr:"La part de l'échappement qui devient des particules diffusant la lumière du Soleil. Personne ne l'a mesurée pour un lancement : le seul nombre à caler sur une photographie.",es:"La parte del escape que acaba como partículas que difunden la luz del Sol. Nadie la ha medido para un lanzamiento: el único número que ajustar con una fotografía.",it:"La parte dello scarico che diventa particelle che diffondono la luce del Sole. Nessuno l'ha misurata per un lancio: l'unico numero da tarare su una fotografia."},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),s.plume("particleRadiusUm",{min:.05,max:5,step:.05,unit:"µm",label:{en:"Particle radius",fr:"Rayon des particules",es:"Radio de las partículas",it:"Raggio delle particelle"},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),s.plume("lifetimeS",{min:10,max:3600,step:10,unit:"s",label:{en:"Trail lifetime",fr:"Durée de la traînée",es:"Duración de la estela",it:"Durata della scia"},hint:{en:"How long the narrow trail lasts before the particles have gone.",fr:"Combien de temps la traînée étroite dure avant que les particules aient disparu.",es:"Cuánto dura la estela estrecha antes de que las partículas hayan desaparecido.",it:"Quanto dura la scia stretta prima che le particelle siano sparite."},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),s.plume("expansionKmPerS",{min:0,max:5,step:.01,unit:"km/s",label:{en:"Trail spreading",fr:"Étalement de la traînée",es:"Expansión de la estela",it:"Espansione della scia"},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),s.plume("initialRadiusKm",{min:0,max:50,step:.1,unit:"km",label:{en:"Radius at release",fr:"Rayon au lâcher",es:"Radio al soltar",it:"Raggio al rilascio"},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),s.plume("collarShare",{min:0,max:1,step:.01,label:{en:"Share in the collar",fr:"Part dans la collerette",es:"Parte en el collar",it:"Parte nel collare"},hint:{en:"The collar is the exhaust just let go, which spreads fast into a wide short-lived shell round the stage; the rest stays behind as the narrow trail.",fr:"La collerette est l'échappement qui vient d'être lâché, qui s'étale vite en une coque large et brève autour de l'étage ; le reste demeure derrière en traînée étroite.",es:"El collar es el escape recién soltado, que se extiende rápido en una envoltura ancha y breve alrededor de la etapa; el resto queda detrás como estela estrecha.",it:"Il collare è lo scarico appena rilasciato, che si allarga in fretta in un guscio largo e breve attorno allo stadio; il resto resta dietro come scia stretta."},group:{en:"Collar",fr:"Collerette",es:"Collar",it:"Collare"}}),s.plume("collarExpansionKmPerS",{min:0,max:10,step:.05,unit:"km/s",label:{en:"Collar spreading",fr:"Étalement de la collerette",es:"Expansión del collar",it:"Espansione del collare"},hint:{en:"How fast the collar widens: three quarters of the exhaust velocity when the engine is stated.",fr:"La vitesse à laquelle la collerette s'élargit : les trois quarts de la vitesse d'éjection quand le moteur est donné.",es:"La rapidez con que el collar se ensancha: tres cuartos de la velocidad de escape cuando se da el motor.",it:"Quanto in fretta il collare si allarga: tre quarti della velocità di scarico quando il motore è dato."},group:{en:"Collar",fr:"Collerette",es:"Collar",it:"Collare"}}),s.plume("collarLifetimeS",{min:1,max:300,step:1,unit:"s",label:{en:"Collar lifetime",fr:"Durée de la collerette",es:"Duración del collar",it:"Durata del collare"},group:{en:"Collar",fr:"Collerette",es:"Collar",it:"Collare"}})]};static PLACE={kind:"launch-place",title:{en:"Place of the path",fr:"Point du chemin",es:"Punto de la trayectoria",it:"Punto del percorso"},parameters:[{type:"number",key:"t",min:-3600,max:36e3,step:.1,unit:"s",scale:.001,required:!0,label:{en:"Time",fr:"Instant",es:"Instante",it:"Istante"},hint:{en:"Seconds of the recording; negative before it began: a stage seen minutes after its launch was already high when the recording started.",fr:"Secondes de l'enregistrement ; négatives avant son début : un étage vu des minutes après son lancement était déjà haut quand l'enregistrement a commencé.",es:"Segundos de la grabación; negativos antes de que empezara: una etapa vista minutos después de su lanzamiento ya estaba alta cuando empezó la grabación.",it:"Secondi della registrazione; negativi prima del suo inizio: uno stadio visto minuti dopo il lancio era già alto quando la registrazione è iniziata."}},{type:"number",key:"lat",min:-90,max:90,step:1e-4,unit:"°",required:!0,label:{en:"Latitude",fr:"Latitude",es:"Latitud",it:"Latitudine"}},{type:"number",key:"lng",min:-180,max:180,step:1e-4,unit:"°",required:!0,label:{en:"Longitude",fr:"Longitude",es:"Longitud",it:"Longitudine"}},{type:"number",key:"altitudeKm",min:0,max:2e3,step:.1,unit:"km",required:!0,label:{en:"Altitude",fr:"Altitude",es:"Altitud",it:"Altitudine"}}]};static jetContext(e,t){return{launch:e,index:t}}static jetValue(e){return(t,i)=>{const{launch:a,index:n}=i??{};return a?e(h.releaseOf(a,t,n)):void 0}}static JET_GROUP={en:"Jet",fr:"Jet",es:"Chorro",it:"Getto"};static JET={kind:"launch-jet",title:{en:"Jet",fr:"Jet",es:"Chorro",it:"Getto"},parameters:[{type:"choice",key:"kind",required:!0,label:{en:"What",fr:"Quoi",es:"Qué",it:"Cosa"},choices:[{value:"burn",label:{en:"Engine burn",fr:"Allumage du moteur",es:"Encendido del motor",it:"Accensione del motore"}},{value:"vent",label:{en:"Propellant vented",fr:"Ergols vidangés",es:"Propelentes purgados",it:"Propellenti scaricati"}}],group:s.JET_GROUP},{type:"number",key:"fromT",min:-36e3,max:36e3,step:.1,unit:"s",scale:.001,required:!0,label:{en:"From",fr:"Début",es:"Desde",it:"Da"},hint:{en:"Seconds of the recording; negative before it began.",fr:"Secondes de l'enregistrement ; négatives avant son début.",es:"Segundos de la grabación; negativos antes de que empezara.",it:"Secondi della registrazione; negativi prima del suo inizio."},group:s.JET_GROUP},{type:"number",key:"untilT",min:-36e3,max:36e3,step:.1,unit:"s",scale:.001,required:!0,label:{en:"Until",fr:"Fin",es:"Hasta",it:"Fino a"},group:s.JET_GROUP},{type:"number",key:"angleDeg",min:0,max:180,step:1,unit:"°",effective:()=>0,label:{en:"Direction from aft",fr:"Direction depuis l'arrière",es:"Dirección desde atrás",it:"Direzione da dietro"},hint:{en:"0 straight back along the stage's motion (an engine pushing it on), 90 sideways, 180 straight ahead (an engine braking it).",fr:"0 droit vers l'arrière du mouvement de l'étage (un moteur qui le pousse), 90 sur le côté, 180 droit devant (un moteur qui le freine).",es:"0 hacia atrás del movimiento de la etapa (un motor que la empuja), 90 de lado, 180 hacia delante (un motor que la frena).",it:"0 dritto all'indietro rispetto al moto dello stadio (un motore che lo spinge), 90 di lato, 180 dritto in avanti (un motore che lo frena)."},group:s.JET_GROUP},{type:"number",key:"azimuthDeg",min:-360,max:360,step:1,unit:"°",effective:()=>0,label:{en:"Side",fr:"Côté",es:"Lado",it:"Lato"},hint:{en:"Round the line of motion, which side it leaves on at the start: 0 away from the Earth, 90 to the right of the motion.",fr:"Autour de la ligne du mouvement, le côté par lequel il part au début : 0 à l'opposé de la Terre, 90 à droite du mouvement.",es:"Alrededor de la línea del movimiento, el lado por el que sale al principio: 0 opuesto a la Tierra, 90 a la derecha del movimiento.",it:"Attorno alla linea del moto, il lato da cui esce all'inizio: 0 opposto alla Terra, 90 a destra del moto."},group:s.JET_GROUP},{type:"number",key:"spinPeriodS",min:-3600,max:3600,step:.1,unit:"s",label:{en:"Spin period",fr:"Période de rotation",es:"Período de giro",it:"Periodo di rotazione"},hint:{en:"How long the stage takes to turn once round its line of motion; the jet turns with it and vented propellant draws a spiral. Negative turns the other way. Empty: it does not turn.",fr:"Le temps que met l'étage à faire un tour autour de sa ligne de mouvement ; le jet tourne avec lui et les ergols vidangés dessinent une spirale. Négative : dans l'autre sens. Vide : il ne tourne pas.",es:"Lo que tarda la etapa en dar una vuelta alrededor de su línea de movimiento; el chorro gira con ella y los propelentes purgados dibujan una espiral. Negativo: en el otro sentido. Vacío: no gira.",it:"Il tempo che lo stadio impiega a fare un giro attorno alla sua linea di moto; il getto gira con lui e i propellenti scaricati disegnano una spirale. Negativo: nell'altro verso. Vuoto: non gira."},group:s.JET_GROUP},{type:"number",key:"speedKmPerS",min:0,max:10,step:.01,unit:"km/s",effective:s.jetValue(e=>e.speedKmPerS),label:{en:"Speed",fr:"Vitesse",es:"Velocidad",it:"Velocità"},hint:{en:"How fast it leaves the stage. A burn: the engine's exhaust velocity.",fr:"La vitesse à laquelle il quitte l'étage. Un allumage : la vitesse d'éjection du moteur.",es:"La velocidad con que sale de la etapa. Un encendido: la velocidad de escape del motor.",it:"La velocità con cui lascia lo stadio. Un'accensione: la velocità di scarico del motore."},group:s.JET_GROUP},{type:"number",key:"massKgPerS",min:0,max:1e5,step:.1,unit:"kg/s",effective:s.jetValue(e=>e.massKgPerS),label:{en:"Flow",fr:"Débit",es:"Caudal",it:"Portata"},group:s.JET_GROUP},{type:"number",key:"condensedShare",min:0,max:1,step:.01,effective:s.jetValue(e=>e.condensedShare),label:{en:"Share that scatters",fr:"Part qui diffuse",es:"Parte que difunde",it:"Parte che diffonde"},group:s.JET_GROUP},{type:"number",key:"particleRadiusUm",min:.05,max:5,step:.05,unit:"µm",effective:s.jetValue(e=>e.particleRadiusUm),label:{en:"Particle radius",fr:"Rayon des particules",es:"Radio de las partículas",it:"Raggio delle particelle"},group:s.JET_GROUP},{type:"number",key:"expansionKmPerS",min:0,max:5,step:.01,unit:"km/s",effective:s.jetValue(e=>e.populations[0].expansionKmPerS),label:{en:"Spreading",fr:"Étalement",es:"Expansión",it:"Espansione"},hint:{en:"How fast each puff of it widens: a narrow jet keeps the arms of a spiral apart.",fr:"La vitesse à laquelle chaque bouffée s'élargit : un jet étroit garde les bras d'une spirale séparés.",es:"La rapidez con que se ensancha cada bocanada: un chorro estrecho mantiene separados los brazos de una espiral.",it:"Quanto in fretta si allarga ogni sbuffo: un getto stretto tiene separati i bracci di una spirale."},group:s.JET_GROUP},{type:"number",key:"initialRadiusKm",min:0,max:50,step:.1,unit:"km",effective:s.jetValue(e=>e.initialRadiusKm),label:{en:"Radius at release",fr:"Rayon au lâcher",es:"Radio al soltar",it:"Raggio al rilascio"},group:s.JET_GROUP},{type:"number",key:"lifetimeS",min:1,max:7200,step:1,unit:"s",effective:s.jetValue(e=>e.populations[0].lifetimeS),label:{en:"Lifetime",fr:"Durée",es:"Duración",it:"Durata"},group:s.JET_GROUP}]};static publish(){c.publish(s.SET)}}class r{constructor(e,t,i){this.container=e,this.host=t,this.language=i,c.of("launch")||s.publish(),this.render(),this.setLanguage(i)}messages=m;languageToken=0;currentId;form;list;places;placeForm;placeIndex=0;jets;jetForm;jetIndex=0;language;shown=[];async setLanguage(e){const t=++this.languageToken;this.language=e;const i=g.includes(e)?e:"en",a=i==="en"?m:await f(i);t===this.languageToken&&(this.messages=a,this.render(),this.sync())}sync(){const e=this.launches;this.shown=[...e],e.some(a=>a.id===this.currentId)||(this.currentId=e[0]?.id),this.list?.setItems(e.map(a=>({id:a.id,label:this.labelOf(a)})),this.currentId),this.syncAddState();const t=this.current;if(this.element("launch-fields").hidden=t===void 0,!t)return;this.syncPlaces(t),this.syncJets(t);const i=c.of("launch");this.form??=new d(this.element("launch-parameters"),this.language,"",{said:()=>this.host.said(),writingLanguage:()=>this.host.writingLanguage()}),this.form.show(i,t,()=>this.written())}refresh(){this.syncAddState();const e=this.launches;e.length===this.shown.length&&e.every((t,i)=>t===this.shown[i])||this.sync()}syncAddState(){const e=this.startOfNew()!==void 0;this.list?.setAddState(e,e?void 0:this.messages.addLaunchNowhere)}get current(){return this.launches.find(e=>e.id===this.currentId)}show(e){this.currentId=e,this.placeIndex=0,this.sync()}render(){const e=this.messages;this.form=void 0,this.container.innerHTML=`<div class="launch-editor">
|
|
1
|
+
import{L as h,x as u,U as g,G as f,u as d,t as c,v as p,D as v}from"./rr0-sighting-editor.mjs";import{launchEditorMessages_en as m}from"./LaunchEditorMessages_en-DH8gI1vo.js";class s{static plumeValue(e){return t=>h.plumeOf(t)[e]}static plume(e,t){return{type:"number",key:`plume.${e}`,effective:s.plumeValue(e),...t}}static burn(e,t){return{type:"number",key:e,min:-3600,max:36e3,step:.1,unit:"s",scale:.001,label:t.label,hint:t.hint,group:{en:"Engine",fr:"Moteur",es:"Motor",it:"Motore"},effective:i=>t.ends(i.track??[])?.t}}static nextPlace(e){const t=e[e.length-1]??{t:0,lat:0,lng:0,altitudeKm:0},i=e[e.length-2]??t,a=(n,l=0)=>e.length>1?t[n]-i[n]:l;return{t:t.t+(e.length>1?a("t"):1e4),lat:t.lat+a("lat"),lng:t.lng+a("lng"),altitudeKm:Math.max(0,t.altitudeKm+a("altitudeKm"))}}static SET={kind:"launch",title:{en:"Launch",fr:"Lancement",es:"Lanzamiento",it:"Lancio"},parameters:[{type:"said",key:"title",label:{en:"Name",fr:"Nom",es:"Nombre",it:"Nome"},group:{en:"Vehicle",fr:"Lanceur",es:"Lanzador",it:"Lanciatore"}},{type:"text",key:"vehicle.mission",label:{en:"Mission",fr:"Mission",es:"Misión",it:"Missione"},placeholder:"Starlink Group 10-49",group:{en:"Vehicle",fr:"Lanceur",es:"Lanzador",it:"Lanciatore"}},{type:"number",key:"vehicle.engine.thrustKN",min:1,max:1e5,step:1,unit:"kN",label:{en:"Thrust (vacuum)",fr:"Poussée (dans le vide)",es:"Empuje (en el vacío)",it:"Spinta (nel vuoto)"},hint:{en:"Merlin Vacuum 934, RL10 110, a solid booster several thousand. With the specific impulse, it sets how much exhaust leaves each second.",fr:"Merlin Vacuum 934, RL10 110, un booster à poudre plusieurs milliers. Avec l'impulsion spécifique, elle fixe le débit d'échappement.",es:"Merlin Vacuum 934, RL10 110, un propulsor sólido varios miles. Con el impulso específico, fija el caudal de escape.",it:"Merlin Vacuum 934, RL10 110, un booster solido diverse migliaia. Con l'impulso specifico, fissa la portata dello scarico."},group:{en:"Engine",fr:"Moteur",es:"Motor",it:"Motore"}},{type:"number",key:"vehicle.engine.specificImpulseS",min:100,max:500,step:1,unit:"s",label:{en:"Specific impulse (vacuum)",fr:"Impulsion spécifique (dans le vide)",es:"Impulso específico (en el vacío)",it:"Impulso specifico (nel vuoto)"},hint:{en:"Times 9.81 m/s² it is the exhaust velocity, which sets how fast the exhaust spreads round the stage: 348 s is 3.4 km/s.",fr:"Multipliée par 9,81 m/s², c'est la vitesse d'éjection, qui fixe la vitesse à laquelle l'échappement s'étale autour de l'étage : 348 s font 3,4 km/s.",es:"Multiplicado por 9,81 m/s² es la velocidad de escape, que fija la rapidez con que el escape se extiende alrededor de la etapa: 348 s son 3,4 km/s.",it:"Moltiplicato per 9,81 m/s² è la velocità di scarico, che fissa quanto in fretta lo scarico si allarga attorno allo stadio: 348 s sono 3,4 km/s."},group:{en:"Engine",fr:"Moteur",es:"Motor",it:"Motore"}},{type:"choice",key:"vehicle.engine.propellant",label:{en:"Propellant",fr:"Ergols",es:"Propelentes",it:"Propellenti"},hint:{en:"What the exhaust is made of decides how much of it turns into particles that scatter light.",fr:"Ce dont l'échappement est fait décide quelle part devient des particules qui diffusent la lumière.",es:"De qué está hecho el escape decide qué parte se vuelve partículas que difunden la luz.",it:"Di cosa è fatto lo scarico decide quanta parte diventa particelle che diffondono la luce."},choices:[{value:"rp1-lox",label:{en:"Kerosene and oxygen",fr:"Kérosène et oxygène",es:"Queroseno y oxígeno",it:"Cherosene e ossigeno"}},{value:"methane-lox",label:{en:"Methane and oxygen",fr:"Méthane et oxygène",es:"Metano y oxígeno",it:"Metano e ossigeno"}},{value:"hydrogen-lox",label:{en:"Hydrogen and oxygen",fr:"Hydrogène et oxygène",es:"Hidrógeno y oxígeno",it:"Idrogeno e ossigeno"}},{value:"hypergolic",label:{en:"Hypergolic",fr:"Hypergolique",es:"Hipergólico",it:"Ipergolico"}},{value:"solid",label:{en:"Solid",fr:"Poudre",es:"Sólido",it:"Solido"}}],group:{en:"Engine",fr:"Moteur",es:"Motor",it:"Motore"}},s.burn("burnFromT",{label:{en:"Engine start",fr:"Allumage du moteur",es:"Encendido del motor",it:"Accensione del motore"},hint:{en:"When the engine started, in seconds of the recording; it may be before it. Empty: the first point of the path.",fr:"Quand le moteur s'est allumé, en secondes de l'enregistrement ; avant lui si besoin. Vide : le premier point du chemin.",es:"Cuándo se encendió el motor, en segundos de la grabación; puede ser antes. Vacío: el primer punto de la trayectoria.",it:"Quando si è acceso il motore, in secondi della registrazione; può essere prima. Vuoto: il primo punto del percorso."},ends:e=>e[0]}),s.burn("burnUntilT",{label:{en:"Engine cut-off",fr:"Extinction du moteur",es:"Apagado del motor",it:"Spegnimento del motore"},hint:{en:"When the engine stopped, in seconds of the recording. Empty: the last point of the path. Nothing is let go after it.",fr:"Quand le moteur s'est éteint, en secondes de l'enregistrement. Vide : le dernier point du chemin. Rien n'est lâché après.",es:"Cuándo se apagó el motor, en segundos de la grabación. Vacío: el último punto de la trayectoria. Nada se suelta después.",it:"Quando si è spento il motore, in secondi della registrazione. Vuoto: l'ultimo punto del percorso. Dopo non si rilascia nulla."},ends:e=>e[e.length-1]}),s.plume("exhaustKgPerS",{min:.1,max:1e5,step:.1,unit:"kg/s",label:{en:"Exhaust flow",fr:"Débit d'échappement",es:"Caudal de escape",it:"Portata di scarico"},hint:{en:"How much exhaust leaves the engine each second: how bright the plume is. Thrust over exhaust velocity when the engine is stated.",fr:"La masse d'échappement qui sort du moteur chaque seconde : la luminosité du panache. La poussée sur la vitesse d'éjection quand le moteur est donné.",es:"La masa de escape que sale del motor cada segundo: el brillo de la estela. El empuje sobre la velocidad de escape cuando se da el motor.",it:"La massa di scarico che esce dal motore ogni secondo: la luminosità della scia. La spinta sulla velocità di scarico quando il motore è dato."},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),s.plume("condensedShare",{min:0,max:1,step:.01,label:{en:"Share that scatters",fr:"Part qui diffuse",es:"Parte que difunde",it:"Parte che diffonde"},hint:{en:"The share of the exhaust that ends up as particles that scatter the Sun's light. Nobody has measured it for a launch: the one number to fit against a photograph.",fr:"La part de l'échappement qui devient des particules diffusant la lumière du Soleil. Personne ne l'a mesurée pour un lancement : le seul nombre à caler sur une photographie.",es:"La parte del escape que acaba como partículas que difunden la luz del Sol. Nadie la ha medido para un lanzamiento: el único número que ajustar con una fotografía.",it:"La parte dello scarico che diventa particelle che diffondono la luce del Sole. Nessuno l'ha misurata per un lancio: l'unico numero da tarare su una fotografia."},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),s.plume("particleRadiusUm",{min:.05,max:5,step:.05,unit:"µm",label:{en:"Particle radius",fr:"Rayon des particules",es:"Radio de las partículas",it:"Raggio delle particelle"},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),s.plume("lifetimeS",{min:10,max:3600,step:10,unit:"s",label:{en:"Trail lifetime",fr:"Durée de la traînée",es:"Duración de la estela",it:"Durata della scia"},hint:{en:"How long the narrow trail lasts before the particles have gone.",fr:"Combien de temps la traînée étroite dure avant que les particules aient disparu.",es:"Cuánto dura la estela estrecha antes de que las partículas hayan desaparecido.",it:"Quanto dura la scia stretta prima che le particelle siano sparite."},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),s.plume("expansionKmPerS",{min:0,max:5,step:.01,unit:"km/s",label:{en:"Trail spreading",fr:"Étalement de la traînée",es:"Expansión de la estela",it:"Espansione della scia"},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),s.plume("initialRadiusKm",{min:0,max:50,step:.1,unit:"km",label:{en:"Radius at release",fr:"Rayon au lâcher",es:"Radio al soltar",it:"Raggio al rilascio"},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),s.plume("collarShare",{min:0,max:1,step:.01,label:{en:"Share in the collar",fr:"Part dans la collerette",es:"Parte en el collar",it:"Parte nel collare"},hint:{en:"The collar is the exhaust just let go, which spreads fast into a wide short-lived shell round the stage; the rest stays behind as the narrow trail.",fr:"La collerette est l'échappement qui vient d'être lâché, qui s'étale vite en une coque large et brève autour de l'étage ; le reste demeure derrière en traînée étroite.",es:"El collar es el escape recién soltado, que se extiende rápido en una envoltura ancha y breve alrededor de la etapa; el resto queda detrás como estela estrecha.",it:"Il collare è lo scarico appena rilasciato, che si allarga in fretta in un guscio largo e breve attorno allo stadio; il resto resta dietro come scia stretta."},group:{en:"Collar",fr:"Collerette",es:"Collar",it:"Collare"}}),s.plume("collarExpansionKmPerS",{min:0,max:10,step:.05,unit:"km/s",label:{en:"Collar spreading",fr:"Étalement de la collerette",es:"Expansión del collar",it:"Espansione del collare"},hint:{en:"How fast the collar widens: three quarters of the exhaust velocity when the engine is stated.",fr:"La vitesse à laquelle la collerette s'élargit : les trois quarts de la vitesse d'éjection quand le moteur est donné.",es:"La rapidez con que el collar se ensancha: tres cuartos de la velocidad de escape cuando se da el motor.",it:"Quanto in fretta il collare si allarga: tre quarti della velocità di scarico quando il motore è dato."},group:{en:"Collar",fr:"Collerette",es:"Collar",it:"Collare"}}),s.plume("collarLifetimeS",{min:1,max:300,step:1,unit:"s",label:{en:"Collar lifetime",fr:"Durée de la collerette",es:"Duración del collar",it:"Durata del collare"},group:{en:"Collar",fr:"Collerette",es:"Collar",it:"Collare"}})]};static PLACE={kind:"launch-place",title:{en:"Place of the path",fr:"Point du chemin",es:"Punto de la trayectoria",it:"Punto del percorso"},parameters:[{type:"number",key:"t",min:-3600,max:36e3,step:.1,unit:"s",scale:.001,required:!0,label:{en:"Time",fr:"Instant",es:"Instante",it:"Istante"},hint:{en:"Seconds of the recording; negative before it began: a stage seen minutes after its launch was already high when the recording started.",fr:"Secondes de l'enregistrement ; négatives avant son début : un étage vu des minutes après son lancement était déjà haut quand l'enregistrement a commencé.",es:"Segundos de la grabación; negativos antes de que empezara: una etapa vista minutos después de su lanzamiento ya estaba alta cuando empezó la grabación.",it:"Secondi della registrazione; negativi prima del suo inizio: uno stadio visto minuti dopo il lancio era già alto quando la registrazione è iniziata."}},{type:"position",key:"lat",secondKey:"lng",saidKey:"saidPosition",native:"geo",step:1,label:{en:"Position",fr:"Position",es:"Posición",it:"Posizione"}},{type:"number",key:"altitudeKm",min:0,max:2e3,step:.1,unit:"km",required:!0,label:{en:"Altitude",fr:"Altitude",es:"Altitud",it:"Altitudine"}}]};static jetContext(e,t){return{launch:e,index:t}}static jetValue(e){return(t,i)=>{const{launch:a,index:n}=i??{};return a?e(h.releaseOf(a,t,n)):void 0}}static JET_GROUP={en:"Jet",fr:"Jet",es:"Chorro",it:"Getto"};static JET={kind:"launch-jet",title:{en:"Jet",fr:"Jet",es:"Chorro",it:"Getto"},parameters:[{type:"choice",key:"kind",required:!0,label:{en:"What",fr:"Quoi",es:"Qué",it:"Cosa"},choices:[{value:"burn",label:{en:"Engine burn",fr:"Allumage du moteur",es:"Encendido del motor",it:"Accensione del motore"}},{value:"vent",label:{en:"Propellant vented",fr:"Ergols vidangés",es:"Propelentes purgados",it:"Propellenti scaricati"}}],group:s.JET_GROUP},{type:"number",key:"fromT",min:-36e3,max:36e3,step:.1,unit:"s",scale:.001,required:!0,label:{en:"From",fr:"Début",es:"Desde",it:"Da"},hint:{en:"Seconds of the recording; negative before it began.",fr:"Secondes de l'enregistrement ; négatives avant son début.",es:"Segundos de la grabación; negativos antes de que empezara.",it:"Secondi della registrazione; negativi prima del suo inizio."},group:s.JET_GROUP},{type:"number",key:"untilT",min:-36e3,max:36e3,step:.1,unit:"s",scale:.001,required:!0,label:{en:"Until",fr:"Fin",es:"Hasta",it:"Fino a"},group:s.JET_GROUP},{type:"number",key:"angleDeg",min:0,max:180,step:1,unit:"°",effective:()=>0,label:{en:"Direction from aft",fr:"Direction depuis l'arrière",es:"Dirección desde atrás",it:"Direzione da dietro"},hint:{en:"0 straight back along the stage's motion (an engine pushing it on), 90 sideways, 180 straight ahead (an engine braking it).",fr:"0 droit vers l'arrière du mouvement de l'étage (un moteur qui le pousse), 90 sur le côté, 180 droit devant (un moteur qui le freine).",es:"0 hacia atrás del movimiento de la etapa (un motor que la empuja), 90 de lado, 180 hacia delante (un motor que la frena).",it:"0 dritto all'indietro rispetto al moto dello stadio (un motore che lo spinge), 90 di lato, 180 dritto in avanti (un motore che lo frena)."},group:s.JET_GROUP},{type:"number",key:"azimuthDeg",min:-360,max:360,step:1,unit:"°",effective:()=>0,label:{en:"Side",fr:"Côté",es:"Lado",it:"Lato"},hint:{en:"Round the line of motion, which side it leaves on at the start: 0 away from the Earth, 90 to the right of the motion.",fr:"Autour de la ligne du mouvement, le côté par lequel il part au début : 0 à l'opposé de la Terre, 90 à droite du mouvement.",es:"Alrededor de la línea del movimiento, el lado por el que sale al principio: 0 opuesto a la Tierra, 90 a la derecha del movimiento.",it:"Attorno alla linea del moto, il lato da cui esce all'inizio: 0 opposto alla Terra, 90 a destra del moto."},group:s.JET_GROUP},{type:"number",key:"spinPeriodS",min:-3600,max:3600,step:.1,unit:"s",label:{en:"Spin period",fr:"Période de rotation",es:"Período de giro",it:"Periodo di rotazione"},hint:{en:"How long the stage takes to turn once round its line of motion; the jet turns with it and vented propellant draws a spiral. Negative turns the other way. Empty: it does not turn.",fr:"Le temps que met l'étage à faire un tour autour de sa ligne de mouvement ; le jet tourne avec lui et les ergols vidangés dessinent une spirale. Négative : dans l'autre sens. Vide : il ne tourne pas.",es:"Lo que tarda la etapa en dar una vuelta alrededor de su línea de movimiento; el chorro gira con ella y los propelentes purgados dibujan una espiral. Negativo: en el otro sentido. Vacío: no gira.",it:"Il tempo che lo stadio impiega a fare un giro attorno alla sua linea di moto; il getto gira con lui e i propellenti scaricati disegnano una spirale. Negativo: nell'altro verso. Vuoto: non gira."},group:s.JET_GROUP},{type:"number",key:"speedKmPerS",min:0,max:10,step:.01,unit:"km/s",effective:s.jetValue(e=>e.speedKmPerS),label:{en:"Speed",fr:"Vitesse",es:"Velocidad",it:"Velocità"},hint:{en:"How fast it leaves the stage. A burn: the engine's exhaust velocity.",fr:"La vitesse à laquelle il quitte l'étage. Un allumage : la vitesse d'éjection du moteur.",es:"La velocidad con que sale de la etapa. Un encendido: la velocidad de escape del motor.",it:"La velocità con cui lascia lo stadio. Un'accensione: la velocità di scarico del motore."},group:s.JET_GROUP},{type:"number",key:"massKgPerS",min:0,max:1e5,step:.1,unit:"kg/s",effective:s.jetValue(e=>e.massKgPerS),label:{en:"Flow",fr:"Débit",es:"Caudal",it:"Portata"},group:s.JET_GROUP},{type:"number",key:"condensedShare",min:0,max:1,step:.01,effective:s.jetValue(e=>e.condensedShare),label:{en:"Share that scatters",fr:"Part qui diffuse",es:"Parte que difunde",it:"Parte che diffonde"},group:s.JET_GROUP},{type:"number",key:"particleRadiusUm",min:.05,max:5,step:.05,unit:"µm",effective:s.jetValue(e=>e.particleRadiusUm),label:{en:"Particle radius",fr:"Rayon des particules",es:"Radio de las partículas",it:"Raggio delle particelle"},group:s.JET_GROUP},{type:"number",key:"expansionKmPerS",min:0,max:5,step:.01,unit:"km/s",effective:s.jetValue(e=>e.populations[0].expansionKmPerS),label:{en:"Spreading",fr:"Étalement",es:"Expansión",it:"Espansione"},hint:{en:"How fast each puff of it widens: a narrow jet keeps the arms of a spiral apart.",fr:"La vitesse à laquelle chaque bouffée s'élargit : un jet étroit garde les bras d'une spirale séparés.",es:"La rapidez con que se ensancha cada bocanada: un chorro estrecho mantiene separados los brazos de una espiral.",it:"Quanto in fretta si allarga ogni sbuffo: un getto stretto tiene separati i bracci di una spirale."},group:s.JET_GROUP},{type:"number",key:"initialRadiusKm",min:0,max:50,step:.1,unit:"km",effective:s.jetValue(e=>e.initialRadiusKm),label:{en:"Radius at release",fr:"Rayon au lâcher",es:"Radio al soltar",it:"Raggio al rilascio"},group:s.JET_GROUP},{type:"number",key:"lifetimeS",min:1,max:7200,step:1,unit:"s",effective:s.jetValue(e=>e.populations[0].lifetimeS),label:{en:"Lifetime",fr:"Durée",es:"Duración",it:"Durata"},group:s.JET_GROUP}]};static publish(){u.publish(s.SET)}}class o{constructor(e,t,i){this.container=e,this.host=t,this.language=i,u.of("launch")||s.publish(),this.render(),this.setLanguage(i)}messages=m;languageToken=0;currentId;form;list;places;placeForm;placeIndex=0;jets;jetForm;jetIndex=0;language;shown=[];async setLanguage(e){const t=++this.languageToken;this.language=e;const i=g.includes(e)?e:"en",a=i==="en"?m:await f(i);t===this.languageToken&&(this.messages=a,this.render(),this.sync())}sync(){const e=this.launches;this.shown=[...e],e.some(a=>a.id===this.currentId)||(this.currentId=e[0]?.id),this.list?.setItems(e.map(a=>({id:a.id,label:this.labelOf(a)})),this.currentId),this.syncAddState();const t=this.current;if(this.element("launch-fields").hidden=t===void 0,!t)return;this.syncPlaces(t),this.syncJets(t);const i=u.of("launch");this.form??=new d(this.element("launch-parameters"),this.language,"",{said:()=>this.host.said(),writingLanguage:()=>this.host.writingLanguage()}),this.form.show(i,t,()=>this.written())}refresh(){this.syncAddState();const e=this.launches;e.length===this.shown.length&&e.every((t,i)=>t===this.shown[i])||this.sync()}syncAddState(){const e=this.startOfNew()!==void 0;this.list?.setAddState(e,e?void 0:this.messages.addLaunchNowhere)}get current(){return this.launches.find(e=>e.id===this.currentId)}show(e){this.currentId=e,this.placeIndex=0,this.sync()}render(){const e=this.messages;this.form=void 0,this.container.innerHTML=`<div class="launch-editor">
|
|
2
2
|
<p class="launch-intro">${e.intro}</p>
|
|
3
3
|
<div id="launch-list"></div>
|
|
4
4
|
<div id="launch-fields" class="launch-fields">
|
|
@@ -15,4 +15,4 @@ import{L as h,x as c,U as g,G as f,u as d,t as u,v as p,D as v}from"./rr0-sighti
|
|
|
15
15
|
<div id="launch-parameters" class="launch-parameters"></div>
|
|
16
16
|
<p class="launch-intro">${e.derivedNote}</p>
|
|
17
17
|
</div>
|
|
18
|
-
</div>`;const t=this.element("launch-list");this.list=new
|
|
18
|
+
</div>`;const t=this.element("launch-list");this.list=new c({header:t,body:this.element("launch-fields"),ids:{list:"launch-select",remove:"launch-delete",add:"launch-add",kinds:"launch-add-kind",kind:a=>`launch-add-${a}`},onSelect:a=>{this.currentId=a,this.placeIndex=0,this.sync()},onAdd:a=>this.addLaunch(a??o.VEHICLES[0].id),onRemove:()=>this.deleteCurrent()}),this.list.setLabels({list:e.launch,remove:e.deleteLaunch,add:e.addLaunch,empty:e.none}),this.list.setKinds(o.VEHICLES.map(a=>({value:a.id,label:a.vehicle.name??a.id})));const i=this.element("launch-places");this.places=new c({header:i,body:this.element("launch-place-parameters"),ids:{list:"launch-place",remove:"launch-place-delete",add:"launch-place-add"},navigation:{scope:this.container,onStep:a=>this.selectPlace(this.placeIndex+a)},onSelect:a=>this.selectPlace(Number(a)),onAdd:()=>this.addPlace(),onRemove:()=>this.removePlace()}),this.places.setLabels({list:e.place,remove:e.deletePlace,add:e.addPlace,previous:e.previousPlace,next:e.nextPlace}),this.placeForm=void 0,this.jets=new c({header:this.element("launch-jet-list"),body:this.element("launch-jet-parameters"),ids:{list:"launch-jet",remove:"launch-jet-delete",add:"launch-jet-add",kinds:"launch-jet-add-kind",kind:a=>`launch-jet-add-${a}`},onSelect:a=>{this.jetIndex=Number(a),this.syncJets(this.current,!0)},onAdd:a=>this.addJet(a==="vent"?"vent":"burn"),onRemove:()=>this.removeJet()}),this.jets.setLabels({list:e.jet,remove:e.deleteJet,add:e.addJet,empty:e.noJet}),this.jets.setKinds([{value:"burn",label:e.jetBurn},{value:"vent",label:e.jetVent}]),this.jetForm=void 0}written(){this.host.changed();const e=this.current;e&&this.list?.rename(e.id,this.labelOf(e))}syncPlaces(e,t=!1){const i=e.track??[];this.placeIndex=Math.max(0,Math.min(this.placeIndex,i.length-1)),this.places?.setItems(i.map((a,n)=>({id:String(n),label:this.seconds(a.t)})),String(this.placeIndex)),this.places?.setStepState(this.placeIndex>0,this.placeIndex<i.length-1),this.places?.setRemoveEnabled(i.length>o.MIN_PLACES),this.placeForm?this.placeForm.sync(t):(this.placeForm=new d(this.element("launch-place-parameters"),this.language,"launchPlace."),this.placeForm.show(s.PLACE,new p(()=>this.current?.track[this.placeIndex],a=>this.editPlace(a),void 0,this.host.positionPlace?.()),()=>{}))}syncJets(e,t=!1){const i=e.jets??[];this.jetIndex=Math.max(0,Math.min(this.jetIndex,i.length-1));const a=this.messages;this.jets?.setItems(i.map((n,l)=>({id:String(l),label:`${n.kind==="vent"?a.jetVent:a.jetBurn} ${this.seconds(n.fromT)}`})),i.length?String(this.jetIndex):void 0),this.jetForm?this.jetForm.sync(t):(this.jetForm=new d(this.element("launch-jet-parameters"),this.language,"launchJet."),this.jetForm.show(s.JET,new p(()=>this.current?.jets?.[this.jetIndex],n=>this.editJet(n),()=>this.current?s.jetContext(this.current,this.jetIndex):void 0),()=>{}))}editJet(e){const t=this.current;if(!t?.jets)return;const i={...t.jets[this.jetIndex]};e(i),t.jets=t.jets.map((n,l)=>l===this.jetIndex?i:n);const a=this.messages;this.jets?.rename(String(this.jetIndex),`${i.kind==="vent"?a.jetVent:a.jetBurn} ${this.seconds(i.fromT)}`),this.written()}addJet(e){const t=this.current;if(!t)return;const i=t.track,a=Math.round((i[0].t+i[i.length-1].t)/2),n=e==="vent"?{kind:e,fromT:a,untilT:a+3e4,angleDeg:90}:{kind:e,fromT:a,untilT:a+3e4};!t.jets?.length&&t.burnFromT===void 0&&t.burnUntilT===void 0&&(t.burnFromT=i[0].t,t.burnUntilT=i[i.length-1].t),t.jets=[...t.jets??[],n],this.jetIndex=t.jets.length-1,this.syncJets(t,!0),this.form?.sync(!0),this.host.changed()}removeJet(){const e=this.current;if(!e?.jets?.length)return;const t=e.jets.filter((i,a)=>a!==this.jetIndex);t.length?e.jets=t:delete e.jets,this.syncJets(e,!0),this.host.changed()}static MIN_PLACES=2;seconds(e){return`${Math.round(e/100)/10} s`}selectPlace(e){const t=this.current?.track??[];e<0||e>=t.length||(this.placeIndex=e,this.syncPlaces(this.current,!0))}editPlace(e){const t=this.current;if(!t)return;const i={...t.track[this.placeIndex]};e(i);const a=t.track.map((n,l)=>l===this.placeIndex?i:n).sort((n,l)=>n.t-l.t);this.replaceTrack(t,a),this.placeIndex=a.indexOf(i),this.syncPlaces(this.current),this.written()}addPlace(){const e=this.current;if(!e)return;const t=e.track,i=s.nextPlace(t),a=[...e.track,i].sort((n,l)=>n.t-l.t);this.replaceTrack(e,a),this.placeIndex=a.indexOf(i),this.syncPlaces(this.current),this.host.changed()}removePlace(){const e=this.current;!e||e.track.length<=o.MIN_PLACES||(this.replaceTrack(e,e.track.filter((t,i)=>i!==this.placeIndex)),this.syncPlaces(this.current),this.host.changed())}replaceTrack(e,t){e.track=t}startOfNew(){const e=this.host.sighting(),t=e.event?.place?.[0];if(t?.lat===void 0||t.lng===void 0)return;const i=(e.observerTrack?.getInterpolatedPoseAt(0)?.headingDeg??0)*Math.PI/180,a=n=>({lat:t.lat+n*Math.cos(i)/111.32,lng:t.lng+n*Math.sin(i)/(111.32*Math.max(.05,Math.cos(t.lat*Math.PI/180)))});return[{t:0,...a(300),altitudeKm:80},{t:6e4,...a(450),altitudeKm:160}]}static VEHICLES=[{id:"falcon-9",vehicle:{name:"Falcon 9"}}];addLaunch(e){const t=this.startOfNew();if(!t)return;const i=o.VEHICLES.find(r=>r.id===e)??o.VEHICLES[0];let a=this.launches.length+1;for(;this.launches.some(r=>r.id===`launch-${a}`);)a++;const n={id:`launch-${a}`,vehicle:{...i.vehicle},track:t},l=this.host.sighting();l.skyEvents={...l.skyEvents,launches:[...this.launches,n]},this.currentId=n.id,this.host.changed(),this.sync()}deleteCurrent(){const e=this.current;if(!e)return;this.currentId=void 0;const t=this.host.sighting();t.skyEvents=v.written({...t.skyEvents,launches:this.launches.filter(i=>i!==e)}),this.host.changed(),this.sync()}labelOf(e){const t=this.host.said().read(e.title)??e.vehicle?.mission??e.vehicle?.name;return t?`${t} (${e.id})`:e.id}get launches(){return this.host.sighting().skyEvents?.launches??[]}element(e){return this.container.querySelector(`#${e}`)}}export{o as LaunchEditor};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e={basisTitle:"Cómo se obtuvo este valor",basisField:"Base",howField:"Cómo",rationaleField:"Justificación",basisReset:"Base devuelta a «declarada»: el valor se volvió a escribir (era: {basis}).",lawSources:"Fuentes: {sources}",extrapolation:"Estas leyes se midieron en observaciones nocturnas: aplicarlas a una observación diurna es una extrapolación.",sectionAccountConditions:"Condiciones del testimonio",sectionViewing:"Condiciones de visión",sectionMoon:"Calibre Luna",sectionErrorParameters:"Parámetros de error de este testigo",errorModelField:"Modelo de error",delayField:"Plazo antes de este relato",delayUnit:"días",versionField:"Versión",wordField:"Palabra empleada",exposureField:"Exposición",independenceField:"Independencia",independentYes:"sin haber hablado con los otros testigos",independentNo:"tras hablar con los otros testigos",unknownChoice:"no se sabe",darkAdapted:"Adaptado a la oscuridad",correctedVision:"Vista corregida (gafas, lentillas)",glare:"Luz intensa justo antes",viewingNote:"El cristal o el parabrisas y los prismáticos se ajustan en «Visión» más arriba.",moonIntro:"El testigo muestra la Luna llena como mostró el objeto. La razón da su propio factor de tamaño angular: la única medida que hace individual la ley general. A tomar una vez por testigo.",moonField:"Luna tal como se muestra",moonHint:"Con el brazo extendido, 1 cm ≈ 1°",moonNone:"Aún no medida: se aplica la ley general ({law}).",moonFactor:"Factor ×{k}: sustituye a la ley general en todos los tamaños angulares de este testigo.",moonReal:"Luna real · 0,52°",parametersIntro:"Los errores de un mismo testigo están ligados: el mismo factor en todos sus tamaños, el mismo desfase en todas sus horas. Calculados, nunca escritos: ningún margen «±» se introduce a mano.",showMore:"Mostrar",basis:{measured:"◆ medida",stated:"declarada",derived:"deducida",assumed:"supuesta"},how:{clock:"leída en un reloj",anchored:"anclada a un evento fechado",estimated:"estimada","shown-on-the-spot":"mostrada en el lugar","arm-length-gauge":"calibre con el brazo extendido","recalled-object":"referida a un objeto conocido",instrument:"instrumento",landmark:"referencia del paisaje",occlusion:"ocultación","known-size":"tamaño conocido",triangulation:"triangulación"},status:{consolidated:"consolidada",individual:"individual",single:"estudio único",argued:"argumentada",contested:"discutida"},laws:{timeClock:"± {minutes} min (leída en un reloj)",timeAnchored:"± {minutes} min (anclada a un evento fechado)",timeEstimated:"± {minutes} min para 9 testigos de 10 (estimada)",duration:"{low} a {high}: ×/÷{factor} (log-normal)",elevationOver:"{low} a {high}: altura sobreestimada",measuredInstrument:"± {degrees}° (medida)",measuredLandmark:"± {degrees}° (según una referencia)",headingCross:"{low} a {high}: ± {degrees}°, sentido a veces invertido",sizeMoon:"{low} a {high}: factor ×{factor} del calibre Luna",sizeShown:"{low} a {high}: mostrada en el lugar, +2 a +17 %",sizeRecalled:"{low} a {high}: referida a un objeto conocido, ~30 % demasiado grande",sizeArm:"{low} a {high}: sobreestimada ×{from} a ×{to} con el brazo extendido",sizeGauge:"{low} a {high}: calibre, ± {percent} %",distanceAnchored:"Anclada: su error sigue al de aquello de lo que se deduce",distanceNotData:"No es un dato: errónea en un factor {factor} o más sin anclaje"},parameterNames:{clock:"Desfase del reloj",date:"Desfase de fecha",heading:"Rotación del rumbo",elevation:"Compresión de alturas",size:"Factor de tamaño angular",duration:"Factor de duración"},parameterScopes:{clock:"todas las horas",date:"la fecha",heading:"todos los rumbos",elevation:"todas las alturas",size:"todos los tamaños angulares",duration:"la duración y la escala de la línea de tiempo"},parameters:{clockClock:"± {minutes} min (reloj)",clockAnchored:"± {minutes} min (anclada)",clockEstimated:"± {minutes} min (estimada)",dateShift:"±1 día, mes o año; horario de verano ({percent} % de las fechas)",headingRotation:"± {degrees}°, espejo posible",elevationCompression:"sobreestimadas, nunca subestimadas",sizeMoon:"×{factor} (calibre Luna)",sizeArm:"×{from} a ×{to} con el brazo extendido",sizeShown:"+2 a +17 % mostrada en el lugar",durationFactor:"×/÷{factor} (log-normal)"},words:{light:"luz",object:"objeto",craft:"aparato",ufo:"ovni",other:"otra"},exposures:{none:"ninguna",press:"prensa",broadcast:"radio, televisión","other-witnesses":"otros testigos",investigators:"investigadores"},models:{consolidated:"Lecturas consolidadas (UFO@home)",keul:"Keul (tamaños mostrados en el lugar)"},candidates:{title:"Explicaciones candidatas",verdicts:{consolidated:"Compatible con sesgos consolidados",contested:"Solo invocando sesgos discutidos",incompatible:"Incompatible incluso en los límites"},cost:"coste {x} σ",seeVariant:"Ver esta variante",variantLabel:"Variante: {name}",backToAccount:"Volver al relato",costNote:"Un coste no es una probabilidad: dice qué sesgos hay que invocar, y cuánto.",scopeNote:"Matriz de Poher (1977) para la lista de partida; la Luna, los planetas, los pasos de satélites, las reentradas, los bólidos registrados y los aviones del registro se calculan y se confrontan con el relato.",fields:{time:"Hora",heading:"Acimut",elevation:"Altura sobre el horizonte",size:"Anchura aparente",duration:"Duración",sweep:"Recorrido en el cielo"},biases:{clock:"desfase del reloj {x} min",heading:"rotación del rumbo {x}°",elevation:"altura sobreestimada ×{x}",size:"tamaño sobreestimado ×{x}",duration:"duración mal estimada ×{x}",sweep:"recorrido mal estimado {x}°"},reasons:{"never-seen":"Nunca visible desde este lugar en el margen de la hora dada.",direction:"Demasiado lejos de la dirección dada, incluso en los límites de las leyes.",size:"Tamaño demasiado distinto, incluso en los límites de las leyes.",motion:"No se mueve como dice el relato, y nada hace leer uno por otro.",growth:"No crece como dice el relato, ni se vuelve más brillante."},readingTitle:"Lectura",readings:{grouped:"luces leídas como un solo cuerpo","still-seen-moving":"una luz fija vista en movimiento (efecto autocinético, nubes que pasan)","moving-seen-still":"una luz en movimiento vista inmóvil (llegando de frente)","brightening-as-approach":"un brillo creciente leído como un acercamiento"},notAgainst:"No es un argumento contra el relato.",noDirection:"El relato no sitúa el fenómeno en el cielo: no hay nada que confrontar.",noSky:"Sin fecha, hora y lugar, ningún astro puede situarse.",bodies:{Moon:"Luna",Venus:"Venus",Mars:"Marte",Jupiter:"Júpiter",Saturn:"Saturno"},aircraft:"Aeronave {name}",interpretation:"Interpretación: {name}",keepVariant:"Guardar esta variante",keptTitle:"Variantes guardadas ({n})",seeKept:"Ver",removeVariant:"Quitar",keptRecomputed:"calculada de nuevo: {verdict}, coste {x} σ",keptModel:"modelo: {model}",reentry:"Reentrada {name}",star:"Estrella {name}",fireball:"Bólido {name}",poherLoading:"Cargando la matriz de Poher…",poherFailed:"No se pudo leer la matriz de Poher: solo se proponen los astros.",poherTitle:"Según la matriz {version}",poherIntro:"Los demás fenómenos conocidos de la matriz, sin trayectoria calculada aquí: su nota es el juicio de Poher, a confrontar a mano.",poherIntroRr0:"Los demás fenómenos conocidos de la matriz, sin trayectoria calculada aquí: cada nota es la de Poher, o la de RR0 para lo que RR0 añade, con su razón; a confrontar a mano.",poherVersion:"Matriz",poherVersions:{"poher-1977":"de Poher (1977)","rr0-2026":"de Poher ampliada por RR0 (2026)"},poherAdded:"añadido por RR0",poherRr0Reason:"nota de RR0: {why}",poherPossible:"Posibles",poherExcluded:"Excluidos ({n})",poherExcludedBy:"excluido por: {list}",poherDoubted:"dudoso según estimaciones: {list}",poherScore:"nota {x}",poherTag:"Poher: {state}",poherStatePossible:"posible, nota {x}",poherStateExcluded:"excluido",answersTitle:"Respuestas deducidas de la grabación ({n})",firm:"firme",soft:"estimación, no excluye nada por sí sola"}},a={color:"Color",transparency:"Transparencia",halo:"Halo",blur:"Desenfoque",brightness:"Brillo",shapeTitle:"Nombre",utcOffset:"Zona horaria",cloudBase:"Base de las nubes",elevation:"Altitud",heightAboveGround:"Altura sobre el suelo",duration:"Duración",placeName:"Lugar",latitude:"Latitud",longitude:"Longitud",heading:"Orientación",pitch:"Inclinación",roll:"Alabeo",sway:"Vaivén en reposo",swayTitle:"Cuánto mueve la vista el cuerpo que sostiene el instrumento cuando no camina: 1 para una persona de pie, 0 para un trípode. Vacío: 1 (0 si el relato dice que el observador estaba paralizado)",referenceGhosts:"Reflejos en la foto",referenceFindGhosts:"Buscar reflejos",referenceGhostsSearching:"Buscando…",referenceGhostsFound:"{count} reflejos encontrados, cada uno al otro lado de su luz respecto al eje del objetivo.",referenceGhostsFoundScaled:"{count} reflejos encontrados, cada uno a {scale} veces la distancia de su luz al eje del objetivo.",referenceGhostsLow:"Quizá {count} reflejo(s): demasiado pocos para estar seguro.",referenceGhostsNone:"Ningún reflejo encontrado: ninguna mancha débil está al otro lado de una luz respecto a un mismo punto.",referenceGhostsCropped:"El eje del objetivo está desplazado del centro de la imagen: la foto fue recortada.",referenceGhostsHide:"Ocultar reflejos",referenceGhostsShow:"Mostrar reflejos",lensGlass:"A través de",lensGlassNone:"el objetivo solo",lensGlassFilter:"un filtro en el objetivo",lensGlassWindow:"una ventana",lensGlassWindscreen:"un parabrisas",lensDrops:"Gotas en el cristal",lensDropsTitle:"0 a 1: qué parte del cristal exterior cubren las gotas de agua. Vacío: según la lluvia o la nieve que cae, salvo si el cristal está a cubierto",lensCondensation:"Vaho",lensCondensationTitle:"0 a 1: vaho en el cristal, como en un objetivo que pasa del calor al frío. Vacío: ninguno",lensDirt:"Suciedad",lensDirtTitle:"0 a 1: suciedad, grasa o huellas en el cristal. Vacío: ninguna",lensSheltered:"A cubierto de la lluvia",lensShelteredTitle:"El cristal exterior estaba fuera de la lluvia o la nieve: bajo un techo, o tras un parabrisas con los limpiaparabrisas en marcha",lightPollution:"Cielo nocturno",lightPollutionTitle:"El cenit de una noche sin Luna en este lugar, en magnitudes por segundo de arco cuadrado, tal como lo lee un Sky Quality Meter o lo da el atlas mundial del brillo artificial del cielo (Falchi et al. 2016, lightpollutionmap.info, «SQM»). 22 es un cielo natural; un suburbio ronda 19, el centro de una ciudad 17. Vacío: un cielo natural",observationTime:"Inicio de la observación",observationEndTime:"Fin de la observación",assessmentGroup:"Evaluación",assessmentNames:{coverage:"Datos del observador"},assessmentVerdicts:{"hynek.nl":"NL — luz nocturna","hynek.dd":"DD — disco diurno","hynek.rv":"RV — radar-visual","hynek.ce1":"EC1 — encuentro cercano","hynek.ce2":"EC2 — con huella física","hynek.ce3":"EC3 — con entidades"},timeQualifierApproximate:"Aproximada",timeQualifierUncertain:"Incierta",timeQualifierBoth:"Incierta y aproximada",timeSeasonSpring:"Primavera",timeSeasonSummer:"Verano",timeSeasonAutumn:"Otoño",timeSeasonWinter:"Invierno",summaryGroups:{observation:"Observación",location:"Posición",temporal:"Tiempo",weather:"Clima",sound:"Sonido"},summaryGroup:"Resumen",summaryDescription:"Descripción",closeDescription:"Cerrar la descripción",observerGroup:"Observador",observerId:"ID",observerTitle:"Tratamiento",observerLastName:"Apellidos",observerFirstNames:"Nombres",sightingId:"ID",tags:"Etiquetas",cloudCover:"Nubosidad",highCloudCover:"Nubes de hielo (cirros)",focalLength:"Distancia focal",fieldOfView:"Campo de visión",aperture:"Apertura",exposure:"Exposición",focusDistance:"Enfocado a",iceCrystalAlignment:"Alineación de los cristales",rareIceCrystals:"Cristales raros",cloudDarkness:"Oscuridad de las nubes",precipitationType:"Precipitación",precipitationNone:"Ninguna",precipitationRain:"Lluvia",precipitationSnow:"Nieve",precipitationHail:"Granizo",precipitationIntensity:"Intensidad",windDirection:"Dirección del viento",windSpeed:"Velocidad del viento",storm:"Tormenta",cloudsGroup:"Nubes",precipitationGroup:"Precipitación",windGroup:"Viento",soundKind:"Sonido",soundNone:"Ninguno (silencioso)",soundHum:"Zumbido",soundWhistle:"Silbido",soundRumble:"Retumbo",soundCrackle:"Crepitación",soundVolume:"Volumen",soundPitch:"Tono",soundSrc:"Grabación",instrument:"Observado con",filter:"Delante",filterNone:"nada",filterSolarVisual:"un filtro solar para el ojo (gafas de eclipse, densidad 5)",filterSolarPhoto:"una película solar para cámara (densidad 3,8)",decorAircraft:"Aeronave",decorEntity:"Ser",decorAltitude:"Altitud",decorLights:"Luces",decorLightsNone:"ninguna",decor:"Entorno",decorBuilding:"Edificio",decorTree:"Árbol",decorShrub:"Arbusto",decorBridge:"Puente",decorWire:"Línea aérea",decorCrop:"Hilera de cultivo",decorTerrace:"Bancal (terraza)",decorMound:"Montón de piedras",decorWall:"Muro de piedra seca",decorStreetlight:"Farola",decorTrafficLight:"Semáforo",decorCrossing:"Paso de peatones",decorRoadSign:"Señal de tráfico",decorVehicle:"Vehículo",decorObserver:"Otro observador",decorEast:"Distancia al este",decorNorth:"Distancia al norte",decorHeading:"Orientación",decorColor:"Color",decorLit:"Encendido",decorTitle:"Nombre",milestones:"Momentos",milestoneLabel:"Etiqueta",milestoneNote:"Qué ocurre",addMilestone:"Nombrar este momento",deleteMilestone:"Eliminar momento",goToMilestone:"Ir a este momento",decorWidth:"Anchura",decorLength:"Longitud",decorHeight:"Altura",decorModel:"Modelo 3D",decorModelAdvanced:"Modelo desde una dirección",decorModelUrl:"Dirección glTF/GLB",decorModelTitle:"Nombre del modelo",decorModelAuthor:"Autor",decorModelLicense:"Licencia",decorModelSource:"Procedencia",decorObserverSide:"Ubicación del observador",decorObserverSideNone:"No presente",decorSideFront:"Delante",decorSideBehind:"Detrás",decorSideLeft:"Izquierda",decorSideRight:"Derecha",decorSideFrontLeft:"Delante a la izquierda",decorSideFrontRight:"Delante a la derecha",decorSideBehindLeft:"Detrás a la izquierda",decorSideBehindRight:"Detrás a la derecha"},o={...a,oval:"Óvalo",polygon:"Polígono",modelTriangle:"Triángulo",modelSaucer:"Platillo",modelCigar:"Cigarro",modelChevron:"Chevrón",modelLight:"Luz",modelPartDisc:"disco",modelPartDome:"cúpula",addVertex:"Añadir vértice",deleteVertex:"Eliminar vértice",notAPolygon:"Selecciona una sola forma poligonal",tooFewVertices:"Una forma necesita al menos 3 puntos",shape:"Forma",apparentWidth:"Anchura aparente",realWidth:"Anchura real",distance:"Distancia",shapeRotation:"Rotación",shapeRotationTitle:"Cuánto está girada la forma en el dibujo, en sentido horario, en grados: lo que ajusta su asa de rotación",sizeLock:"Mantener",lockNone:"nada",lockApparent:"la anchura aparente",lockReal:"la anchura real",lockDistance:"la distancia",apparentSize:"{moons}× la Luna",utcOffsetPlaceholder:"según la longitud",realSizeBetween:"La escena acota esa anchura: entre {min} y {max} m, según lo que cruza",realSizeAtLeast:"La escena acota esa anchura: al menos {min} m, según lo que pasa por detrás",realSizeAtMost:"La escena acota esa anchura: como mucho {max} m, según lo que pasa por delante",realSizeUnknown:"Nada en la escena acota esa anchura: solo es lo que implica la distancia",realSizeOutside:" — la anchura de arriba queda fuera",blurBound:"Desenfocado a través de este objetivo: más cerca de {max} m",blurBoundNoInstrument:"El desenfoque a simple vista no acota ninguna distancia — un ojo no tiene diafragma con el que desenfocar",blurBoundNotAtInfinity:"El desenfoque solo acota una distancia con un objetivo enfocado al infinito: este está enfocado a {focus} m, lo que desenfoca a ambos lados",realSizeContradiction:"Contradicción: los cruces declarados no pueden ser todos ciertos",realDistanceHere:" — es decir, aquí entre {min} y {max} m",clearDistanceHypothesis:"Retirar la hipótesis de distancia",clearDistanceHypothesisTitle:"Volver a lo que establece la grabación",depthStated:"Dibujado a {m} m, como indica la grabación",depthHypothesis:"Dibujado a {m} m: tu hipótesis — lo que el decorado oculta de él es lo que perdería algo tan lejano",depthDerived:"Dibujado a {m} m, según la propia marcha del observador",depthBounded:"Dibujado a {m} m, según lo que pasa por detrás y por delante",depthConventional:"Dibujado a {m} m por convención: nada en la grabación establece una distancia",addShape:"Añadir forma",deleteShape:"Eliminar forma",play:"Reproducir",pause:"Pausa",noDuration:"Sin duración de observación",previousKeyframe:"Fotograma clave anterior",nextKeyframe:"Fotograma clave siguiente",keyframeMark:"Fotograma clave",shapesTrack:"formas",observerTrack:"observador",weatherTrack:"meteorología",soundTrack:"sonido",group:"Agrupar",ungroup:"Desagrupar",duplicate:"Duplicar",bringToFront:"Traer al frente",sendToBack:"Enviar al fondo",contextMenuDelete:"Eliminar",onlyOneShape:"Solo hay una forma",alreadyAtFront:"Esta forma ya está al frente",alreadyAtBack:"Esta forma ya está al fondo",needTwoShapesToGroup:"Selecciona al menos dos formas para agruparlas",notGrouped:"Esta forma no forma parte de un grupo",multipleShapesSelected:"Varias formas seleccionadas — selecciona solo una para editar esto",samplingRate:"Frecuencia de muestreo",currentPosition:"Posición actual",switchToElapsed:"haz clic para mostrar el tiempo transcurrido",switchToClockTime:"haz clic para mostrar la hora del día",durationPlaceholder:"duración de la observación",durationImprecise:"Estas fechas no determinan con suficiente precisión una duración — introdúcela manualmente.",export:"Guardar",frozenTitle:"Datos congelados",frozenHint:"Lo que la escena pediría si no a terceros en cada reproducción (relieve, foto del suelo, carreteras, agua, vías férreas, atmósfera alta), tomado al guardar y conservado en archivos junto a la grabación, para que se reproduzca igual sin pedir nada a nadie.",frozenLive:"Consultar las fuentes en cada reproducción (no congelar nada)",frozenRelief:"Relieve",frozenImagery:"Foto del suelo",frozenRoads:"Carreteras",frozenWater:"Agua",frozenRailways:"Vías férreas",frozenUpperAir:"Atmósfera alta",frozenMap:"Foto del mapa",fileItemRecording:"Registro",fileItemWeather:"Tiempo",fileItemPlace:"Lugar",fileItemLightPollution:"Contaminación lumínica",fileItemDecor:"Decorado",weatherStatedByObserver:"tal como la dio el observador",annexSource:"Archivo",annexStorageInline:"dentro del propio registro",annexEditorLabel:"El anexo como texto JSON",annexUnreadable:"Este archivo no es un anexo de este tipo: no se ha cambiado nada.",frozenTakenOn:"tomado el {date}",frozenPending:"se toma al guardar",frozenLiveState:"consultado en directo",frozenRefresh:"Actualizar",frozenTaking:"Tomando: {group}… {done}/{of}",frozenFailed:"{group}: la fuente no respondió, no se tomó nada.",frozenMissing:"{file} no se pudo leer: queda fuera del archivo.",frozenExported:"Guardado con {count} anexos ({size}), en un archivo que descomprimir donde se publica la grabación.",identityHint:"Nombra a alguien solo si lo consintió o publicó él mismo su testimonio; si no, bastan unas iniciales.",identityAsk:"Esta grabación nombra o sitúa a una persona. Respondes de lo que publicas: nombra a alguien solo si lo consintió, o si publicó él mismo su testimonio. Si no, bastan unas iniciales.",identityLastName:"Apellidos: {value}",identityFirstNames:"Nombre: {value}",identityNameInId:"Nombre en un identificador: {value}",identityNameInText:"Nombre en el texto: {value}",identityAddress:"Dirección: {value}",identityEmail:"Correo electrónico: {value}",identityPhone:"Número de teléfono: {value}",identityInitials:"Sustituir por iniciales",identityKeep:"Guardar de todos modos",identityBack:"Volver",importFile:"Cargar un archivo de observación",paramSummaryTitle:"Lo que indica la grabación ({n})",wholeKeyframes:"Cada fotograma clave entero",wholeKeyframesHint:"Si no, un fotograma clave solo dice lo que cambió desde el anterior, como se escribe una grabación a mano. Cambiar esto vacía el historial de deshacer.",importUrlPlaceholder:"https://…/sighting.json",inputFileFromFile:"desde su disco",inputFileFromUrl:"desde una dirección",inputFileModeHint:"Pulsar para darlo de la otra forma: un archivo suyo o una dirección",inputFileLoad:"Cargar",importError:"No se pudo cargar esa grabación — revisa el archivo o la URL e inténtalo de nuevo.",importErrorCors:'Esa dirección responde, pero el navegador no tiene permiso para leerla desde esta página. El archivo en sí está bien: su servidor debe enviarlo con la cabecera "Access-Control-Allow-Origin: *". Si no es tu servidor, eso es lo que debes pedir a su administrador.',importErrorMixedContent:"Una página segura no puede cargar una dirección que empiece por http://. Usa https:// si ese servidor lo ofrece.",importErrorUnreachable:"Nada respondió en esa dirección. Revisa cómo está escrita y que tengas conexión.",importErrorStatus:"Ese servidor respondió con un error ({status}). Probablemente la dirección es incorrecta o el archivo se ha movido.",importErrorMalformed:"Esa dirección respondió, pero lo que devolvió no es una grabación.",formatVersionError:"Este archivo indica la versión {found} de su formato; este UFO@home lee hasta la versión {supported}. Ábralo con un UFO@home más reciente.",record:"Grabar",stop:"Detener",according:"según",sourceElevation:"Relieve",sourceImagery:"Imágenes",sourceAircraft:"Tráfico aéreo",sourceFile:"Archivo",sourceKind:"Datos",placeNamePlaceholder:"Valensole, Francia",searchPlace:"Localizar",placeMatch:"Coincidencias",placeSearching:"Buscando el lugar…",placeMatchFound:"lugar encontrado",placeMatchesFound:"lugares encontrados",placeNotFound:"Ningún lugar con ese nombre",placeSearchFailed:"Búsqueda de lugares no disponible por el momento",utcOffsetNoZone:"Ninguna zona horaria marca este desfase ese día",utcOffsetImplausible:"Esta zona horaria no corresponde a la longitud introducida, cuya hora solar es UTC{solar} — aun así, la escena y el registro meteorológico obedecen a lo que se declara aquí. Vacía el campo para deducirla de la longitud.",timeZoneManual:"desconocido",altitudeAboveSeaLevel:"Altitud del observador sobre el nivel del mar — el suelo del lugar introducido fija su mínimo: un observador en los Alpes no está a 0 m.",groundAt:"suelo a {m} m",headingPlaceholder:"desconocido",edtfInvalid:"Fecha/hora EDTF no válida (p. ej. 1965-07-01T05:00, 2025-06?, 2025~).",edtfPlaceholder:"AAAA-MM-DDThh:mm[?~%] o hh:mm",observationTimeHint:"EDTF — p. ej. 1965-07-01T05:00, 2025-06? (incierto), 2025~ (aproximado), o solo 05:00 si no se conoce la fecha",observationEndTimeHint:"EDTF — p. ej. 1965-07-01T05:10, 2025-06? (incierto), 2025~ (aproximado), o solo 05:10 si no se conoce la fecha",presetsGroupLabel:"Forma del ovni",description:"Descripción",tagsPlaceholder:"separadas por comas",weather:"Meteorología",shapeGroup:"Fenómeno",shapesSubgroup:"Formas",bodiesSubgroup:"Cuerpos",launchesSubgroup:"Lanzamientos",sky:"Cielo",dataSources:"Fuentes de datos",beamsSubgroup:"Haces",lanternsSubgroup:"Farolillos",soundGroup:"Sonido",close:"Cerrar",editorKicker:"Editor de avistamiento",witnessError:e,expandTracks:"Desplegar las pistas",collapseTracks:"Plegar las pistas",addKeyframeHere:"Añadir un fotograma clave aquí",keyframeHere:"Aquí hay un fotograma clave: editarlo lo modifica",overlayHorizon:"Horizonte · inclinación {deg}°",overlayFov:"Campo de visión {v}° × {h}°",overlayWind:"Sopla hacia {point} · {speed} m/s",sectionIdentity:"Identidad",sectionProfile:"Perfil",sectionTestimony:"Testimonio",sectionVision:"Visión",sectionPerception:"Percepción",sectionCoordinates:"Coordenadas",sectionGaze:"Mirada",sectionNightSky:"Cielo nocturno",sectionPeriod:"Periodo",sectionSurvey:"Decorado tomado de un levantamiento",sectionHeard:"Lo que se oyó",sectionSoundRecording:"Grabación",sectionPicture:"Foto",sectionPose:"Pose",sectionAppearance:"Apariencia",sectionSize:"Tamaño y distancia",sectionPath:"Trayectoria",moreSettings:"Más ajustes ({n})",lessSettings:"Menos ajustes",showSettings:"Mostrar ({n} ajustes)",showSettingsOne:"Mostrar (1 ajuste)",showSettingsAny:"Mostrar",hideSettings:"Ocultar",save:"Guardar",stateNew:"Nueva grabación",panelIntroObservation:"Lo que pasó, en pocas líneas, y lo que queda por completar.",panelIntroObserver:"Quién lo vio, y con qué. Cada observador tiene su propio punto de vista en la escena.",panelIntroLocation:"Desde dónde miraba el observador, y en qué dirección.",panelIntroTemporal:"Cuándo empezó, cuánto duró, y los momentos del relato.",panelIntroDecor:"Lo que rodeaba al observador: vehículos, edificios, vegetación.",panelIntroWeather:"El tiempo que hacía, y lo que cruzaba el cielo sin ser el fenómeno: lanzamientos, haces.",panelIntroShape:"Lo que se vio, dibujado en la escena desde el punto de vista del observador.",panelIntroSound:"Lo que se oyó.",panelIntroReference:"Fotos y croquis, ajustados a la escena para compararla.",panelIntroFile:"La grabación completa, para guardar o volver a cargar.",temporalGroup:"Fecha",fileGroup:"Archivos",fileLoading:"Cargando el editor…",weatherEditedAsk:"Esta edición toca el tiempo, un dato leído dinámicamente desde {source}. ¿Quieres dejar de leerlo desde {source}?",weatherEditedStop:"Dejar de leerlo",weatherEditedKeep:"Seguir leyéndolo (deshacer mi edición)",fileEditorLabel:"El registro como texto JSON",fileSearchPhrases:{Find:"Buscar",Replace:"Reemplazar",next:"siguiente",previous:"anterior",all:"todo","match case":"mayúsculas","by word":"palabra completa",regexp:"regexp",replace:"reemplazar","replace all":"reemplazar todo",close:"cerrar","current match":"coincidencia actual","on line":"en la línea","replaced $ matches":"$ coincidencias reemplazadas","replaced match on line $":"coincidencia reemplazada en la línea $","Go to line":"Ir a la línea",go:"ir"},timeQualifierExact:"Exacta",durationPrecise:"precisa",durationIso:"imprecisa",durationModeTitle:"Decir la duración exactamente, o como se enunció: aproximadamente, entre dos duraciones",durationInvalid:"No es una duración: PT10M, PT1H30M, PT5M/PT10M…",durationHelpTitle:"Lo que acepta el texto (EDTF)",durationHelpLines:`PT45S — 45 segundos
|
|
1
|
+
const e={basisTitle:"Cómo se obtuvo este valor",basisField:"Base",howField:"Cómo",rationaleField:"Justificación",basisReset:"Base devuelta a «declarada»: el valor se volvió a escribir (era: {basis}).",lawSources:"Fuentes: {sources}",extrapolation:"Estas leyes se midieron en observaciones nocturnas: aplicarlas a una observación diurna es una extrapolación.",sectionAccountConditions:"Condiciones del testimonio",sectionViewing:"Condiciones de visión",sectionMoon:"Calibre Luna",sectionErrorParameters:"Parámetros de error de este testigo",errorModelField:"Modelo de error",delayField:"Plazo antes de este relato",delayUnit:"días",versionField:"Versión",wordField:"Palabra empleada",exposureField:"Exposición",independenceField:"Independencia",independentYes:"sin haber hablado con los otros testigos",independentNo:"tras hablar con los otros testigos",unknownChoice:"no se sabe",darkAdapted:"Adaptado a la oscuridad",correctedVision:"Vista corregida (gafas, lentillas)",glare:"Luz intensa justo antes",viewingNote:"El cristal o el parabrisas y los prismáticos se ajustan en «Visión» más arriba.",moonIntro:"El testigo muestra la Luna llena como mostró el objeto. La razón da su propio factor de tamaño angular: la única medida que hace individual la ley general. A tomar una vez por testigo.",moonField:"Luna tal como se muestra",moonHint:"Con el brazo extendido, 1 cm ≈ 1°",moonNone:"Aún no medida: se aplica la ley general ({law}).",moonFactor:"Factor ×{k}: sustituye a la ley general en todos los tamaños angulares de este testigo.",moonReal:"Luna real · 0,52°",parametersIntro:"Los errores de un mismo testigo están ligados: el mismo factor en todos sus tamaños, el mismo desfase en todas sus horas. Calculados, nunca escritos: ningún margen «±» se introduce a mano.",showMore:"Mostrar",basis:{measured:"◆ medida",stated:"declarada",derived:"deducida",assumed:"supuesta"},how:{clock:"leída en un reloj",anchored:"anclada a un evento fechado",estimated:"estimada","shown-on-the-spot":"mostrada en el lugar","arm-length-gauge":"calibre con el brazo extendido","recalled-object":"referida a un objeto conocido",instrument:"instrumento",landmark:"referencia del paisaje",occlusion:"ocultación","known-size":"tamaño conocido",triangulation:"triangulación"},status:{consolidated:"consolidada",individual:"individual",single:"estudio único",argued:"argumentada",contested:"discutida"},laws:{timeClock:"± {minutes} min (leída en un reloj)",timeAnchored:"± {minutes} min (anclada a un evento fechado)",timeEstimated:"± {minutes} min para 9 testigos de 10 (estimada)",duration:"{low} a {high}: ×/÷{factor} (log-normal)",elevationOver:"{low} a {high}: altura sobreestimada",measuredInstrument:"± {degrees}° (medida)",measuredLandmark:"± {degrees}° (según una referencia)",headingCross:"{low} a {high}: ± {degrees}°, sentido a veces invertido",sizeMoon:"{low} a {high}: factor ×{factor} del calibre Luna",sizeShown:"{low} a {high}: mostrada en el lugar, +2 a +17 %",sizeRecalled:"{low} a {high}: referida a un objeto conocido, ~30 % demasiado grande",sizeArm:"{low} a {high}: sobreestimada ×{from} a ×{to} con el brazo extendido",sizeGauge:"{low} a {high}: calibre, ± {percent} %",distanceAnchored:"Anclada: su error sigue al de aquello de lo que se deduce",distanceNotData:"No es un dato: errónea en un factor {factor} o más sin anclaje"},parameterNames:{clock:"Desfase del reloj",date:"Desfase de fecha",heading:"Rotación del rumbo",elevation:"Compresión de alturas",size:"Factor de tamaño angular",duration:"Factor de duración"},parameterScopes:{clock:"todas las horas",date:"la fecha",heading:"todos los rumbos",elevation:"todas las alturas",size:"todos los tamaños angulares",duration:"la duración y la escala de la línea de tiempo"},parameters:{clockClock:"± {minutes} min (reloj)",clockAnchored:"± {minutes} min (anclada)",clockEstimated:"± {minutes} min (estimada)",dateShift:"±1 día, mes o año; horario de verano ({percent} % de las fechas)",headingRotation:"± {degrees}°, espejo posible",elevationCompression:"sobreestimadas, nunca subestimadas",sizeMoon:"×{factor} (calibre Luna)",sizeArm:"×{from} a ×{to} con el brazo extendido",sizeShown:"+2 a +17 % mostrada en el lugar",durationFactor:"×/÷{factor} (log-normal)"},words:{light:"luz",object:"objeto",craft:"aparato",ufo:"ovni",other:"otra"},exposures:{none:"ninguna",press:"prensa",broadcast:"radio, televisión","other-witnesses":"otros testigos",investigators:"investigadores"},models:{consolidated:"Lecturas consolidadas (UFO@home)",keul:"Keul (tamaños mostrados en el lugar)"},candidates:{title:"Explicaciones candidatas",verdicts:{consolidated:"Compatible con sesgos consolidados",contested:"Solo invocando sesgos discutidos",incompatible:"Incompatible incluso en los límites"},cost:"coste {x} σ",seeVariant:"Ver esta variante",variantLabel:"Variante: {name}",backToAccount:"Volver al relato",costNote:"Un coste no es una probabilidad: dice qué sesgos hay que invocar, y cuánto.",scopeNote:"Matriz de Poher (1977) para la lista de partida; la Luna, los planetas, los pasos de satélites, las reentradas, los bólidos registrados y los aviones del registro se calculan y se confrontan con el relato.",fields:{time:"Hora",heading:"Acimut",elevation:"Altura sobre el horizonte",size:"Anchura aparente",duration:"Duración",sweep:"Recorrido en el cielo"},biases:{clock:"desfase del reloj {x} min",heading:"rotación del rumbo {x}°",elevation:"altura sobreestimada ×{x}",size:"tamaño sobreestimado ×{x}",duration:"duración mal estimada ×{x}",sweep:"recorrido mal estimado {x}°"},reasons:{"never-seen":"Nunca visible desde este lugar en el margen de la hora dada.",direction:"Demasiado lejos de la dirección dada, incluso en los límites de las leyes.",size:"Tamaño demasiado distinto, incluso en los límites de las leyes.",motion:"No se mueve como dice el relato, y nada hace leer uno por otro.",growth:"No crece como dice el relato, ni se vuelve más brillante."},readingTitle:"Lectura",readings:{grouped:"luces leídas como un solo cuerpo","still-seen-moving":"una luz fija vista en movimiento (efecto autocinético, nubes que pasan)","moving-seen-still":"una luz en movimiento vista inmóvil (llegando de frente)","brightening-as-approach":"un brillo creciente leído como un acercamiento"},notAgainst:"No es un argumento contra el relato.",noDirection:"El relato no sitúa el fenómeno en el cielo: no hay nada que confrontar.",noSky:"Sin fecha, hora y lugar, ningún astro puede situarse.",bodies:{Moon:"Luna",Venus:"Venus",Mars:"Marte",Jupiter:"Júpiter",Saturn:"Saturno"},aircraft:"Aeronave {name}",interpretation:"Interpretación: {name}",keepVariant:"Guardar esta variante",keptTitle:"Variantes guardadas ({n})",seeKept:"Ver",removeVariant:"Quitar",keptRecomputed:"calculada de nuevo: {verdict}, coste {x} σ",keptModel:"modelo: {model}",reentry:"Reentrada {name}",star:"Estrella {name}",fireball:"Bólido {name}",poherLoading:"Cargando la matriz de Poher…",poherFailed:"No se pudo leer la matriz de Poher: solo se proponen los astros.",poherTitle:"Según la matriz {version}",poherIntro:"Los demás fenómenos conocidos de la matriz, sin trayectoria calculada aquí: su nota es el juicio de Poher, a confrontar a mano.",poherIntroRr0:"Los demás fenómenos conocidos de la matriz, sin trayectoria calculada aquí: cada nota es la de Poher, o la de RR0 para lo que RR0 añade, con su razón; a confrontar a mano.",poherVersion:"Matriz",poherVersions:{"poher-1977":"de Poher (1977)","rr0-2026":"de Poher ampliada por RR0 (2026)"},poherAdded:"añadido por RR0",poherRr0Reason:"nota de RR0: {why}",poherPossible:"Posibles",poherExcluded:"Excluidos ({n})",poherExcludedBy:"excluido por: {list}",poherDoubted:"dudoso según estimaciones: {list}",poherScore:"nota {x}",poherTag:"Poher: {state}",poherStatePossible:"posible, nota {x}",poherStateExcluded:"excluido",answersTitle:"Respuestas deducidas de la grabación ({n})",firm:"firme",soft:"estimación, no excluye nada por sí sola"}},a={color:"Color",transparency:"Transparencia",halo:"Halo",blur:"Desenfoque",brightness:"Brillo",shapeTitle:"Nombre",utcOffset:"Zona horaria",cloudBase:"Base de las nubes",elevation:"Altitud",heightAboveGround:"Altura sobre el suelo",duration:"Duración",placeName:"Lugar",latitude:"Latitud",longitude:"Longitud",heading:"Orientación",pitch:"Inclinación",roll:"Alabeo",sway:"Vaivén en reposo",swayTitle:"Cuánto mueve la vista el cuerpo que sostiene el instrumento cuando no camina: 1 para una persona de pie, 0 para un trípode. Vacío: 1 (0 si el relato dice que el observador estaba paralizado)",referenceGhosts:"Reflejos en la foto",referenceFindGhosts:"Buscar reflejos",referenceGhostsSearching:"Buscando…",referenceGhostsFound:"{count} reflejos encontrados, cada uno al otro lado de su luz respecto al eje del objetivo.",referenceGhostsFoundScaled:"{count} reflejos encontrados, cada uno a {scale} veces la distancia de su luz al eje del objetivo.",referenceGhostsLow:"Quizá {count} reflejo(s): demasiado pocos para estar seguro.",referenceGhostsNone:"Ningún reflejo encontrado: ninguna mancha débil está al otro lado de una luz respecto a un mismo punto.",referenceGhostsCropped:"El eje del objetivo está desplazado del centro de la imagen: la foto fue recortada.",referenceGhostsHide:"Ocultar reflejos",referenceGhostsShow:"Mostrar reflejos",lensGlass:"A través de",lensGlassNone:"el objetivo solo",lensGlassFilter:"un filtro en el objetivo",lensGlassWindow:"una ventana",lensGlassWindscreen:"un parabrisas",lensDrops:"Gotas en el cristal",lensDropsTitle:"0 a 1: qué parte del cristal exterior cubren las gotas de agua. Vacío: según la lluvia o la nieve que cae, salvo si el cristal está a cubierto",lensCondensation:"Vaho",lensCondensationTitle:"0 a 1: vaho en el cristal, como en un objetivo que pasa del calor al frío. Vacío: ninguno",lensDirt:"Suciedad",lensDirtTitle:"0 a 1: suciedad, grasa o huellas en el cristal. Vacío: ninguna",lensSheltered:"A cubierto de la lluvia",lensShelteredTitle:"El cristal exterior estaba fuera de la lluvia o la nieve: bajo un techo, o tras un parabrisas con los limpiaparabrisas en marcha",lightPollution:"Cielo nocturno",lightPollutionTitle:"El cenit de una noche sin Luna en este lugar, en magnitudes por segundo de arco cuadrado, tal como lo lee un Sky Quality Meter o lo da el atlas mundial del brillo artificial del cielo (Falchi et al. 2016, lightpollutionmap.info, «SQM»). 22 es un cielo natural; un suburbio ronda 19, el centro de una ciudad 17. Vacío: un cielo natural",observationTime:"Inicio de la observación",observationEndTime:"Fin de la observación",assessmentGroup:"Evaluación",assessmentNames:{coverage:"Datos del observador"},assessmentVerdicts:{"hynek.nl":"NL — luz nocturna","hynek.dd":"DD — disco diurno","hynek.rv":"RV — radar-visual","hynek.ce1":"EC1 — encuentro cercano","hynek.ce2":"EC2 — con huella física","hynek.ce3":"EC3 — con entidades"},timeQualifierApproximate:"Aproximada",timeQualifierUncertain:"Incierta",timeQualifierBoth:"Incierta y aproximada",timeSeasonSpring:"Primavera",timeSeasonSummer:"Verano",timeSeasonAutumn:"Otoño",timeSeasonWinter:"Invierno",summaryGroups:{observation:"Observación",location:"Posición",temporal:"Tiempo",weather:"Clima",sound:"Sonido"},summaryGroup:"Resumen",summaryDescription:"Descripción",closeDescription:"Cerrar la descripción",observerGroup:"Observador",observerId:"ID",observerTitle:"Tratamiento",observerLastName:"Apellidos",observerFirstNames:"Nombres",sightingId:"ID",tags:"Etiquetas",cloudCover:"Nubosidad",highCloudCover:"Nubes de hielo (cirros)",focalLength:"Distancia focal",fieldOfView:"Campo de visión",aperture:"Apertura",exposure:"Exposición",focusDistance:"Enfocado a",iceCrystalAlignment:"Alineación de los cristales",rareIceCrystals:"Cristales raros",cloudDarkness:"Oscuridad de las nubes",precipitationType:"Precipitación",precipitationNone:"Ninguna",precipitationRain:"Lluvia",precipitationSnow:"Nieve",precipitationHail:"Granizo",precipitationIntensity:"Intensidad",windDirection:"Dirección del viento",windSpeed:"Velocidad del viento",storm:"Tormenta",cloudsGroup:"Nubes",precipitationGroup:"Precipitación",windGroup:"Viento",soundKind:"Sonido",soundNone:"Ninguno (silencioso)",soundHum:"Zumbido",soundWhistle:"Silbido",soundRumble:"Retumbo",soundCrackle:"Crepitación",soundVolume:"Volumen",soundPitch:"Tono",soundSrc:"Grabación",instrument:"Observado con",filter:"Delante",filterNone:"nada",filterSolarVisual:"un filtro solar para el ojo (gafas de eclipse, densidad 5)",filterSolarPhoto:"una película solar para cámara (densidad 3,8)",decorAircraft:"Aeronave",decorEntity:"Ser",decorAltitude:"Altitud",decorLights:"Luces",decorLightsNone:"ninguna",decor:"Entorno",decorBuilding:"Edificio",decorTree:"Árbol",decorShrub:"Arbusto",decorBridge:"Puente",decorWire:"Línea aérea",decorCrop:"Hilera de cultivo",decorTerrace:"Bancal (terraza)",decorMound:"Montón de piedras",decorWall:"Muro de piedra seca",decorStreetlight:"Farola",decorTrafficLight:"Semáforo",decorCrossing:"Paso de peatones",decorRoadSign:"Señal de tráfico",decorVehicle:"Vehículo",decorObserver:"Otro observador",decorEast:"Distancia al este",decorNorth:"Distancia al norte",decorHeading:"Orientación",decorColor:"Color",decorLit:"Encendido",decorTitle:"Nombre",milestones:"Momentos",milestoneLabel:"Etiqueta",milestoneNote:"Qué ocurre",addMilestone:"Nombrar este momento",deleteMilestone:"Eliminar momento",goToMilestone:"Ir a este momento",decorWidth:"Anchura",decorLength:"Longitud",decorHeight:"Altura",decorModel:"Modelo 3D",decorModelAdvanced:"Modelo desde una dirección",decorModelUrl:"Dirección glTF/GLB",decorModelTitle:"Nombre del modelo",decorModelAuthor:"Autor",decorModelLicense:"Licencia",decorModelSource:"Procedencia",decorObserverSide:"Ubicación del observador",decorObserverSideNone:"No presente",decorSideFront:"Delante",decorSideBehind:"Detrás",decorSideLeft:"Izquierda",decorSideRight:"Derecha",decorSideFrontLeft:"Delante a la izquierda",decorSideFrontRight:"Delante a la derecha",decorSideBehindLeft:"Detrás a la izquierda",decorSideBehindRight:"Detrás a la derecha"},o={...a,oval:"Óvalo",polygon:"Polígono",modelTriangle:"Triángulo",modelSaucer:"Platillo",modelCigar:"Cigarro",modelChevron:"Chevrón",modelLight:"Luz",modelPartDisc:"disco",modelPartDome:"cúpula",addVertex:"Añadir vértice",deleteVertex:"Eliminar vértice",notAPolygon:"Selecciona una sola forma poligonal",tooFewVertices:"Una forma necesita al menos 3 puntos",shape:"Forma",apparentWidth:"Anchura aparente",realWidth:"Anchura real",distance:"Distancia",shapeRotation:"Rotación",shapeRotationTitle:"Cuánto está girada la forma en el dibujo, en sentido horario, en grados: lo que ajusta su asa de rotación",sizeLock:"Mantener",lockNone:"nada",lockApparent:"la anchura aparente",lockReal:"la anchura real",lockDistance:"la distancia",apparentSize:"{moons}× la Luna",utcOffsetPlaceholder:"según la longitud",realSizeBetween:"La escena acota esa anchura: entre {min} y {max} m, según lo que cruza",realSizeAtLeast:"La escena acota esa anchura: al menos {min} m, según lo que pasa por detrás",realSizeAtMost:"La escena acota esa anchura: como mucho {max} m, según lo que pasa por delante",realSizeUnknown:"Nada en la escena acota esa anchura: solo es lo que implica la distancia",realSizeOutside:" — la anchura de arriba queda fuera",blurBound:"Desenfocado a través de este objetivo: más cerca de {max} m",blurBoundNoInstrument:"El desenfoque a simple vista no acota ninguna distancia — un ojo no tiene diafragma con el que desenfocar",blurBoundNotAtInfinity:"El desenfoque solo acota una distancia con un objetivo enfocado al infinito: este está enfocado a {focus} m, lo que desenfoca a ambos lados",realSizeContradiction:"Contradicción: los cruces declarados no pueden ser todos ciertos",realDistanceHere:" — es decir, aquí entre {min} y {max} m",clearDistanceHypothesis:"Retirar la hipótesis de distancia",clearDistanceHypothesisTitle:"Volver a lo que establece la grabación",depthStated:"Dibujado a {m} m, como indica la grabación",depthHypothesis:"Dibujado a {m} m: tu hipótesis — lo que el decorado oculta de él es lo que perdería algo tan lejano",depthDerived:"Dibujado a {m} m, según la propia marcha del observador",depthBounded:"Dibujado a {m} m, según lo que pasa por detrás y por delante",depthConventional:"Dibujado a {m} m por convención: nada en la grabación establece una distancia",addShape:"Añadir forma",deleteShape:"Eliminar forma",play:"Reproducir",pause:"Pausa",noDuration:"Sin duración de observación",previousKeyframe:"Fotograma clave anterior",nextKeyframe:"Fotograma clave siguiente",keyframeMark:"Fotograma clave",shapesTrack:"formas",observerTrack:"observador",weatherTrack:"meteorología",soundTrack:"sonido",group:"Agrupar",ungroup:"Desagrupar",duplicate:"Duplicar",bringToFront:"Traer al frente",sendToBack:"Enviar al fondo",contextMenuDelete:"Eliminar",onlyOneShape:"Solo hay una forma",alreadyAtFront:"Esta forma ya está al frente",alreadyAtBack:"Esta forma ya está al fondo",needTwoShapesToGroup:"Selecciona al menos dos formas para agruparlas",notGrouped:"Esta forma no forma parte de un grupo",multipleShapesSelected:"Varias formas seleccionadas — selecciona solo una para editar esto",samplingRate:"Frecuencia de muestreo",currentPosition:"Posición actual",switchToElapsed:"haz clic para mostrar el tiempo transcurrido",switchToClockTime:"haz clic para mostrar la hora del día",durationPlaceholder:"duración de la observación",durationImprecise:"Estas fechas no determinan con suficiente precisión una duración — introdúcela manualmente.",export:"Guardar",frozenTitle:"Datos congelados",frozenHint:"Lo que la escena pediría si no a terceros en cada reproducción (relieve, foto del suelo, carreteras, agua, vías férreas, atmósfera alta), tomado al guardar y conservado en archivos junto a la grabación, para que se reproduzca igual sin pedir nada a nadie.",frozenLive:"Consultar las fuentes en cada reproducción (no congelar nada)",frozenRelief:"Relieve",frozenImagery:"Foto del suelo",frozenRoads:"Carreteras",frozenWater:"Agua",frozenRailways:"Vías férreas",frozenUpperAir:"Atmósfera alta",frozenMap:"Foto del mapa",fileItemRecording:"Registro",fileItemWeather:"Tiempo",fileItemPlace:"Lugar",fileItemLightPollution:"Contaminación lumínica",fileItemDecor:"Decorado",weatherStatedByObserver:"tal como la dio el observador",annexSource:"Archivo",annexStorageInline:"dentro del propio registro",annexEditorLabel:"El anexo como texto JSON",annexUnreadable:"Este archivo no es un anexo de este tipo: no se ha cambiado nada.",frozenTakenOn:"tomado el {date}",frozenPending:"se toma al guardar",frozenLiveState:"consultado en directo",frozenRefresh:"Actualizar",frozenTaking:"Tomando: {group}… {done}/{of}",frozenFailed:"{group}: la fuente no respondió, no se tomó nada.",frozenMissing:"{file} no se pudo leer: queda fuera del archivo.",frozenExported:"Guardado con {count} anexos ({size}), en un archivo que descomprimir donde se publica la grabación.",identityHint:"Nombra a alguien solo si lo consintió o publicó él mismo su testimonio; si no, bastan unas iniciales.",identityAsk:"Esta grabación nombra o sitúa a una persona. Respondes de lo que publicas: nombra a alguien solo si lo consintió, o si publicó él mismo su testimonio. Si no, bastan unas iniciales.",identityLastName:"Apellidos: {value}",identityFirstNames:"Nombre: {value}",identityNameInId:"Nombre en un identificador: {value}",identityNameInText:"Nombre en el texto: {value}",identityAddress:"Dirección: {value}",identityEmail:"Correo electrónico: {value}",identityPhone:"Número de teléfono: {value}",identityInitials:"Sustituir por iniciales",identityKeep:"Guardar de todos modos",identityBack:"Volver",importFile:"Cargar un archivo de observación",paramSummaryTitle:"Lo que indica la grabación ({n})",wholeKeyframes:"Cada fotograma clave entero",wholeKeyframesHint:"Si no, un fotograma clave solo dice lo que cambió desde el anterior, como se escribe una grabación a mano. Cambiar esto vacía el historial de deshacer.",importUrlPlaceholder:"https://…/sighting.json",inputFileFromFile:"desde su disco",inputFileFromUrl:"desde una dirección",inputFileModeHint:"Pulsar para darlo de la otra forma: un archivo suyo o una dirección",inputFileLoad:"Cargar",positionRelative:"relativa",positionAbsolute:"absoluta",positionModeHint:"Pulsar para decirla de otro modo: respecto a otra cosa, o en latitud y longitud",positionNoPlace:"La grabación aún no tiene lugar: dar primero una latitud y una longitud al observador",positionFrom:"respecto a",positionObserver:"el observador",positionEast:"Este",positionNorth:"Norte",positionLatitude:"Latitud",positionLongitude:"Longitud",positionLabel:"Posición",positionBasisHint:"De dónde viene esta posición",positionBasisStated:"declarada",positionBasisMeasured:"medida",positionBasisDerived:"deducida",positionBasisAssumed:"supuesta",importError:"No se pudo cargar esa grabación — revisa el archivo o la URL e inténtalo de nuevo.",importErrorCors:'Esa dirección responde, pero el navegador no tiene permiso para leerla desde esta página. El archivo en sí está bien: su servidor debe enviarlo con la cabecera "Access-Control-Allow-Origin: *". Si no es tu servidor, eso es lo que debes pedir a su administrador.',importErrorMixedContent:"Una página segura no puede cargar una dirección que empiece por http://. Usa https:// si ese servidor lo ofrece.",importErrorUnreachable:"Nada respondió en esa dirección. Revisa cómo está escrita y que tengas conexión.",importErrorStatus:"Ese servidor respondió con un error ({status}). Probablemente la dirección es incorrecta o el archivo se ha movido.",importErrorMalformed:"Esa dirección respondió, pero lo que devolvió no es una grabación.",formatVersionError:"Este archivo indica la versión {found} de su formato; este UFO@home lee hasta la versión {supported}. Ábralo con un UFO@home más reciente.",record:"Grabar",stop:"Detener",according:"según",sourceElevation:"Relieve",sourceImagery:"Imágenes",sourceAircraft:"Tráfico aéreo",sourceFile:"Archivo",sourceKind:"Datos",placeNamePlaceholder:"Valensole, Francia",searchPlace:"Localizar",placeMatch:"Coincidencias",placeSearching:"Buscando el lugar…",placeMatchFound:"lugar encontrado",placeMatchesFound:"lugares encontrados",placeNotFound:"Ningún lugar con ese nombre",placeSearchFailed:"Búsqueda de lugares no disponible por el momento",utcOffsetNoZone:"Ninguna zona horaria marca este desfase ese día",utcOffsetImplausible:"Esta zona horaria no corresponde a la longitud introducida, cuya hora solar es UTC{solar} — aun así, la escena y el registro meteorológico obedecen a lo que se declara aquí. Vacía el campo para deducirla de la longitud.",timeZoneManual:"desconocido",altitudeAboveSeaLevel:"Altitud del observador sobre el nivel del mar — el suelo del lugar introducido fija su mínimo: un observador en los Alpes no está a 0 m.",groundAt:"suelo a {m} m",headingPlaceholder:"desconocido",edtfInvalid:"Fecha/hora EDTF no válida (p. ej. 1965-07-01T05:00, 2025-06?, 2025~).",edtfPlaceholder:"AAAA-MM-DDThh:mm[?~%] o hh:mm",observationTimeHint:"EDTF — p. ej. 1965-07-01T05:00, 2025-06? (incierto), 2025~ (aproximado), o solo 05:00 si no se conoce la fecha",observationEndTimeHint:"EDTF — p. ej. 1965-07-01T05:10, 2025-06? (incierto), 2025~ (aproximado), o solo 05:10 si no se conoce la fecha",presetsGroupLabel:"Forma del ovni",description:"Descripción",tagsPlaceholder:"separadas por comas",weather:"Meteorología",shapeGroup:"Fenómeno",shapesSubgroup:"Formas",bodiesSubgroup:"Cuerpos",launchesSubgroup:"Lanzamientos",sky:"Cielo",dataSources:"Fuentes de datos",beamsSubgroup:"Haces",lanternsSubgroup:"Farolillos",soundGroup:"Sonido",close:"Cerrar",editorKicker:"Editor de avistamiento",witnessError:e,expandTracks:"Desplegar las pistas",collapseTracks:"Plegar las pistas",addKeyframeHere:"Añadir un fotograma clave aquí",keyframeHere:"Aquí hay un fotograma clave: editarlo lo modifica",overlayHorizon:"Horizonte · inclinación {deg}°",overlayFov:"Campo de visión {v}° × {h}°",overlayWind:"Sopla hacia {point} · {speed} m/s",sectionIdentity:"Identidad",sectionProfile:"Perfil",sectionTestimony:"Testimonio",sectionVision:"Visión",sectionPerception:"Percepción",sectionCoordinates:"Coordenadas",sectionGaze:"Mirada",sectionNightSky:"Cielo nocturno",sectionPeriod:"Periodo",sectionSurvey:"Decorado tomado de un levantamiento",sectionHeard:"Lo que se oyó",sectionSoundRecording:"Grabación",sectionPicture:"Foto",sectionPose:"Pose",sectionAppearance:"Apariencia",sectionSize:"Tamaño y distancia",sectionPath:"Trayectoria",moreSettings:"Más ajustes ({n})",lessSettings:"Menos ajustes",showSettings:"Mostrar ({n} ajustes)",showSettingsOne:"Mostrar (1 ajuste)",showSettingsAny:"Mostrar",hideSettings:"Ocultar",save:"Guardar",stateNew:"Nueva grabación",panelIntroObservation:"Lo que pasó, en pocas líneas, y lo que queda por completar.",panelIntroObserver:"Quién lo vio, y con qué. Cada observador tiene su propio punto de vista en la escena.",panelIntroLocation:"Desde dónde miraba el observador, y en qué dirección.",panelIntroTemporal:"Cuándo empezó, cuánto duró, y los momentos del relato.",panelIntroDecor:"Lo que rodeaba al observador: vehículos, edificios, vegetación.",panelIntroWeather:"El tiempo que hacía, y lo que cruzaba el cielo sin ser el fenómeno: lanzamientos, haces.",panelIntroShape:"Lo que se vio, dibujado en la escena desde el punto de vista del observador.",panelIntroSound:"Lo que se oyó.",panelIntroReference:"Fotos y croquis, ajustados a la escena para compararla.",panelIntroFile:"La grabación completa, para guardar o volver a cargar.",temporalGroup:"Fecha",fileGroup:"Archivos",fileLoading:"Cargando el editor…",weatherEditedAsk:"Esta edición toca el tiempo, un dato leído dinámicamente desde {source}. ¿Quieres dejar de leerlo desde {source}?",weatherEditedStop:"Dejar de leerlo",weatherEditedKeep:"Seguir leyéndolo (deshacer mi edición)",fileEditorLabel:"El registro como texto JSON",fileSearchPhrases:{Find:"Buscar",Replace:"Reemplazar",next:"siguiente",previous:"anterior",all:"todo","match case":"mayúsculas","by word":"palabra completa",regexp:"regexp",replace:"reemplazar","replace all":"reemplazar todo",close:"cerrar","current match":"coincidencia actual","on line":"en la línea","replaced $ matches":"$ coincidencias reemplazadas","replaced match on line $":"coincidencia reemplazada en la línea $","Go to line":"Ir a la línea",go:"ir"},timeQualifierExact:"Exacta",durationPrecise:"precisa",durationIso:"imprecisa",durationModeTitle:"Decir la duración exactamente, o como se enunció: aproximadamente, entre dos duraciones",durationInvalid:"No es una duración: PT10M, PT1H30M, PT5M/PT10M…",durationHelpTitle:"Lo que acepta el texto (EDTF)",durationHelpLines:`PT45S — 45 segundos
|
|
2
2
|
PT10M — 10 minutos
|
|
3
3
|
PT1H30M — 1 hora 30 minutos
|
|
4
4
|
PT5M/PT10M — entre 5 y 10 minutos
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e={basisTitle:"Comment cette valeur a été obtenue",basisField:"Base",howField:"Comment",rationaleField:"Justification",basisReset:"Base remise à « déclarée » : la valeur a été retapée (était : {basis}).",lawSources:"Sources : {sources}",extrapolation:"Ces lois sont mesurées sur des observations de nuit : les appliquer à une observation de jour est une extrapolation.",sectionAccountConditions:"Conditions du témoignage",sectionViewing:"Conditions de vue",sectionMoon:"Jauge Lune",sectionErrorParameters:"Paramètres d'erreur de ce témoin",errorModelField:"Modèle d'erreur",delayField:"Délai avant ce récit",delayUnit:"jours",versionField:"Version",wordField:"Mot employé",exposureField:"Exposition",independenceField:"Indépendance",independentYes:"sans avoir parlé aux autres témoins",independentNo:"après avoir parlé aux autres témoins",unknownChoice:"on ne sait pas",darkAdapted:"Adapté à l'obscurité",correctedVision:"Vue corrigée (lunettes, lentilles)",glare:"Lumière vive juste avant",viewingNote:"La vitre ou le pare-brise et les jumelles se règlent dans « Vision » ci-dessus.",moonIntro:"Le témoin montre la pleine Lune comme il a montré l'objet. Le rapport donne son propre facteur de taille angulaire : la seule mesure qui rend la loi générale individuelle. À relever une fois par témoin.",moonField:"Lune telle que montrée",moonHint:"À bout de bras, 1 cm ≈ 1°",moonNone:"Pas encore mesurée : la loi générale s'applique ({law}).",moonFactor:"Facteur ×{k} : il remplace la loi générale dans toutes les tailles angulaires de ce témoin.",moonReal:"Lune réelle · 0,52°",parametersIntro:"Les erreurs d'un même témoin sont liées : il applique le même facteur à toutes ses tailles, le même décalage à toutes ses heures. Calculées, jamais saisies : aucune marge « ± » ne se tape à la main.",showMore:"Afficher",basis:{measured:"◆ mesurée",stated:"déclarée",derived:"déduite",assumed:"supposée"},how:{clock:"lue sur une horloge",anchored:"ancrée à un événement daté",estimated:"estimée","shown-on-the-spot":"montrée sur place","arm-length-gauge":"jauge à bout de bras","recalled-object":"rapportée à un objet connu",instrument:"instrument",landmark:"repère du paysage",occlusion:"occultation","known-size":"taille connue",triangulation:"triangulation"},status:{consolidated:"consolidée",individual:"individuelle",single:"étude unique",argued:"argumentée",contested:"contestée"},laws:{timeClock:"± {minutes} min (heure lue sur une horloge)",timeAnchored:"± {minutes} min (ancrée à un événement daté)",timeEstimated:"± {minutes} min pour 9 témoins sur 10 (estimée)",duration:"{low} à {high} : ×/÷{factor} (log-normale)",elevationOver:"{low} à {high} : hauteur surestimée",measuredInstrument:"± {degrees}° (mesurée)",measuredLandmark:"± {degrees}° (d'après un repère)",headingCross:"{low} à {high} : ± {degrees}°, sens parfois inversé",sizeMoon:"{low} à {high} : facteur ×{factor} de la jauge Lune",sizeShown:"{low} à {high} : montrée sur place, +2 à +17 %",sizeRecalled:"{low} à {high} : rapportée à un objet connu, ~30 % trop grande",sizeArm:"{low} à {high} : surestimée ×{from} à ×{to} à bout de bras",sizeGauge:"{low} à {high} : jauge, ± {percent} %",distanceAnchored:"Ancrée : l'erreur suit celle de ce dont elle est déduite",distanceNotData:"Pas une donnée : faux d'un facteur {factor} et plus sans ancrage"},parameterNames:{clock:"Décalage d'horloge",date:"Décalage de date",heading:"Rotation du cap",elevation:"Compression des hauteurs",size:"Facteur de taille angulaire",duration:"Facteur de durée"},parameterScopes:{clock:"toutes les heures",date:"la date",heading:"tous les caps",elevation:"toutes les hauteurs",size:"toutes les tailles angulaires",duration:"la durée et l'échelle de la timeline"},parameters:{clockClock:"± {minutes} min (horloge)",clockAnchored:"± {minutes} min (ancrée)",clockEstimated:"± {minutes} min (estimée)",dateShift:"±1 jour, mois ou année ; heure d'été ({percent} % des dates)",headingRotation:"± {degrees}°, miroir possible",elevationCompression:"surestimées, jamais sous-estimées",sizeMoon:"×{factor} (jauge Lune)",sizeArm:"×{from} à ×{to} à bout de bras",sizeShown:"+2 à +17 % montrée sur place",durationFactor:"×/÷{factor} (log-normale)"},words:{light:"lumière",object:"objet",craft:"engin",ufo:"ovni",other:"autre"},exposures:{none:"aucune",press:"presse",broadcast:"radio, télévision","other-witnesses":"autres témoins",investigators:"enquêteurs"},models:{consolidated:"Lectures consolidées (UFO@home)",keul:"Keul (tailles montrées sur place)"},candidates:{title:"Explications candidates",verdicts:{consolidated:"Compatible avec des biais consolidés",contested:"Seulement en invoquant des biais contestés",incompatible:"Incompatible même aux bornes"},cost:"coût {x} σ",seeVariant:"Voir cette variante",variantLabel:"Variante : {name}",backToAccount:"Revenir au récit",costNote:"Un coût n'est pas une probabilité : il dit quels biais il faut invoquer, et de combien.",scopeNote:"Matrice de Poher (1977) pour la liste de départ ; la Lune, les planètes, les passages de satellites, les rentrées, les bolides enregistrés et les avions du relevé sont calculés et confrontés au récit.",fields:{time:"Heure",heading:"Azimut",elevation:"Hauteur sur l'horizon",size:"Largeur apparente",duration:"Durée",sweep:"Balayage dans le ciel"},biases:{clock:"décalage d'horloge {x} min",heading:"rotation du cap {x}°",elevation:"hauteur surestimée ×{x}",size:"taille surestimée ×{x}",duration:"durée mal estimée ×{x}",sweep:"balayage mal estimé {x}°"},reasons:{"never-seen":"Jamais visible depuis ce lieu dans la marge de l'heure donnée.",direction:"Trop loin de la direction donnée, même aux bornes des lois.",size:"Taille trop différente, même aux bornes des lois.",motion:"Il ne bouge pas comme le dit le récit, et rien ne fait lire l'un pour l'autre.",growth:"Il ne grossit pas comme le dit le récit, ni ne devient plus brillant."},readingTitle:"Lecture",readings:{grouped:"des lumières lues comme un seul corps","still-seen-moving":"une lumière fixe vue en mouvement (effet autocinétique, nuages qui défilent)","moving-seen-still":"une lumière en mouvement vue immobile (arrivant de face)","brightening-as-approach":"un éclat croissant lu comme un rapprochement"},notAgainst:"Ce n'est pas un argument contre le récit.",noDirection:"Le récit ne situe pas le phénomène dans le ciel : il n'y a rien à confronter.",noSky:"Sans date, heure et lieu, aucun astre ne peut être placé.",bodies:{Moon:"Lune",Venus:"Vénus",Mars:"Mars",Jupiter:"Jupiter",Saturn:"Saturne"},aircraft:"Aéronef {name}",interpretation:"Interprétation : {name}",keepVariant:"Garder cette variante",keptTitle:"Variantes gardées ({n})",seeKept:"Voir",removeVariant:"Retirer",keptRecomputed:"calculée de nouveau : {verdict}, coût {x} σ",keptModel:"modèle : {model}",reentry:"Rentrée {name}",star:"Étoile {name}",fireball:"Bolide {name}",poherLoading:"Chargement de la matrice de Poher…",poherFailed:"La matrice de Poher n'a pas pu être lue : seuls les astres sont proposés.",poherTitle:"D'après la matrice {version}",poherIntro:"Les autres phénomènes connus de la matrice, sans trajectoire calculable ici : leur note est le jugement de Poher, à confronter à la main.",poherIntroRr0:"Les autres phénomènes connus de la matrice, sans trajectoire calculable ici : chaque note est celle de Poher, ou celle de RR0 pour ce que RR0 ajoute, avec sa raison ; à confronter à la main.",poherVersion:"Matrice",poherVersions:{"poher-1977":"de Poher (1977)","rr0-2026":"de Poher étendue par RR0 (2026)"},poherAdded:"ajouté par RR0",poherRr0Reason:"note RR0 : {why}",poherPossible:"Possibles",poherExcluded:"Exclus ({n})",poherExcludedBy:"exclu par : {list}",poherDoubted:"douteux selon des estimations : {list}",poherScore:"note {x}",poherTag:"Poher : {state}",poherStatePossible:"possible, note {x}",poherStateExcluded:"exclu",answersTitle:"Réponses déduites de l'enregistrement ({n})",firm:"ferme",soft:"estimation, n'exclut rien seule"}},r={color:"Couleur",transparency:"Transparence",halo:"Halo",blur:"Flou",brightness:"Éclat",shapeTitle:"Nom",utcOffset:"Fuseau horaire",cloudBase:"Base des nuages",elevation:"Altitude",heightAboveGround:"Hauteur au-dessus du sol",duration:"Durée",placeName:"Lieu",latitude:"Latitude",longitude:"Longitude",heading:"Orientation",pitch:"Inclinaison",roll:"Roulis",sway:"Bougé au repos",swayTitle:"Combien le corps qui tient l'instrument fait bouger la vue hors de la marche : 1 pour une personne debout, 0 pour un trépied. Vide : 1 (0 si le compte rendu dit l'observateur paralysé)",referenceGhosts:"Reflets dans la photo",referenceFindGhosts:"Chercher les reflets",referenceGhostsSearching:"Recherche…",referenceGhostsFound:"{count} reflets trouvés, chacun à l'opposé de sa lumière par rapport à l'axe de l'objectif.",referenceGhostsFoundScaled:"{count} reflets trouvés, chacun à {scale} fois l'écart de sa lumière à l'axe de l'objectif.",referenceGhostsLow:"Peut-être {count} reflet(s) : trop peu pour être sûr.",referenceGhostsNone:"Aucun reflet trouvé : aucune tache faible n'est à l'opposé d'une lumière par rapport à un même point.",referenceGhostsCropped:"L'axe de l'objectif est décalé du centre de l'image : la photo a été recadrée.",referenceGhostsHide:"Masquer les reflets",referenceGhostsShow:"Afficher les reflets",lensGlass:"À travers",lensGlassNone:"l'objectif seul",lensGlassFilter:"un filtre sur l'objectif",lensGlassWindow:"une vitre",lensGlassWindscreen:"un pare-brise",lensDrops:"Gouttes sur le verre",lensDropsTitle:"0 à 1 : quelle part du verre extérieur les gouttes d'eau couvrent. Vide : d'après la pluie ou la neige qui tombe, sauf si le verre est à l'abri",lensCondensation:"Buée",lensCondensationTitle:"0 à 1 : buée sur le verre, comme sur un objectif passé du chaud au froid. Vide : aucune",lensDirt:"Saleté",lensDirtTitle:"0 à 1 : saleté, gras ou traces de doigts sur le verre. Vide : aucune",lensSheltered:"À l'abri de la pluie",lensShelteredTitle:"Le verre extérieur était hors de la pluie ou de la neige : sous un toit, ou derrière un pare-brise dont les essuie-glaces marchent",lightPollution:"Ciel nocturne",lightPollutionTitle:"Le zénith d'une nuit sans Lune en ce lieu, en magnitudes par seconde d'arc carrée, tel qu'un Sky Quality Meter le lit ou que l'atlas mondial de la brillance artificielle du ciel (Falchi et al. 2016, lightpollutionmap.info, « SQM ») le donne. 22 est un ciel naturel ; une banlieue est vers 19, un centre-ville vers 17. Vide : un ciel naturel",observationTime:"Début de l'observation",observationEndTime:"Fin de l'observation",assessmentGroup:"Évaluation",assessmentNames:{coverage:"Infos de l'observateur"},assessmentVerdicts:{"hynek.nl":"NL — lumière nocturne","hynek.dd":"DD — disque diurne","hynek.rv":"RV — radar-visuel","hynek.ce1":"RR1 — rencontre rapprochée","hynek.ce2":"RR2 — avec trace physique","hynek.ce3":"RR3 — avec occupants"},timeQualifierApproximate:"Approximative",timeQualifierUncertain:"Incertaine",timeQualifierBoth:"Incertaine et approximative",timeSeasonSpring:"Printemps",timeSeasonSummer:"Été",timeSeasonAutumn:"Automne",timeSeasonWinter:"Hiver",summaryGroups:{observation:"Observation",location:"Position",temporal:"Moment",weather:"Météo",sound:"Son"},summaryGroup:"Résumé",summaryDescription:"Description",closeDescription:"Fermer la description",observerGroup:"Observateur",observerId:"ID",observerTitle:"Titre",observerLastName:"Nom de famille",observerFirstNames:"Prénoms",sightingId:"ID",tags:"Mots-clés",cloudCover:"Couverture nuageuse",highCloudCover:"Nuages de glace (cirrus)",focalLength:"Focale",fieldOfView:"Champ de vision",aperture:"Diaphragme",exposure:"Temps de pose",focusDistance:"Mise au point à",iceCrystalAlignment:"Alignement des cristaux",rareIceCrystals:"Cristaux rares",cloudDarkness:"Obscurité des nuages",precipitationType:"Précipitations",precipitationNone:"Aucune",precipitationRain:"Pluie",precipitationSnow:"Neige",precipitationHail:"Grêle",precipitationIntensity:"Intensité",windDirection:"Direction du vent",windSpeed:"Force du vent",storm:"Orage",cloudsGroup:"Nuages",precipitationGroup:"Précipitations",windGroup:"Vent",soundKind:"Son",soundNone:"Aucun (silencieux)",soundHum:"Bourdonnement",soundWhistle:"Sifflement",soundRumble:"Grondement",soundCrackle:"Crépitement",soundVolume:"Intensité sonore",soundPitch:"Hauteur",soundSrc:"Enregistrement",instrument:"Observé avec",filter:"Devant lui",filterNone:"rien",filterSolarVisual:"un filtre solaire pour l'œil (lunettes d'éclipse, densité 5)",filterSolarPhoto:"un film solaire pour appareil photo (densité 3,8)",decorAircraft:"Aéronef",decorEntity:"Être",decorAltitude:"Altitude",decorLights:"Feux",decorLightsNone:"aucun",decor:"Décor",decorBuilding:"Bâtiment",decorTree:"Arbre",decorShrub:"Buisson",decorBridge:"Pont",decorWire:"Ligne aérienne",decorCrop:"Rang de culture",decorTerrace:"Restanque (terrasse)",decorMound:"Tas de pierres",decorWall:"Muret de pierres sèches",decorStreetlight:"Lampadaire",decorTrafficLight:"Feu de circulation",decorCrossing:"Passage piéton",decorRoadSign:"Panneau de signalisation",decorVehicle:"Véhicule",decorObserver:"Autre observateur",decorEast:"Distance à l'est",decorNorth:"Distance au nord",decorHeading:"Orientation",decorColor:"Couleur",decorLit:"Allumé",decorTitle:"Nom",milestones:"Moments",milestoneLabel:"Repère",milestoneNote:"Ce qui se passe",addMilestone:"Nommer cet instant",deleteMilestone:"Supprimer le moment",goToMilestone:"Aller à ce moment",decorWidth:"Largeur",decorLength:"Longueur",decorHeight:"Hauteur",decorModel:"Modèle 3D",decorModelAdvanced:"Modèle depuis une adresse",decorModelUrl:"Adresse glTF/GLB",decorModelTitle:"Nom du modèle",decorModelAuthor:"Auteur",decorModelLicense:"Licence",decorModelSource:"Provenance",decorObserverSide:"Emplacement de l'observateur",decorObserverSideNone:"Non présent",decorSideFront:"Avant",decorSideBehind:"Arrière",decorSideLeft:"Gauche",decorSideRight:"Droite",decorSideFrontLeft:"Avant-gauche",decorSideFrontRight:"Avant-droit",decorSideBehindLeft:"Arrière-gauche",decorSideBehindRight:"Arrière-droit"},t={...r,oval:"Ovale",polygon:"Polygone",modelTriangle:"Triangle",modelSaucer:"Soucoupe",modelCigar:"Cigare",modelChevron:"Chevron",modelLight:"Lumière",modelPartDisc:"disque",modelPartDome:"dôme",addVertex:"Ajouter un sommet",deleteVertex:"Supprimer le sommet",notAPolygon:"Sélectionnez une seule forme polygonale",tooFewVertices:"Une forme a besoin d'au moins 3 points",shape:"Forme",apparentWidth:"Largeur apparente",realWidth:"Largeur réelle",distance:"Distance",shapeRotation:"Rotation",shapeRotationTitle:"De combien la forme est tournée sur le dessin, dans le sens horaire, en degrés : ce que règle sa poignée de rotation",sizeLock:"Maintenir",lockNone:"rien",lockApparent:"la largeur apparente",lockReal:"la largeur réelle",lockDistance:"la distance",apparentSize:"{moons}× la Lune",utcOffsetPlaceholder:"d'après la longitude",realSizeBetween:"La scène borne cette largeur : entre {min} et {max} m, d'après ce qu'il croise",realSizeAtLeast:"La scène borne cette largeur : au moins {min} m, d'après ce qu'il passe derrière",realSizeAtMost:"La scène borne cette largeur : au plus {max} m, d'après ce qu'il passe devant",realSizeUnknown:"Rien dans la scène ne borne cette largeur : elle ne fait que découler de la distance",realSizeOutside:" — la largeur ci-dessus en sort",blurBound:"Flou à travers cet objectif : plus près que {max} m",blurBoundNoInstrument:"Le flou à l'œil nu ne borne aucune distance — un œil n'a pas de diaphragme dont sortir",blurBoundNotAtInfinity:"Le flou ne borne une distance que pour une mise au point à l'infini : celle-ci est à {focus} m, qui floute des deux côtés",realSizeContradiction:"Contradiction : les passages déclarés ne peuvent pas être vrais ensemble",realDistanceHere:" — soit ici entre {min} et {max} m",clearDistanceHypothesis:"Retirer l'hypothèse de distance",clearDistanceHypothesisTitle:"Revenir à ce que l'enregistrement établit",depthStated:"Dessiné à {m} m, comme l'enregistrement l'énonce",depthHypothesis:"Dessiné à {m} m : votre hypothèse — ce que le décor en cache est ce qu'une chose à cette distance perdrait",depthDerived:"Dessiné à {m} m, d'après la marche de l'observateur",depthBounded:"Dessiné à {m} m, d'après ce qu'il passe derrière et devant",depthConventional:"Dessiné à {m} m par convention : rien dans l'enregistrement n'établit de distance",addShape:"Ajouter une forme",deleteShape:"Supprimer la forme",play:"Lecture",pause:"Pause",noDuration:"Aucune durée d'observation",previousKeyframe:"Image clé précédente",nextKeyframe:"Image clé suivante",keyframeMark:"Image clé",shapesTrack:"formes",observerTrack:"observateur",weatherTrack:"météo",soundTrack:"son",group:"Grouper",ungroup:"Dégrouper",duplicate:"Dupliquer",bringToFront:"Placer devant",sendToBack:"Placer derrière",contextMenuDelete:"Supprimer",onlyOneShape:"Il n'y a qu'une seule forme",alreadyAtFront:"Cette forme est déjà la plus en avant",alreadyAtBack:"Cette forme est déjà la plus en arrière",needTwoShapesToGroup:"Sélectionnez au moins deux formes pour les grouper",notGrouped:"Cette forme ne fait pas partie d'un groupe",multipleShapesSelected:"Plusieurs formes sélectionnées — sélectionnez-en une seule pour modifier ceci",samplingRate:"Échantillonnage",currentPosition:"Position actuelle",switchToElapsed:"cliquer pour afficher la durée écoulée",switchToClockTime:"cliquer pour afficher l'heure de l'observation",durationPlaceholder:"durée de l'observation",durationImprecise:"Ces dates ne permettent pas de déterminer précisément une durée — saisissez-la manuellement.",export:"Sauver",frozenTitle:"Données figées",frozenHint:"Ce que la scène demanderait sinon à des tiers à chaque lecture (relief, photo du sol, routes, eau, voies ferrées, haute atmosphère), relevé à la sauvegarde et gardé dans des fichiers à côté de l'enregistrement, pour qu'il se rejoue à l'identique sans rien demander à personne.",frozenLive:"Interroger les sources à chaque lecture (ne rien figer)",frozenRelief:"Relief",frozenImagery:"Photo du sol",frozenRoads:"Routes",frozenWater:"Eau",frozenRailways:"Voies ferrées",frozenUpperAir:"Haute atmosphère",frozenMap:"Photo de la carte",fileItemRecording:"Enregistrement",fileItemWeather:"Météo",fileItemPlace:"Lieu",fileItemLightPollution:"Pollution lumineuse",fileItemDecor:"Décor",weatherStatedByObserver:"telle que l'observateur l'a donnée",annexSource:"Fichier",annexStorageInline:"dans l'enregistrement même",annexEditorLabel:"L'annexe en texte JSON",annexUnreadable:"Ce fichier n'est pas une annexe de ce genre : rien n'a changé.",frozenTakenOn:"relevé le {date}",frozenPending:"relevé à la sauvegarde",frozenLiveState:"demandé en direct",frozenRefresh:"Rafraîchir",frozenTaking:"Relevé : {group}… {done}/{of}",frozenFailed:"{group} : la source n'a pas répondu, rien n'a été relevé.",frozenMissing:"{file} illisible : laissé hors de l'archive.",frozenExported:"Sauvé avec {count} annexes ({size}), en une archive à décompresser là où l'enregistrement est publié.",identityHint:"Ne nommez quelqu'un que s'il y a consenti ou a publié lui-même son témoignage ; sinon des initiales suffisent.",identityAsk:"Cet enregistrement nomme ou situe une personne. Vous répondez de ce que vous publiez : ne nommez quelqu'un que s'il y a consenti, ou s'il a publié lui-même son témoignage. Sinon, des initiales suffisent.",identityLastName:"Nom de famille : {value}",identityFirstNames:"Prénom : {value}",identityNameInId:"Nom dans un identifiant : {value}",identityNameInText:"Nom dans le texte : {value}",identityAddress:"Adresse : {value}",identityEmail:"Adresse électronique : {value}",identityPhone:"Numéro de téléphone : {value}",identityInitials:"Remplacer par des initiales",identityKeep:"Sauver quand même",identityBack:"Revenir",importFile:"Charger un fichier d'observation",paramSummaryTitle:"Ce que l'enregistrement indique ({n})",wholeKeyframes:"Chaque image clé en entier",wholeKeyframesHint:"Sinon une image clé ne dit que ce qui a changé depuis la précédente, comme on écrit un enregistrement à la main. Changer ce choix repart d'un historique d'annulation vide.",importUrlPlaceholder:"https://…/sighting.json",inputFileFromFile:"depuis votre disque",inputFileFromUrl:"depuis une adresse",inputFileModeHint:"Cliquer pour le donner autrement : un fichier à vous, ou une adresse",inputFileLoad:"Charger",importError:"Impossible de charger cet enregistrement — vérifiez le fichier ou l'URL et réessayez.",importErrorCors:"Cette adresse répond, mais le navigateur n'a pas le droit de la lire depuis cette page. Le fichier lui-même est bon : c'est son serveur qui doit envoyer l'en-tête « Access-Control-Allow-Origin: * » avec. Si ce serveur n'est pas le vôtre, c'est ce qu'il faut demander à son administrateur.",importErrorMixedContent:"Une page sécurisée ne peut pas charger une adresse commençant par http://. Utilisez https:// si ce serveur le propose.",importErrorUnreachable:"Rien n'a répondu à cette adresse. Vérifiez l'orthographe, et que vous êtes connecté.",importErrorStatus:"Ce serveur a répondu par une erreur ({status}). L'adresse est probablement fausse, ou le fichier a été déplacé.",importErrorMalformed:"Cette adresse a répondu, mais ce qui revient n'est pas un enregistrement.",formatVersionError:"Ce fichier indique la version {found} de son format ; cet UFO@home lit jusqu'à la version {supported}. Ouvrez-le avec un UFO@home plus récent.",record:"Enregistrer",stop:"Arrêter",according:"selon",sourceElevation:"Relief",sourceImagery:"Imagerie",sourceAircraft:"Trafic aérien",sourceFile:"Fichier",sourceKind:"Données",placeNamePlaceholder:"Valensole, France",searchPlace:"Localiser",placeMatch:"Correspondances",placeSearching:"Recherche du lieu…",placeMatchFound:"lieu trouvé",placeMatchesFound:"lieux trouvés",placeNotFound:"Aucun lieu de ce nom",placeSearchFailed:"Recherche de lieu momentanément indisponible",utcOffsetNoZone:"Aucun fuseau n'indique ce décalage ce jour-là",utcOffsetImplausible:"Ce fuseau ne correspond pas à la longitude saisie, dont l'heure solaire est UTC{solar} — la scène et le relevé météo obéissent pourtant à ce qui est déclaré ici. Videz le champ pour le déduire de la longitude.",timeZoneManual:"inconnu",altitudeAboveSeaLevel:"Altitude de l'observateur au-dessus du niveau de la mer — le sol du lieu saisi en fixe le minimum : un observateur dans les Alpes n'est pas à 0 m.",groundAt:"sol à {m} m",headingPlaceholder:"inconnu",edtfInvalid:"Date/heure EDTF invalide (ex. 1965-07-01T05:00, 2025-06?, 2025~).",edtfPlaceholder:"AAAA-MM-JJThh:mm[?~%] ou hh:mm",observationTimeHint:"EDTF — ex. 1965-07-01T05:00, 2025-06? (incertain), 2025~ (approximatif), ou juste 05:00 si la date est inconnue",observationEndTimeHint:"EDTF — ex. 1965-07-01T05:10, 2025-06? (incertain), 2025~ (approximatif), ou juste 05:10 si la date est inconnue",presetsGroupLabel:"Forme de l'ovni",description:"Description",tagsPlaceholder:"séparés par des virgules",weather:"Météo",shapeGroup:"Phénomène",shapesSubgroup:"Formes",bodiesSubgroup:"Corps",launchesSubgroup:"Lancements",sky:"Ciel",dataSources:"Sources des données",beamsSubgroup:"Faisceaux",lanternsSubgroup:"Lanternes",soundGroup:"Son",close:"Fermer",editorKicker:"Éditeur d'observation",witnessError:e,expandTracks:"Déployer les pistes",collapseTracks:"Replier les pistes",addKeyframeHere:"Ajouter une image clé ici",keyframeHere:"Une image clé est ici : l'éditer la modifie",overlayHorizon:"Horizon · inclinaison {deg}°",overlayFov:"Champ de vision {v}° × {h}°",overlayWind:"Souffle vers {point} · {speed} m/s",sectionIdentity:"Identité",sectionProfile:"Profil",sectionTestimony:"Témoignage",sectionVision:"Vision",sectionPerception:"Perception",sectionCoordinates:"Coordonnées",sectionGaze:"Regard",sectionNightSky:"Ciel nocturne",sectionPeriod:"Période",sectionSurvey:"Décor tiré d'un relevé",sectionHeard:"Ce qui a été entendu",sectionSoundRecording:"Enregistrement",sectionPicture:"Photo",sectionPose:"Pose",sectionAppearance:"Apparence",sectionSize:"Taille et distance",sectionPath:"Trajectoire",moreSettings:"Plus de réglages ({n})",lessSettings:"Moins de réglages",showSettings:"Afficher ({n} réglages)",showSettingsOne:"Afficher (1 réglage)",showSettingsAny:"Afficher",hideSettings:"Masquer",save:"Sauver",stateNew:"Nouvel enregistrement",panelIntroObservation:"Ce qui s'est passé, en quelques lignes, et ce qu'il reste à compléter.",panelIntroObserver:"Qui a vu, et avec quoi. Chaque observateur a son propre point de vue dans la scène.",panelIntroLocation:"D'où l'observateur regardait, et dans quelle direction.",panelIntroTemporal:"Quand cela a commencé, combien de temps cela a duré, et les moments du récit.",panelIntroDecor:"Ce qui entourait l'observateur : véhicules, bâtiments, végétation.",panelIntroWeather:"Le temps qu'il faisait, et ce qui traversait le ciel sans être le phénomène : lancements, faisceaux.",panelIntroShape:"Ce qui a été vu, dessiné dans la scène depuis le point de vue de l'observateur.",panelIntroSound:"Ce qui a été entendu.",panelIntroReference:"Photos et croquis, recalés sur la scène pour la comparer.",panelIntroFile:"Le relevé complet, à sauver ou à recharger.",temporalGroup:"Chronologie",fileGroup:"Fichiers",fileLoading:"Chargement de l'éditeur…",weatherEditedAsk:"Cette édition touche à la météo, une donnée lue dynamiquement depuis {source}. Voulez-vous désactiver sa lecture depuis {source} ?",weatherEditedStop:"Désactiver sa lecture",weatherEditedKeep:"Garder la lecture (annuler mon édition)",fileEditorLabel:"L'enregistrement en texte JSON",fileSearchPhrases:{Find:"Rechercher",Replace:"Remplacer",next:"suivant",previous:"précédent",all:"tout","match case":"casse","by word":"mot entier",regexp:"regexp",replace:"remplacer","replace all":"tout remplacer",close:"fermer","current match":"occurrence courante","on line":"à la ligne","replaced $ matches":"$ occurrences remplacées","replaced match on line $":"occurrence remplacée à la ligne $","Go to line":"Aller à la ligne",go:"aller"},timeQualifierExact:"Exacte",durationPrecise:"précise",durationIso:"imprécise",durationModeTitle:"Dire la durée exactement, ou comme elle a été énoncée : environ, entre deux durées",durationInvalid:"Pas une durée : PT10M, PT1H30M, PT5M/PT10M…",durationHelpTitle:"Ce que le texte accepte (EDTF)",durationHelpLines:`PT45S — 45 secondes
|
|
1
|
+
const e={basisTitle:"Comment cette valeur a été obtenue",basisField:"Base",howField:"Comment",rationaleField:"Justification",basisReset:"Base remise à « déclarée » : la valeur a été retapée (était : {basis}).",lawSources:"Sources : {sources}",extrapolation:"Ces lois sont mesurées sur des observations de nuit : les appliquer à une observation de jour est une extrapolation.",sectionAccountConditions:"Conditions du témoignage",sectionViewing:"Conditions de vue",sectionMoon:"Jauge Lune",sectionErrorParameters:"Paramètres d'erreur de ce témoin",errorModelField:"Modèle d'erreur",delayField:"Délai avant ce récit",delayUnit:"jours",versionField:"Version",wordField:"Mot employé",exposureField:"Exposition",independenceField:"Indépendance",independentYes:"sans avoir parlé aux autres témoins",independentNo:"après avoir parlé aux autres témoins",unknownChoice:"on ne sait pas",darkAdapted:"Adapté à l'obscurité",correctedVision:"Vue corrigée (lunettes, lentilles)",glare:"Lumière vive juste avant",viewingNote:"La vitre ou le pare-brise et les jumelles se règlent dans « Vision » ci-dessus.",moonIntro:"Le témoin montre la pleine Lune comme il a montré l'objet. Le rapport donne son propre facteur de taille angulaire : la seule mesure qui rend la loi générale individuelle. À relever une fois par témoin.",moonField:"Lune telle que montrée",moonHint:"À bout de bras, 1 cm ≈ 1°",moonNone:"Pas encore mesurée : la loi générale s'applique ({law}).",moonFactor:"Facteur ×{k} : il remplace la loi générale dans toutes les tailles angulaires de ce témoin.",moonReal:"Lune réelle · 0,52°",parametersIntro:"Les erreurs d'un même témoin sont liées : il applique le même facteur à toutes ses tailles, le même décalage à toutes ses heures. Calculées, jamais saisies : aucune marge « ± » ne se tape à la main.",showMore:"Afficher",basis:{measured:"◆ mesurée",stated:"déclarée",derived:"déduite",assumed:"supposée"},how:{clock:"lue sur une horloge",anchored:"ancrée à un événement daté",estimated:"estimée","shown-on-the-spot":"montrée sur place","arm-length-gauge":"jauge à bout de bras","recalled-object":"rapportée à un objet connu",instrument:"instrument",landmark:"repère du paysage",occlusion:"occultation","known-size":"taille connue",triangulation:"triangulation"},status:{consolidated:"consolidée",individual:"individuelle",single:"étude unique",argued:"argumentée",contested:"contestée"},laws:{timeClock:"± {minutes} min (heure lue sur une horloge)",timeAnchored:"± {minutes} min (ancrée à un événement daté)",timeEstimated:"± {minutes} min pour 9 témoins sur 10 (estimée)",duration:"{low} à {high} : ×/÷{factor} (log-normale)",elevationOver:"{low} à {high} : hauteur surestimée",measuredInstrument:"± {degrees}° (mesurée)",measuredLandmark:"± {degrees}° (d'après un repère)",headingCross:"{low} à {high} : ± {degrees}°, sens parfois inversé",sizeMoon:"{low} à {high} : facteur ×{factor} de la jauge Lune",sizeShown:"{low} à {high} : montrée sur place, +2 à +17 %",sizeRecalled:"{low} à {high} : rapportée à un objet connu, ~30 % trop grande",sizeArm:"{low} à {high} : surestimée ×{from} à ×{to} à bout de bras",sizeGauge:"{low} à {high} : jauge, ± {percent} %",distanceAnchored:"Ancrée : l'erreur suit celle de ce dont elle est déduite",distanceNotData:"Pas une donnée : faux d'un facteur {factor} et plus sans ancrage"},parameterNames:{clock:"Décalage d'horloge",date:"Décalage de date",heading:"Rotation du cap",elevation:"Compression des hauteurs",size:"Facteur de taille angulaire",duration:"Facteur de durée"},parameterScopes:{clock:"toutes les heures",date:"la date",heading:"tous les caps",elevation:"toutes les hauteurs",size:"toutes les tailles angulaires",duration:"la durée et l'échelle de la timeline"},parameters:{clockClock:"± {minutes} min (horloge)",clockAnchored:"± {minutes} min (ancrée)",clockEstimated:"± {minutes} min (estimée)",dateShift:"±1 jour, mois ou année ; heure d'été ({percent} % des dates)",headingRotation:"± {degrees}°, miroir possible",elevationCompression:"surestimées, jamais sous-estimées",sizeMoon:"×{factor} (jauge Lune)",sizeArm:"×{from} à ×{to} à bout de bras",sizeShown:"+2 à +17 % montrée sur place",durationFactor:"×/÷{factor} (log-normale)"},words:{light:"lumière",object:"objet",craft:"engin",ufo:"ovni",other:"autre"},exposures:{none:"aucune",press:"presse",broadcast:"radio, télévision","other-witnesses":"autres témoins",investigators:"enquêteurs"},models:{consolidated:"Lectures consolidées (UFO@home)",keul:"Keul (tailles montrées sur place)"},candidates:{title:"Explications candidates",verdicts:{consolidated:"Compatible avec des biais consolidés",contested:"Seulement en invoquant des biais contestés",incompatible:"Incompatible même aux bornes"},cost:"coût {x} σ",seeVariant:"Voir cette variante",variantLabel:"Variante : {name}",backToAccount:"Revenir au récit",costNote:"Un coût n'est pas une probabilité : il dit quels biais il faut invoquer, et de combien.",scopeNote:"Matrice de Poher (1977) pour la liste de départ ; la Lune, les planètes, les passages de satellites, les rentrées, les bolides enregistrés et les avions du relevé sont calculés et confrontés au récit.",fields:{time:"Heure",heading:"Azimut",elevation:"Hauteur sur l'horizon",size:"Largeur apparente",duration:"Durée",sweep:"Balayage dans le ciel"},biases:{clock:"décalage d'horloge {x} min",heading:"rotation du cap {x}°",elevation:"hauteur surestimée ×{x}",size:"taille surestimée ×{x}",duration:"durée mal estimée ×{x}",sweep:"balayage mal estimé {x}°"},reasons:{"never-seen":"Jamais visible depuis ce lieu dans la marge de l'heure donnée.",direction:"Trop loin de la direction donnée, même aux bornes des lois.",size:"Taille trop différente, même aux bornes des lois.",motion:"Il ne bouge pas comme le dit le récit, et rien ne fait lire l'un pour l'autre.",growth:"Il ne grossit pas comme le dit le récit, ni ne devient plus brillant."},readingTitle:"Lecture",readings:{grouped:"des lumières lues comme un seul corps","still-seen-moving":"une lumière fixe vue en mouvement (effet autocinétique, nuages qui défilent)","moving-seen-still":"une lumière en mouvement vue immobile (arrivant de face)","brightening-as-approach":"un éclat croissant lu comme un rapprochement"},notAgainst:"Ce n'est pas un argument contre le récit.",noDirection:"Le récit ne situe pas le phénomène dans le ciel : il n'y a rien à confronter.",noSky:"Sans date, heure et lieu, aucun astre ne peut être placé.",bodies:{Moon:"Lune",Venus:"Vénus",Mars:"Mars",Jupiter:"Jupiter",Saturn:"Saturne"},aircraft:"Aéronef {name}",interpretation:"Interprétation : {name}",keepVariant:"Garder cette variante",keptTitle:"Variantes gardées ({n})",seeKept:"Voir",removeVariant:"Retirer",keptRecomputed:"calculée de nouveau : {verdict}, coût {x} σ",keptModel:"modèle : {model}",reentry:"Rentrée {name}",star:"Étoile {name}",fireball:"Bolide {name}",poherLoading:"Chargement de la matrice de Poher…",poherFailed:"La matrice de Poher n'a pas pu être lue : seuls les astres sont proposés.",poherTitle:"D'après la matrice {version}",poherIntro:"Les autres phénomènes connus de la matrice, sans trajectoire calculable ici : leur note est le jugement de Poher, à confronter à la main.",poherIntroRr0:"Les autres phénomènes connus de la matrice, sans trajectoire calculable ici : chaque note est celle de Poher, ou celle de RR0 pour ce que RR0 ajoute, avec sa raison ; à confronter à la main.",poherVersion:"Matrice",poherVersions:{"poher-1977":"de Poher (1977)","rr0-2026":"de Poher étendue par RR0 (2026)"},poherAdded:"ajouté par RR0",poherRr0Reason:"note RR0 : {why}",poherPossible:"Possibles",poherExcluded:"Exclus ({n})",poherExcludedBy:"exclu par : {list}",poherDoubted:"douteux selon des estimations : {list}",poherScore:"note {x}",poherTag:"Poher : {state}",poherStatePossible:"possible, note {x}",poherStateExcluded:"exclu",answersTitle:"Réponses déduites de l'enregistrement ({n})",firm:"ferme",soft:"estimation, n'exclut rien seule"}},r={color:"Couleur",transparency:"Transparence",halo:"Halo",blur:"Flou",brightness:"Éclat",shapeTitle:"Nom",utcOffset:"Fuseau horaire",cloudBase:"Base des nuages",elevation:"Altitude",heightAboveGround:"Hauteur au-dessus du sol",duration:"Durée",placeName:"Lieu",latitude:"Latitude",longitude:"Longitude",heading:"Orientation",pitch:"Inclinaison",roll:"Roulis",sway:"Bougé au repos",swayTitle:"Combien le corps qui tient l'instrument fait bouger la vue hors de la marche : 1 pour une personne debout, 0 pour un trépied. Vide : 1 (0 si le compte rendu dit l'observateur paralysé)",referenceGhosts:"Reflets dans la photo",referenceFindGhosts:"Chercher les reflets",referenceGhostsSearching:"Recherche…",referenceGhostsFound:"{count} reflets trouvés, chacun à l'opposé de sa lumière par rapport à l'axe de l'objectif.",referenceGhostsFoundScaled:"{count} reflets trouvés, chacun à {scale} fois l'écart de sa lumière à l'axe de l'objectif.",referenceGhostsLow:"Peut-être {count} reflet(s) : trop peu pour être sûr.",referenceGhostsNone:"Aucun reflet trouvé : aucune tache faible n'est à l'opposé d'une lumière par rapport à un même point.",referenceGhostsCropped:"L'axe de l'objectif est décalé du centre de l'image : la photo a été recadrée.",referenceGhostsHide:"Masquer les reflets",referenceGhostsShow:"Afficher les reflets",lensGlass:"À travers",lensGlassNone:"l'objectif seul",lensGlassFilter:"un filtre sur l'objectif",lensGlassWindow:"une vitre",lensGlassWindscreen:"un pare-brise",lensDrops:"Gouttes sur le verre",lensDropsTitle:"0 à 1 : quelle part du verre extérieur les gouttes d'eau couvrent. Vide : d'après la pluie ou la neige qui tombe, sauf si le verre est à l'abri",lensCondensation:"Buée",lensCondensationTitle:"0 à 1 : buée sur le verre, comme sur un objectif passé du chaud au froid. Vide : aucune",lensDirt:"Saleté",lensDirtTitle:"0 à 1 : saleté, gras ou traces de doigts sur le verre. Vide : aucune",lensSheltered:"À l'abri de la pluie",lensShelteredTitle:"Le verre extérieur était hors de la pluie ou de la neige : sous un toit, ou derrière un pare-brise dont les essuie-glaces marchent",lightPollution:"Ciel nocturne",lightPollutionTitle:"Le zénith d'une nuit sans Lune en ce lieu, en magnitudes par seconde d'arc carrée, tel qu'un Sky Quality Meter le lit ou que l'atlas mondial de la brillance artificielle du ciel (Falchi et al. 2016, lightpollutionmap.info, « SQM ») le donne. 22 est un ciel naturel ; une banlieue est vers 19, un centre-ville vers 17. Vide : un ciel naturel",observationTime:"Début de l'observation",observationEndTime:"Fin de l'observation",assessmentGroup:"Évaluation",assessmentNames:{coverage:"Infos de l'observateur"},assessmentVerdicts:{"hynek.nl":"NL — lumière nocturne","hynek.dd":"DD — disque diurne","hynek.rv":"RV — radar-visuel","hynek.ce1":"RR1 — rencontre rapprochée","hynek.ce2":"RR2 — avec trace physique","hynek.ce3":"RR3 — avec occupants"},timeQualifierApproximate:"Approximative",timeQualifierUncertain:"Incertaine",timeQualifierBoth:"Incertaine et approximative",timeSeasonSpring:"Printemps",timeSeasonSummer:"Été",timeSeasonAutumn:"Automne",timeSeasonWinter:"Hiver",summaryGroups:{observation:"Observation",location:"Position",temporal:"Moment",weather:"Météo",sound:"Son"},summaryGroup:"Résumé",summaryDescription:"Description",closeDescription:"Fermer la description",observerGroup:"Observateur",observerId:"ID",observerTitle:"Titre",observerLastName:"Nom de famille",observerFirstNames:"Prénoms",sightingId:"ID",tags:"Mots-clés",cloudCover:"Couverture nuageuse",highCloudCover:"Nuages de glace (cirrus)",focalLength:"Focale",fieldOfView:"Champ de vision",aperture:"Diaphragme",exposure:"Temps de pose",focusDistance:"Mise au point à",iceCrystalAlignment:"Alignement des cristaux",rareIceCrystals:"Cristaux rares",cloudDarkness:"Obscurité des nuages",precipitationType:"Précipitations",precipitationNone:"Aucune",precipitationRain:"Pluie",precipitationSnow:"Neige",precipitationHail:"Grêle",precipitationIntensity:"Intensité",windDirection:"Direction du vent",windSpeed:"Force du vent",storm:"Orage",cloudsGroup:"Nuages",precipitationGroup:"Précipitations",windGroup:"Vent",soundKind:"Son",soundNone:"Aucun (silencieux)",soundHum:"Bourdonnement",soundWhistle:"Sifflement",soundRumble:"Grondement",soundCrackle:"Crépitement",soundVolume:"Intensité sonore",soundPitch:"Hauteur",soundSrc:"Enregistrement",instrument:"Observé avec",filter:"Devant lui",filterNone:"rien",filterSolarVisual:"un filtre solaire pour l'œil (lunettes d'éclipse, densité 5)",filterSolarPhoto:"un film solaire pour appareil photo (densité 3,8)",decorAircraft:"Aéronef",decorEntity:"Être",decorAltitude:"Altitude",decorLights:"Feux",decorLightsNone:"aucun",decor:"Décor",decorBuilding:"Bâtiment",decorTree:"Arbre",decorShrub:"Buisson",decorBridge:"Pont",decorWire:"Ligne aérienne",decorCrop:"Rang de culture",decorTerrace:"Restanque (terrasse)",decorMound:"Tas de pierres",decorWall:"Muret de pierres sèches",decorStreetlight:"Lampadaire",decorTrafficLight:"Feu de circulation",decorCrossing:"Passage piéton",decorRoadSign:"Panneau de signalisation",decorVehicle:"Véhicule",decorObserver:"Autre observateur",decorEast:"Distance à l'est",decorNorth:"Distance au nord",decorHeading:"Orientation",decorColor:"Couleur",decorLit:"Allumé",decorTitle:"Nom",milestones:"Moments",milestoneLabel:"Repère",milestoneNote:"Ce qui se passe",addMilestone:"Nommer cet instant",deleteMilestone:"Supprimer le moment",goToMilestone:"Aller à ce moment",decorWidth:"Largeur",decorLength:"Longueur",decorHeight:"Hauteur",decorModel:"Modèle 3D",decorModelAdvanced:"Modèle depuis une adresse",decorModelUrl:"Adresse glTF/GLB",decorModelTitle:"Nom du modèle",decorModelAuthor:"Auteur",decorModelLicense:"Licence",decorModelSource:"Provenance",decorObserverSide:"Emplacement de l'observateur",decorObserverSideNone:"Non présent",decorSideFront:"Avant",decorSideBehind:"Arrière",decorSideLeft:"Gauche",decorSideRight:"Droite",decorSideFrontLeft:"Avant-gauche",decorSideFrontRight:"Avant-droit",decorSideBehindLeft:"Arrière-gauche",decorSideBehindRight:"Arrière-droit"},t={...r,oval:"Ovale",polygon:"Polygone",modelTriangle:"Triangle",modelSaucer:"Soucoupe",modelCigar:"Cigare",modelChevron:"Chevron",modelLight:"Lumière",modelPartDisc:"disque",modelPartDome:"dôme",addVertex:"Ajouter un sommet",deleteVertex:"Supprimer le sommet",notAPolygon:"Sélectionnez une seule forme polygonale",tooFewVertices:"Une forme a besoin d'au moins 3 points",shape:"Forme",apparentWidth:"Largeur apparente",realWidth:"Largeur réelle",distance:"Distance",shapeRotation:"Rotation",shapeRotationTitle:"De combien la forme est tournée sur le dessin, dans le sens horaire, en degrés : ce que règle sa poignée de rotation",sizeLock:"Maintenir",lockNone:"rien",lockApparent:"la largeur apparente",lockReal:"la largeur réelle",lockDistance:"la distance",apparentSize:"{moons}× la Lune",utcOffsetPlaceholder:"d'après la longitude",realSizeBetween:"La scène borne cette largeur : entre {min} et {max} m, d'après ce qu'il croise",realSizeAtLeast:"La scène borne cette largeur : au moins {min} m, d'après ce qu'il passe derrière",realSizeAtMost:"La scène borne cette largeur : au plus {max} m, d'après ce qu'il passe devant",realSizeUnknown:"Rien dans la scène ne borne cette largeur : elle ne fait que découler de la distance",realSizeOutside:" — la largeur ci-dessus en sort",blurBound:"Flou à travers cet objectif : plus près que {max} m",blurBoundNoInstrument:"Le flou à l'œil nu ne borne aucune distance — un œil n'a pas de diaphragme dont sortir",blurBoundNotAtInfinity:"Le flou ne borne une distance que pour une mise au point à l'infini : celle-ci est à {focus} m, qui floute des deux côtés",realSizeContradiction:"Contradiction : les passages déclarés ne peuvent pas être vrais ensemble",realDistanceHere:" — soit ici entre {min} et {max} m",clearDistanceHypothesis:"Retirer l'hypothèse de distance",clearDistanceHypothesisTitle:"Revenir à ce que l'enregistrement établit",depthStated:"Dessiné à {m} m, comme l'enregistrement l'énonce",depthHypothesis:"Dessiné à {m} m : votre hypothèse — ce que le décor en cache est ce qu'une chose à cette distance perdrait",depthDerived:"Dessiné à {m} m, d'après la marche de l'observateur",depthBounded:"Dessiné à {m} m, d'après ce qu'il passe derrière et devant",depthConventional:"Dessiné à {m} m par convention : rien dans l'enregistrement n'établit de distance",addShape:"Ajouter une forme",deleteShape:"Supprimer la forme",play:"Lecture",pause:"Pause",noDuration:"Aucune durée d'observation",previousKeyframe:"Image clé précédente",nextKeyframe:"Image clé suivante",keyframeMark:"Image clé",shapesTrack:"formes",observerTrack:"observateur",weatherTrack:"météo",soundTrack:"son",group:"Grouper",ungroup:"Dégrouper",duplicate:"Dupliquer",bringToFront:"Placer devant",sendToBack:"Placer derrière",contextMenuDelete:"Supprimer",onlyOneShape:"Il n'y a qu'une seule forme",alreadyAtFront:"Cette forme est déjà la plus en avant",alreadyAtBack:"Cette forme est déjà la plus en arrière",needTwoShapesToGroup:"Sélectionnez au moins deux formes pour les grouper",notGrouped:"Cette forme ne fait pas partie d'un groupe",multipleShapesSelected:"Plusieurs formes sélectionnées — sélectionnez-en une seule pour modifier ceci",samplingRate:"Échantillonnage",currentPosition:"Position actuelle",switchToElapsed:"cliquer pour afficher la durée écoulée",switchToClockTime:"cliquer pour afficher l'heure de l'observation",durationPlaceholder:"durée de l'observation",durationImprecise:"Ces dates ne permettent pas de déterminer précisément une durée — saisissez-la manuellement.",export:"Sauver",frozenTitle:"Données figées",frozenHint:"Ce que la scène demanderait sinon à des tiers à chaque lecture (relief, photo du sol, routes, eau, voies ferrées, haute atmosphère), relevé à la sauvegarde et gardé dans des fichiers à côté de l'enregistrement, pour qu'il se rejoue à l'identique sans rien demander à personne.",frozenLive:"Interroger les sources à chaque lecture (ne rien figer)",frozenRelief:"Relief",frozenImagery:"Photo du sol",frozenRoads:"Routes",frozenWater:"Eau",frozenRailways:"Voies ferrées",frozenUpperAir:"Haute atmosphère",frozenMap:"Photo de la carte",fileItemRecording:"Enregistrement",fileItemWeather:"Météo",fileItemPlace:"Lieu",fileItemLightPollution:"Pollution lumineuse",fileItemDecor:"Décor",weatherStatedByObserver:"telle que l'observateur l'a donnée",annexSource:"Fichier",annexStorageInline:"dans l'enregistrement même",annexEditorLabel:"L'annexe en texte JSON",annexUnreadable:"Ce fichier n'est pas une annexe de ce genre : rien n'a changé.",frozenTakenOn:"relevé le {date}",frozenPending:"relevé à la sauvegarde",frozenLiveState:"demandé en direct",frozenRefresh:"Rafraîchir",frozenTaking:"Relevé : {group}… {done}/{of}",frozenFailed:"{group} : la source n'a pas répondu, rien n'a été relevé.",frozenMissing:"{file} illisible : laissé hors de l'archive.",frozenExported:"Sauvé avec {count} annexes ({size}), en une archive à décompresser là où l'enregistrement est publié.",identityHint:"Ne nommez quelqu'un que s'il y a consenti ou a publié lui-même son témoignage ; sinon des initiales suffisent.",identityAsk:"Cet enregistrement nomme ou situe une personne. Vous répondez de ce que vous publiez : ne nommez quelqu'un que s'il y a consenti, ou s'il a publié lui-même son témoignage. Sinon, des initiales suffisent.",identityLastName:"Nom de famille : {value}",identityFirstNames:"Prénom : {value}",identityNameInId:"Nom dans un identifiant : {value}",identityNameInText:"Nom dans le texte : {value}",identityAddress:"Adresse : {value}",identityEmail:"Adresse électronique : {value}",identityPhone:"Numéro de téléphone : {value}",identityInitials:"Remplacer par des initiales",identityKeep:"Sauver quand même",identityBack:"Revenir",importFile:"Charger un fichier d'observation",paramSummaryTitle:"Ce que l'enregistrement indique ({n})",wholeKeyframes:"Chaque image clé en entier",wholeKeyframesHint:"Sinon une image clé ne dit que ce qui a changé depuis la précédente, comme on écrit un enregistrement à la main. Changer ce choix repart d'un historique d'annulation vide.",importUrlPlaceholder:"https://…/sighting.json",inputFileFromFile:"depuis votre disque",inputFileFromUrl:"depuis une adresse",inputFileModeHint:"Cliquer pour le donner autrement : un fichier à vous, ou une adresse",inputFileLoad:"Charger",positionRelative:"relative",positionAbsolute:"absolue",positionModeHint:"Cliquer pour la dire autrement : par rapport à autre chose, ou en latitude et longitude",positionNoPlace:"L'enregistrement n'a pas encore de lieu : donner d'abord une latitude et une longitude à l'observateur",positionFrom:"par rapport à",positionObserver:"l'observateur",positionEast:"Est",positionNorth:"Nord",positionLatitude:"Latitude",positionLongitude:"Longitude",positionLabel:"Position",positionBasisHint:"D'où vient cette position",positionBasisStated:"déclarée",positionBasisMeasured:"mesurée",positionBasisDerived:"déduite",positionBasisAssumed:"supposée",importError:"Impossible de charger cet enregistrement — vérifiez le fichier ou l'URL et réessayez.",importErrorCors:"Cette adresse répond, mais le navigateur n'a pas le droit de la lire depuis cette page. Le fichier lui-même est bon : c'est son serveur qui doit envoyer l'en-tête « Access-Control-Allow-Origin: * » avec. Si ce serveur n'est pas le vôtre, c'est ce qu'il faut demander à son administrateur.",importErrorMixedContent:"Une page sécurisée ne peut pas charger une adresse commençant par http://. Utilisez https:// si ce serveur le propose.",importErrorUnreachable:"Rien n'a répondu à cette adresse. Vérifiez l'orthographe, et que vous êtes connecté.",importErrorStatus:"Ce serveur a répondu par une erreur ({status}). L'adresse est probablement fausse, ou le fichier a été déplacé.",importErrorMalformed:"Cette adresse a répondu, mais ce qui revient n'est pas un enregistrement.",formatVersionError:"Ce fichier indique la version {found} de son format ; cet UFO@home lit jusqu'à la version {supported}. Ouvrez-le avec un UFO@home plus récent.",record:"Enregistrer",stop:"Arrêter",according:"selon",sourceElevation:"Relief",sourceImagery:"Imagerie",sourceAircraft:"Trafic aérien",sourceFile:"Fichier",sourceKind:"Données",placeNamePlaceholder:"Valensole, France",searchPlace:"Localiser",placeMatch:"Correspondances",placeSearching:"Recherche du lieu…",placeMatchFound:"lieu trouvé",placeMatchesFound:"lieux trouvés",placeNotFound:"Aucun lieu de ce nom",placeSearchFailed:"Recherche de lieu momentanément indisponible",utcOffsetNoZone:"Aucun fuseau n'indique ce décalage ce jour-là",utcOffsetImplausible:"Ce fuseau ne correspond pas à la longitude saisie, dont l'heure solaire est UTC{solar} — la scène et le relevé météo obéissent pourtant à ce qui est déclaré ici. Videz le champ pour le déduire de la longitude.",timeZoneManual:"inconnu",altitudeAboveSeaLevel:"Altitude de l'observateur au-dessus du niveau de la mer — le sol du lieu saisi en fixe le minimum : un observateur dans les Alpes n'est pas à 0 m.",groundAt:"sol à {m} m",headingPlaceholder:"inconnu",edtfInvalid:"Date/heure EDTF invalide (ex. 1965-07-01T05:00, 2025-06?, 2025~).",edtfPlaceholder:"AAAA-MM-JJThh:mm[?~%] ou hh:mm",observationTimeHint:"EDTF — ex. 1965-07-01T05:00, 2025-06? (incertain), 2025~ (approximatif), ou juste 05:00 si la date est inconnue",observationEndTimeHint:"EDTF — ex. 1965-07-01T05:10, 2025-06? (incertain), 2025~ (approximatif), ou juste 05:10 si la date est inconnue",presetsGroupLabel:"Forme de l'ovni",description:"Description",tagsPlaceholder:"séparés par des virgules",weather:"Météo",shapeGroup:"Phénomène",shapesSubgroup:"Formes",bodiesSubgroup:"Corps",launchesSubgroup:"Lancements",sky:"Ciel",dataSources:"Sources des données",beamsSubgroup:"Faisceaux",lanternsSubgroup:"Lanternes",soundGroup:"Son",close:"Fermer",editorKicker:"Éditeur d'observation",witnessError:e,expandTracks:"Déployer les pistes",collapseTracks:"Replier les pistes",addKeyframeHere:"Ajouter une image clé ici",keyframeHere:"Une image clé est ici : l'éditer la modifie",overlayHorizon:"Horizon · inclinaison {deg}°",overlayFov:"Champ de vision {v}° × {h}°",overlayWind:"Souffle vers {point} · {speed} m/s",sectionIdentity:"Identité",sectionProfile:"Profil",sectionTestimony:"Témoignage",sectionVision:"Vision",sectionPerception:"Perception",sectionCoordinates:"Coordonnées",sectionGaze:"Regard",sectionNightSky:"Ciel nocturne",sectionPeriod:"Période",sectionSurvey:"Décor tiré d'un relevé",sectionHeard:"Ce qui a été entendu",sectionSoundRecording:"Enregistrement",sectionPicture:"Photo",sectionPose:"Pose",sectionAppearance:"Apparence",sectionSize:"Taille et distance",sectionPath:"Trajectoire",moreSettings:"Plus de réglages ({n})",lessSettings:"Moins de réglages",showSettings:"Afficher ({n} réglages)",showSettingsOne:"Afficher (1 réglage)",showSettingsAny:"Afficher",hideSettings:"Masquer",save:"Sauver",stateNew:"Nouvel enregistrement",panelIntroObservation:"Ce qui s'est passé, en quelques lignes, et ce qu'il reste à compléter.",panelIntroObserver:"Qui a vu, et avec quoi. Chaque observateur a son propre point de vue dans la scène.",panelIntroLocation:"D'où l'observateur regardait, et dans quelle direction.",panelIntroTemporal:"Quand cela a commencé, combien de temps cela a duré, et les moments du récit.",panelIntroDecor:"Ce qui entourait l'observateur : véhicules, bâtiments, végétation.",panelIntroWeather:"Le temps qu'il faisait, et ce qui traversait le ciel sans être le phénomène : lancements, faisceaux.",panelIntroShape:"Ce qui a été vu, dessiné dans la scène depuis le point de vue de l'observateur.",panelIntroSound:"Ce qui a été entendu.",panelIntroReference:"Photos et croquis, recalés sur la scène pour la comparer.",panelIntroFile:"Le relevé complet, à sauver ou à recharger.",temporalGroup:"Chronologie",fileGroup:"Fichiers",fileLoading:"Chargement de l'éditeur…",weatherEditedAsk:"Cette édition touche à la météo, une donnée lue dynamiquement depuis {source}. Voulez-vous désactiver sa lecture depuis {source} ?",weatherEditedStop:"Désactiver sa lecture",weatherEditedKeep:"Garder la lecture (annuler mon édition)",fileEditorLabel:"L'enregistrement en texte JSON",fileSearchPhrases:{Find:"Rechercher",Replace:"Remplacer",next:"suivant",previous:"précédent",all:"tout","match case":"casse","by word":"mot entier",regexp:"regexp",replace:"remplacer","replace all":"tout remplacer",close:"fermer","current match":"occurrence courante","on line":"à la ligne","replaced $ matches":"$ occurrences remplacées","replaced match on line $":"occurrence remplacée à la ligne $","Go to line":"Aller à la ligne",go:"aller"},timeQualifierExact:"Exacte",durationPrecise:"précise",durationIso:"imprécise",durationModeTitle:"Dire la durée exactement, ou comme elle a été énoncée : environ, entre deux durées",durationInvalid:"Pas une durée : PT10M, PT1H30M, PT5M/PT10M…",durationHelpTitle:"Ce que le texte accepte (EDTF)",durationHelpLines:`PT45S — 45 secondes
|
|
2
2
|
PT10M — 10 minutes
|
|
3
3
|
PT1H30M — 1 heure 30 minutes
|
|
4
4
|
PT5M/PT10M — entre 5 et 10 minutes
|