@rr0/ufoathome 0.39.0 → 0.41.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/README.md +21 -16
- package/dist-embed/UfoRecorderMessages_fr-7LxZuqNk.js +1 -0
- package/dist-embed/rr0-ufo-recorder.mjs +271 -232
- package/dist-embed-scene/rr0-scene.mjs +211 -211
- package/dist-embed-sighting/SightingMessages_fr-DKJ1k18-.js +1 -0
- package/{dist-embed-eyewitness/rr0-eyewitness.mjs → dist-embed-sighting/rr0-sighting.mjs} +241 -218
- package/dist-embed-ufo/rr0-ufo.mjs +3 -3
- package/package.json +12 -8
- package/dist-embed/UfoRecorderMessages_fr-hxYYq3ZS.js +0 -1
- package/dist-embed-eyewitness/EyewitnessMessages_fr-DPJ9-cd2.js +0 -1
- /package/{dist-embed-eyewitness → dist-embed-sighting}/UfoMessages_fr-Hq24iVzT.js +0 -0
- /package/{dist-embed-eyewitness → dist-embed-sighting}/rain-BvWZrB9h.ogg +0 -0
- /package/{dist-embed-eyewitness → dist-embed-sighting}/stars-mag7.5-DDr9QasD.bin +0 -0
- /package/{dist-embed-eyewitness → dist-embed-sighting}/thunder-DA48qs_v.wav +0 -0
- /package/{dist-embed-eyewitness → dist-embed-sighting}/wind-BjklexY7.ogg +0 -0
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ testimony is more faithful than an oral or written one.
|
|
|
10
10
|
Originally a Java applet (2003), the project has been rewritten from scratch in TypeScript: a small,
|
|
11
11
|
dependency-light engine (keyframe timeline, recording, playback, Canvas2D rendering) wrapped in four vanilla
|
|
12
12
|
[Web Components](https://developer.mozilla.org/en-US/docs/Web/API/Web_components) — no UI framework, no build step
|
|
13
|
-
required by the consuming page. Two of the four (`<rr0-scene>`, and `<rr0-
|
|
13
|
+
required by the consuming page. Two of the four (`<rr0-scene>`, and `<rr0-sighting>` which always composes it) pull
|
|
14
14
|
in [Three.js](https://threejs.org/) for the 3D backdrop — see [`<rr0-scene>`](#rr0-scene--3d-decor) below for why
|
|
15
15
|
that's an isolated, opt-in bundle rather than a project-wide dependency.
|
|
16
16
|
|
|
@@ -22,7 +22,7 @@ its default behavior and `<rr0-ufo-recorder>` is the one that needs a qualifier
|
|
|
22
22
|
real-world time and place, with no UFO-specific logic of its own — today it composes a nested `<rr0-ufo>` for the
|
|
23
23
|
common case (see its section below), but the decor itself could back other kinds of reconstructions later. A fully
|
|
24
24
|
generic version (accepting arbitrary overlay content instead of always creating its own `<rr0-ufo>`) is a natural
|
|
25
|
-
follow-up, not implemented yet. `<rr0-
|
|
25
|
+
follow-up, not implemented yet. `<rr0-sighting>` (renamed from `<rr0-ufo-witnesses>` — see below) is the standard
|
|
26
26
|
way to display any real sighting, whether it has one witness or several: a witness account always implies a real
|
|
27
27
|
place and time, so it always composes `<rr0-scene>`, never a bare `<rr0-ufo>`.
|
|
28
28
|
|
|
@@ -43,7 +43,7 @@ imported, no explicit setup call needed:
|
|
|
43
43
|
<script type="module" src="/node_modules/@rr0/ufoathome/dist-embed-ufo/rr0-ufo.mjs"></script>
|
|
44
44
|
<script type="module" src="/node_modules/@rr0/ufoathome/dist-embed/rr0-ufo-recorder.mjs"></script>
|
|
45
45
|
<script type="module" src="/node_modules/@rr0/ufoathome/dist-embed-scene/rr0-scene.mjs"></script>
|
|
46
|
-
<script type="module" src="/node_modules/@rr0/ufoathome/dist-embed-
|
|
46
|
+
<script type="module" src="/node_modules/@rr0/ufoathome/dist-embed-sighting/rr0-sighting.mjs"></script>
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
or, from a bundler:
|
|
@@ -52,10 +52,10 @@ or, from a bundler:
|
|
|
52
52
|
import "@rr0/ufoathome/ufo" // registers <rr0-ufo>
|
|
53
53
|
import "@rr0/ufoathome/recorder" // registers <rr0-ufo-recorder> (and <rr0-scene>, which it composes)
|
|
54
54
|
import "@rr0/ufoathome/scene" // registers <rr0-scene> (and <rr0-ufo>, which it composes)
|
|
55
|
-
import "@rr0/ufoathome/eyewitness" // registers <rr0-
|
|
55
|
+
import "@rr0/ufoathome/eyewitness" // registers <rr0-sighting> (and <rr0-scene>, which it composes)
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
-
Only load the one(s) a given page actually needs — `rr0-scene.mjs` and `rr0-
|
|
58
|
+
Only load the one(s) a given page actually needs — `rr0-scene.mjs` and `rr0-sighting.mjs` in particular pull in
|
|
59
59
|
Three.js and are far heavier than the other two (see their sections below), so pages that just need playback of an
|
|
60
60
|
already-drawn shape with no astronomy backdrop should stick to `rr0-ufo.mjs`.
|
|
61
61
|
|
|
@@ -101,7 +101,12 @@ bar show real clock times when `time` has an hour (e.g. `02:45` → `02:50`); ot
|
|
|
101
101
|
duration actually available (the declared one if known, else the recording's own length). Playback loops by
|
|
102
102
|
default — click the loop button (pressed = looping) to play once and stop instead.
|
|
103
103
|
|
|
104
|
-
Clicking anywhere on the canvas also toggles Play/Pause (not just the button),
|
|
104
|
+
Clicking anywhere on the canvas also toggles Play/Pause (not just the button), and DOUBLE-clicking it toggles
|
|
105
|
+
fullscreen — both matching common video-player UX. A double-click is two clicks first, so click-to-play has
|
|
106
|
+
already fired twice by the time it arrives; playback is put back where it stood rather than left wherever that
|
|
107
|
+
pair happened to leave it (a recording stopped at its own end is restarted by the first of them). Both gestures
|
|
108
|
+
are governed by `enableClickToPlay`: where a composing element has taken the canvas over for something else — the
|
|
109
|
+
recorder edits shapes on it — neither belongs to playback.
|
|
105
110
|
While playing, the toolbar and the fullscreen button (top-right, semi-transparent over the content) auto-hide and
|
|
106
111
|
only reappear on hover — always shown while paused/stopped. The fullscreen button uses the standard Fullscreen API
|
|
107
112
|
(`requestFullscreen`/`exitFullscreen`); exiting with Escape is native browser behavior, nothing custom.
|
|
@@ -150,7 +155,7 @@ Usage: click **Record**, move the pointer over the canvas to draw the UFO's path
|
|
|
150
155
|
replay it. The nested `<rr0-ufo>`'s `enableClickToPlay` is set to `false` here — a completed recording drag also
|
|
151
156
|
fires a native "click" on the canvas, which would otherwise spuriously toggle playback right after recording.
|
|
152
157
|
|
|
153
|
-
All of the toolbar's own labels (shape presets, Color/Transparency/Halo, Add shape, Record/Stop, Export
|
|
158
|
+
All of the toolbar's own labels (shape presets, Color/Transparency/Halo, Add shape, Record/Stop, Export,
|
|
154
159
|
Duration) are translated (English/French) the same way `<rr0-ufo>`'s own labels are — based on
|
|
155
160
|
the host page's own `lang` then `navigator.languages`, no picker UI.
|
|
156
161
|
|
|
@@ -310,7 +315,7 @@ The UFO shape itself deliberately stays a 2D overlay on top of the 3D decor, nev
|
|
|
310
315
|
what the witness reported — possibly a misidentification or optical effect — not something to interpret as a real
|
|
311
316
|
3D shape. Only the surrounding environment, independently computable from real astronomy, is rendered in 3D.
|
|
312
317
|
|
|
313
|
-
## `<rr0-
|
|
318
|
+
## `<rr0-sighting>` — standard sighting view
|
|
314
319
|
|
|
315
320
|
The standard way to display any real sighting, whether it has one witness or several — renamed from
|
|
316
321
|
`<rr0-ufo-witnesses>` once it stopped being just a multi-witness selector (see [Naming](#naming)). It composes a
|
|
@@ -318,7 +323,7 @@ nested `<rr0-scene>` (not a bare `<rr0-ufo>`) the same way `<rr0-ufo-recorder>`
|
|
|
318
323
|
always a real sighting and always needs the real sky/ground backdrop.
|
|
319
324
|
|
|
320
325
|
```html
|
|
321
|
-
<rr0-
|
|
326
|
+
<rr0-sighting src="sighting.json"></rr0-sighting>
|
|
322
327
|
```
|
|
323
328
|
|
|
324
329
|
`src` accepts either a single witness's `sighting.json` directly (the common case — no extra file needed) or, for
|
|
@@ -379,11 +384,11 @@ A footer row holds the app's own name/version on the left — linking to that ve
|
|
|
379
384
|
fold-outs on the right, both closed until asked for:
|
|
380
385
|
|
|
381
386
|
- **Embed** hands out the two self-contained lines it takes to put this observation on any other page, either as a
|
|
382
|
-
replay (`<rr0-
|
|
387
|
+
replay (`<rr0-sighting>`) or as the editor (`<rr0-ufo-recorder>`), with absolute URLs and a copy button:
|
|
383
388
|
|
|
384
389
|
```html
|
|
385
|
-
<script type="module" src="https://rr0.org/science/crypto/ufo/rr0-
|
|
386
|
-
<rr0-
|
|
390
|
+
<script type="module" src="https://rr0.org/science/crypto/ufo/rr0-sighting.mjs"></script>
|
|
391
|
+
<rr0-sighting src="https://rr0.org/science/crypto/ufo/enquete/dossier/Socorro/sighting.json"></rr0-sighting>
|
|
387
392
|
```
|
|
388
393
|
|
|
389
394
|
The script URL is derived from where the running bundle was itself loaded from (`import.meta.url`), never
|
|
@@ -409,7 +414,7 @@ interface SightingRecordingJson {
|
|
|
409
414
|
utcOffsetHours?: number // the LEGAL time zone the witness's clock was on (+1 for France in 1965, -7 for New Mexico in April 1964). Absent = approximated from the longitude, which cannot know legal time or a daylight-saving switch
|
|
410
415
|
place?: { lat: number, lng: number, name?: string }[] // `name` is the fully qualified place name the coordinates were resolved from — see Naming a place
|
|
411
416
|
witness?: { id?: string, dirName?: string, title?: string, lastName?: string, firstNames?: string[] } // every field optional — supply whichever is known; omit entirely for an anonymous witness
|
|
412
|
-
caseId?: string // shared by every witness's own sighting.json for the same case — see <rr0-
|
|
417
|
+
caseId?: string // shared by every witness's own sighting.json for the same case — see <rr0-sighting>
|
|
413
418
|
description?: string
|
|
414
419
|
tags?: string[]
|
|
415
420
|
timeline: {
|
|
@@ -800,10 +805,10 @@ case's `sighting.json` from its `RR0Event`).
|
|
|
800
805
|
- `src/component/` — the four Web Components. `UfoElement` (`<rr0-ufo>`) owns the canvas/playback; `SceneElement`
|
|
801
806
|
(`<rr0-scene>`) composes it directly (via `document.createElement`, not an inline template tag — see the
|
|
802
807
|
comment at that call site) rather than duplicating it, adding the 3D decor on top. `UfoRecorderElement` and
|
|
803
|
-
`
|
|
808
|
+
`SightingElement` (`<rr0-sighting>`) both compose a `SceneElement` in turn (not `UfoElement` directly) —
|
|
804
809
|
the recorder reaches through to its public `ufoElement` property for the actual canvas/timeline/appearance work
|
|
805
810
|
(the toolbar edits the exact same `Sighting` instance the nested scene renders from, so an observer/time/
|
|
806
|
-
appearance change needs no separate sync step to reach the sky), while `
|
|
811
|
+
appearance change needs no separate sync step to reach the sky), while `SightingElement` reaches through to
|
|
807
812
|
its public `sightingData`/`currentTerrainAttribution` for its own toolbar (witness picker) and info panel.
|
|
808
813
|
- Playback linearly interpolates shapes between a source's surrounding keyframes for smooth motion
|
|
809
814
|
(`Timeline.getInterpolatedShapeAt`/`Shape.lerpShape`), holding at the ends of its recorded range.
|
|
@@ -820,7 +825,7 @@ npm run build # type-check + build the demo
|
|
|
820
825
|
npm run build:embed # build dist-embed/rr0-ufo-recorder.mjs
|
|
821
826
|
npm run build:embed-ufo # build dist-embed-ufo/rr0-ufo.mjs
|
|
822
827
|
npm run build:embed-scene # build dist-embed-scene/rr0-scene.mjs
|
|
823
|
-
npm run build:embed-
|
|
828
|
+
npm run build:embed-sighting # build dist-embed-sighting/rr0-sighting.mjs
|
|
824
829
|
npm run build:all # all four
|
|
825
830
|
npm run build:site # ufoathome.org, into dist-site/
|
|
826
831
|
npm run build:comets # regenerate the comet catalog from JPL Horizons
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={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",observationTime:"Début de l'observation",observationEndTime:"Fin de l'observation",witnessGroup:"Témoin",witnessId:"ID témoin",witnessTitle:"Titre du témoin",witnessLastName:"Nom de famille du témoin",witnessFirstNames:"Prénoms du témoin",caseId:"ID de l'affaire",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",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",soundKind:"Son",soundNone:"Aucun (silencieux)",soundHum:"Bourdonnement",soundWhistle:"Sifflement",soundRumble:"Grondement",soundCrackle:"Crépitement",soundVolume:"Intensité sonore",soundPitch:"Hauteur",soundSrc:"Enregistrement",instrument:"Observé avec",decorAircraft:"Aéronef",decorAltitude:"Altitude",decorLights:"Feux",decorLightsNone:"aucun",decor:"Environnement",decorBuilding:"Bâtiment",decorTree:"Arbre",decorStreetlight:"Lampadaire",decorVehicle:"Véhicule",decorWitness:"Autre témoin",decorEast:"Distance à l'est",decorNorth:"Distance au nord",decorHeading:"Orientation",decorLit:"Allumé",decorTitle:"Nom",decorFloors:"Étages",decorOccupiedFloor:"Étage occupé",decorWitnessSide:"Emplacement du témoin",decorWitnessSideNone:"Non présent",decorWindows:"Fenêtres",decorSideFront:"Avant",decorSideBehind:"Arrière",decorSideLeft:"Gauche",decorSideRight:"Droite",decorSideFrontLeft:"Avant-gauche",decorSideFrontRight:"Avant-droit",decorSideBehindLeft:"Arrière-gauche",decorSideBehindRight:"Arrière-droit"},i={...e,oval:"Ovale",polygon:"Polygone",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",objectSize:"Essayer une taille",objectDistance:"à une distance de",apparentSize:"soit {deg}° — {moons}× la Lune",utcOffsetPlaceholder:"d'après la longitude",objectSizePlaceholder:"largeur supposée",objectDistancePlaceholder:"distance supposée",realSizeBetween:"Largeur réelle : entre {min} et {max} m, d'après ce qu'il croise",realSizeAtLeast:"Largeur réelle : au moins {min} m, d'après ce qu'il passe derrière",realSizeAtMost:"Largeur réelle : au plus {max} m, d'après ce qu'il passe devant",realSizeUnknown:"Largeur réelle indéterminée : rien dans la scène ne croise sa ligne de visée",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",addShape:"Ajouter une forme",deleteShape:"Supprimer la forme",play:"Lecture",pause:"Pause",noDuration:"Aucune durée d'observation",autoReplay:"Lecture automatique",group:"Grouper",ungroup:"Dégrouper",bringToFront:"Placer devant",sendToBack:"Placer derrière",contextMenuDelete:"Supprimer",confirmDeleteShape:"Supprimer {name} ? Cette action est irréversible.",confirmDeleteShapes:"Supprimer {count} formes ? Cette action est irréversible.",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:"Exporter",importFile:"Charger un fichier JSON",importUrl:"Ou charger depuis une URL",importUrlPlaceholder:"https://…/sighting.json",importButton:"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.",record:"Enregistrer",stop:"Arrêter",according:"selon",sourceElevation:"Relief",sourceImagery:"Imagerie",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",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:"décalage saisi",altitudeAboveSeaLevel:"Altitude du témoin au-dessus du niveau de la mer — le sol du lieu saisi en fixe le minimum : un témoin 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",witnessDirName:"Répertoire du témoin",description:"Description",tagsPlaceholder:"séparés par des virgules",weather:"Météo",shapeGroup:"Phénomène",soundGroup:"Son",temporalGroup:"Moment",timeQualifierExact:"Exacte",timeQualifierApproximate:"Approximative",timeQualifierUncertain:"Incertaine",timeQualifierBoth:"Incertaine et approximative",edtfModeTitle:"Saisir plutôt une date imprécise : une année seule, un mois, une heure sans date",locationGroup:"Lieu",observationGroup:"Observation",weatherWhilePlaying:"Mettez la lecture en pause pour décrire le temps — pendant qu'elle tourne, l'instant où ceci s'écrirait se déplace",weatherInferred:"D'après les relevés",weatherInferredTitle:"La météo n'est pas un témoignage : c'est un fait mesurable, relevé pour la date, l'heure et le lieu de l'observation. Décochez pour saisir les conditions rapportées par le témoin, qui priment alors sur le relevé.",weatherLookingUp:"Recherche du relevé…",weatherNeedsDateAndPlace:"Date complète et lieu requis pour retrouver le relevé",weatherNoRecord:"Aucun relevé pour cette date et ce lieu",weatherLookupFailed:"Relevés météo momentanément inaccessibles",instrumentOutOfPeriod:"{name} — hors de son époque",unitMillimetres:"mm",unitDegrees:"°",soundSrcPlaceholder:"URL d'un enregistrement réel",skyLine:"Ciel : {parts}",skyDetails:"Voir le détail des relevés",skyDetailsHide:"Masquer le détail des relevés",skyShowerActive:"{name} — radiant à {altitude}° de hauteur, {bearing} — environ {rate}/h sous ce ciel, sur un fond sporadique de {sporadic}/h",skyShowerBelowHorizon:"{name} est actif, mais son radiant est sous l'horizon — il n'a rien pu produire",skyNothingActive:"aucune pluie de météores active à cette date — un fond sporadique d'environ {sporadic}/h",showMeteor:"Montrer un météore",skyComet:"La {name}, magnitude {magnitude}, à {altitude}° de hauteur {bearing}, queue longue de {tail}°",skyCometNoTail:"La {name}, magnitude {magnitude}, à {altitude}° de hauteur {bearing}",skyCometBelowHorizon:"La {name} était là, magnitude {magnitude}, mais sous l'horizon — personne ici ne l'a vue",skyCometInDaylight:"La {name}, magnitude {magnitude}, à {altitude}° de hauteur {bearing} — mais à {elongation}° du Soleil seulement",showComet:"Montrer la comète",skyOpticsPossible:"nuages de glace suffisants, autour {source}, pour {forms}",skyOpticsAlignment:" — tout sauf les halos exige des cristaux tombant à plat, ici supposés alignés à {alignment} %, qu'aucun relevé ne donne",skyOpticsHalo22:"un halo à {angle}°",skyOpticsHalo46:"un halo à {angle}°",skyOpticsParhelia:"des parhélies à {angle}° de part et d'autre",skyOpticsTangentArc:"un arc tangent au sommet",skyOpticsParhelicCircle:"un cercle parhélique blanc faisant le tour du ciel à sa hauteur",skyOpticsCircumzenithal:"un arc circumzénithal à {angle}° de hauteur",skyOpticsCircumhorizontal:"un arc circumhorizontal très au-dessous",skyOpticsPillar:"un pilier dressé au-dessus",skyOpticsNoIce:"aucun nuage de glace : ni halo ni parhélie",skyOpticsHidden:"des nuages de glace en altitude, mais une couche plus basse les cache",skyOpticsSun:"du Soleil",skyOpticsMoon:"de la Lune",skyBowPossible:"pluie et soleil suffisants pour {forms}",skyBowMoon:"pluie sous une Lune éclairée à {lit} %, de quoi former {forms} — un arc-en-ciel lunaire, que l'œil voit blanc",skyGlowBand:"la Voie lactée à {contrast}× le fond du ciel, à {altitude}° de hauteur {bearing}",skyGlowCone:"la lumière zodiacale à {contrast}× le fond du ciel, à {altitude}° de hauteur {bearing}, à {elongation}° du Soleil — un cône penché, sans bord, disparu dans l'heure",skyGlowZodiacalBand:"la bande zodiacale à {contrast}× le fond du ciel, à {altitude}° de hauteur {bearing} — toute l'écliptique faiblement allumée, ce qui n'est pas ce que les gens rapportent",skyGlowMoon:"ni Voie lactée ni lumière zodiacale : une Lune éclairée à {lit} % tenait le ciel à {sky} magnitudes par seconde d'arc, là où il leur en faut 22",skyGlowTwilight:"ni Voie lactée ni lumière zodiacale : le crépuscule tenait encore le ciel à {sky} magnitudes par seconde d'arc, là où il leur en faut 22",skyGlowNothingUp:"ciel assez noir ({sky} magnitudes par seconde d'arc), mais ni le plan de la Galaxie ni l'écliptique ne s'y tenaient assez haut",skyBowPrimary:"un arc de {radius}° de rayon, dont le sommet montait à {top}°",skyBowSecondary:"un second, plus pâle, à {radius}°, aux couleurs inversées",skyBowSourceTooHigh:"pluie, mais l'astre à {altitude}° de hauteur : aucun arc ne pouvait dépasser l'horizon, ils se tiennent à {radius}° du point opposé",skyBowHidden:"pluie, mais une couche continue entre elle et la lumière : aucun arc",skyBowNoSource:"pluie, et rien d'allumé pour en tirer un arc",skySatellitesLit:"l'ombre de la Terre montait à {height} km au-dessus du témoin, l'orbite basse était donc encore éclairée — {count} objets suivis étaient en orbite ce mois-là",skySatellitesLitWith:"l'ombre de la Terre montait à {height} km au-dessus du témoin, l'orbite basse était donc encore éclairée — {count} objets suivis étaient en orbite ce mois-là, dont {eras}",skySatellitesShadowed:"l'ombre de la Terre montait à {height} km au-dessus du témoin : sur les {count} objets suivis en orbite ce mois-là, rien en orbite basse n'était éclairé",skySatellitesNotYet:"rien n'était encore en orbite",skySatellitesDaylight:"tout ce qui est en orbite était éclairé, comme toujours de jour, et {eras} pouvaient l'emporter même sur ce ciel",skySatellitesDaylightOne:"tout ce qui est en orbite était éclairé, comme toujours de jour, et {eras} pouvait l'emporter même sur ce ciel",skyUnknown:"indéterminable sans date ni lieu",lookAtDecor:"Regarder cet élément",addDecor:"Ajouter",deleteDecor:"Supprimer l'élément de décor",decorSightingUrl:"URL de l'enregistrement du témoin",viewTestimony:"Voir le témoignage",noWitnessRecording:"Aucune URL d'enregistrement définie pour ce témoin",masks:"Masque",addWitness:"Ajouter un témoin"};export{i as ufoRecorderMessages_fr};
|