@elite-dangerous-almanac/core 0.2.4 → 0.2.6
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/PROVENANCE/i18n/SOURCES.md +118 -94
- package/PROVENANCE/materials/SOURCES.md +22 -0
- package/PROVENANCE/ships/SOURCES.md +33 -6
- package/README.md +14 -8
- package/assets/ships/LakonMiner/schematic-bottom.svg +5 -3
- package/assets/ships/LakonMiner/schematic-top.svg +2 -4
- package/dist/chunk-3CKWT2F3.js +1 -0
- package/dist/{chunk-7ZERP4TB.js.map → chunk-3CKWT2F3.js.map} +1 -1
- package/dist/{chunk-A7KNIFRU.js → chunk-3P455LF4.js} +1 -1
- package/dist/{chunk-A7KNIFRU.js.map → chunk-3P455LF4.js.map} +1 -1
- package/dist/chunk-5QSCLEEB.js +1 -0
- package/dist/chunk-5QSCLEEB.js.map +1 -0
- package/dist/{chunk-4TFAZX73.js → chunk-773VO2GK.js} +1 -1
- package/dist/{chunk-7EWZGDWY.js → chunk-7S7ZTZZY.js} +1 -1
- package/dist/chunk-A5TCT2AJ.js +1 -0
- package/dist/{chunk-AIEC3LBT.js.map → chunk-A5TCT2AJ.js.map} +1 -1
- package/dist/chunk-AAU7OM47.js +1 -0
- package/dist/chunk-AAU7OM47.js.map +1 -0
- package/dist/{chunk-3LZXB2MC.js → chunk-ABSDZINM.js} +1 -1
- package/dist/{chunk-DSMLYA2M.js → chunk-BMQM4JBL.js} +1 -1
- package/dist/{chunk-DSMLYA2M.js.map → chunk-BMQM4JBL.js.map} +1 -1
- package/dist/chunk-E3AUKPSQ.js +1 -0
- package/dist/{chunk-G2VSQFD6.js.map → chunk-E3AUKPSQ.js.map} +1 -1
- package/dist/chunk-EFQOUATZ.js +1 -0
- package/dist/chunk-EFQOUATZ.js.map +1 -0
- package/dist/chunk-GISL7YML.js +1 -0
- package/dist/chunk-GISL7YML.js.map +1 -0
- package/dist/chunk-IZIIGK3W.js +1 -0
- package/dist/{chunk-TW7LUBHD.js.map → chunk-IZIIGK3W.js.map} +1 -1
- package/dist/chunk-KBCA4GEZ.js +1 -0
- package/dist/chunk-KLC5XT6F.js +1 -0
- package/dist/chunk-KLC5XT6F.js.map +1 -0
- package/dist/chunk-LOWDDWDT.js +1 -0
- package/dist/{chunk-GLWPSVFV.js.map → chunk-LOWDDWDT.js.map} +1 -1
- package/dist/chunk-MRLUWHGI.js +1 -0
- package/dist/{chunk-FF2X4K5P.js.map → chunk-MRLUWHGI.js.map} +1 -1
- package/dist/chunk-NBLLW7TH.js +1 -0
- package/dist/chunk-NBLLW7TH.js.map +1 -0
- package/dist/{chunk-IWFQ4ZKF.js → chunk-OFZGNWBT.js} +1 -1
- package/dist/chunk-PF3HZ73R.js +1 -0
- package/dist/{chunk-ITKZKREP.js.map → chunk-PF3HZ73R.js.map} +1 -1
- package/dist/{chunk-KGJCTSVV.js → chunk-S3MONE55.js} +1 -1
- package/dist/chunk-S3MONE55.js.map +1 -0
- package/dist/{chunk-OLKNYGGT.js → chunk-SDXUPP4P.js} +1 -1
- package/dist/chunk-XFDMCPDW.js +1 -0
- package/dist/{chunk-GRSNX36B.js.map → chunk-XFDMCPDW.js.map} +1 -1
- package/dist/chunk-XSN53F7W.js +1 -0
- package/dist/{chunk-DBGXZF7O.js.map → chunk-XSN53F7W.js.map} +1 -1
- package/dist/{chunk-MTJ4MS7W.js → chunk-YCGISPDR.js} +1 -1
- package/dist/i18n/experimental-effect-descriptions.d.ts +21 -6
- package/dist/i18n/experimental-effect-descriptions.js +1 -1
- package/dist/i18n/experimental-effects.js +1 -1
- package/dist/i18n/index.d.ts +0 -2
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/materials.d.ts +7 -6
- package/dist/i18n/materials.js +1 -1
- package/dist/i18n/micro-resources.d.ts +7 -6
- package/dist/i18n/micro-resources.js +1 -1
- package/dist/i18n/pre-engineered.js +1 -1
- package/dist/materials/index.js +1 -1
- package/dist/materials/materials-all.js +1 -1
- package/dist/materials/materials-encoded.js +1 -1
- package/dist/materials/materials-manufactured.js +1 -1
- package/dist/materials/materials.js +1 -1
- package/dist/materials/micro-resources-all.js +1 -1
- package/dist/materials/micro-resources.js +1 -1
- package/dist/ships/blueprint-costs.js +1 -1
- package/dist/ships/blueprint-journal.js +1 -1
- package/dist/ships/build-metrics.js +1 -1
- package/dist/ships/engineering-options.d.ts +10 -4
- package/dist/ships/engineering-options.js +1 -1
- package/dist/ships/engineering.js +1 -1
- package/dist/ships/gunsights.d.ts +2 -2
- package/dist/ships/gunsights.js +1 -1
- package/dist/ships/index.js +1 -1
- package/dist/ships/modules-all.js +1 -1
- package/dist/ships/modules-hardpoint.js +1 -1
- package/dist/ships/modules.js +1 -1
- package/dist/ships/pre-engineered-stats.d.ts +5 -0
- package/dist/ships/pre-engineered-stats.js +1 -1
- package/dist/ships/ship-loadout.d.ts +4 -1
- package/dist/ships/ship-loadout.js +1 -1
- package/dist/ships/weapons.d.ts +14 -4
- package/dist/ships/weapons.js +1 -1
- package/package.json +1 -9
- package/dist/chunk-37JIMWLK.js +0 -1
- package/dist/chunk-37JIMWLK.js.map +0 -1
- package/dist/chunk-5ZVYRX6Z.js +0 -1
- package/dist/chunk-5ZVYRX6Z.js.map +0 -1
- package/dist/chunk-7ZERP4TB.js +0 -1
- package/dist/chunk-AIEC3LBT.js +0 -1
- package/dist/chunk-CJQ37JII.js +0 -1
- package/dist/chunk-CJQ37JII.js.map +0 -1
- package/dist/chunk-DAQ3PJ4R.js +0 -1
- package/dist/chunk-DAQ3PJ4R.js.map +0 -1
- package/dist/chunk-DBGXZF7O.js +0 -1
- package/dist/chunk-FD74K27A.js +0 -1
- package/dist/chunk-FD74K27A.js.map +0 -1
- package/dist/chunk-FF2X4K5P.js +0 -1
- package/dist/chunk-G2VSQFD6.js +0 -1
- package/dist/chunk-GLWPSVFV.js +0 -1
- package/dist/chunk-GRSNX36B.js +0 -1
- package/dist/chunk-ITKZKREP.js +0 -1
- package/dist/chunk-JO52LYO3.js +0 -1
- package/dist/chunk-KGJCTSVV.js.map +0 -1
- package/dist/chunk-KJFUNIIY.js +0 -1
- package/dist/chunk-KJFUNIIY.js.map +0 -1
- package/dist/chunk-SC6Z2TV7.js +0 -1
- package/dist/chunk-SC6Z2TV7.js.map +0 -1
- package/dist/chunk-TW7LUBHD.js +0 -1
- package/dist/i18n/engineering-groups.d.ts +0 -21
- package/dist/i18n/engineering-groups.js +0 -1
- package/dist/i18n/engineering-groups.js.map +0 -1
- package/dist/i18n/ships.d.ts +0 -36
- package/dist/i18n/ships.js +0 -1
- package/dist/i18n/ships.js.map +0 -1
- /package/dist/{chunk-4TFAZX73.js.map → chunk-773VO2GK.js.map} +0 -0
- /package/dist/{chunk-7EWZGDWY.js.map → chunk-7S7ZTZZY.js.map} +0 -0
- /package/dist/{chunk-3LZXB2MC.js.map → chunk-ABSDZINM.js.map} +0 -0
- /package/dist/{chunk-JO52LYO3.js.map → chunk-KBCA4GEZ.js.map} +0 -0
- /package/dist/{chunk-IWFQ4ZKF.js.map → chunk-OFZGNWBT.js.map} +0 -0
- /package/dist/{chunk-OLKNYGGT.js.map → chunk-SDXUPP4P.js.map} +0 -0
- /package/dist/{chunk-MTJ4MS7W.js.map → chunk-YCGISPDR.js.map} +0 -0
|
@@ -78,16 +78,29 @@ tag follows the rule above, so `pt-PT` resolves to Brazilian Portuguese.
|
|
|
78
78
|
|
|
79
79
|
## `experimental-effect-names.jsonc`
|
|
80
80
|
|
|
81
|
-
- **Acquired:** 2026-08-
|
|
82
|
-
- **
|
|
83
|
-
|
|
81
|
+
- **Acquired:** 2026-08-30 UTC.
|
|
82
|
+
- **In-game localisation revision:** none published; the game ships no immutable
|
|
83
|
+
identifier for its localisation tables. The acquired table is the evidence.
|
|
84
84
|
- **Derivation:** each of the 86 current keys and its English name comes from
|
|
85
|
-
`data/ships/experimental-effects.jsonc
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
-
|
|
85
|
+
`data/ships/experimental-effects.jsonc`, which stays authoritative for canonical
|
|
86
|
+
English. The Frontier symbol joins to the in-game experimental-effect name table,
|
|
87
|
+
which supplies every locale for all 86. The table replaces the EDSY join this
|
|
88
|
+
catalogue previously used: where the two disagree the in-game value is kept, as
|
|
89
|
+
everywhere else in this repository. It supplies six values EDSY did not carry — all
|
|
90
|
+
five non-English `special_super_penetrator` names and the German
|
|
91
|
+
`special_weapon_rateoffire` — and changes two EDSY already carried: German
|
|
92
|
+
`special_regeneration_sequence` is "Regenerationssequenz" (EDSY
|
|
93
|
+
"Regenerierungssequenz") and Brazilian Portuguese `special_lock_breaker` is "Quebra da
|
|
94
|
+
Trava do Alvo" (EDSY "Quebra de Trava de Alvo"). Every other value agrees.
|
|
95
|
+
- **The three `_cooled` variants take their base effect's names.**
|
|
96
|
+
`special_feedback_cascade_cooled`, `special_plasma_slug_cooled` and
|
|
97
|
+
`special_super_penetrator_cooled` are pre-engineered rail-gun variants the game does
|
|
98
|
+
not name separately, so the source marks them as carrying the base effect's entry.
|
|
99
|
+
Each takes those values, exactly as a shadowing blueprint id takes its generic's.
|
|
100
|
+
- **Coverage:** complete. All 86 effects carry all six locales.
|
|
101
|
+
- **Manual corrections:** the source appends a `†` to every marked cell of the three
|
|
102
|
+
`_cooled` variants above; it is the acquisition's own shadow marker rather than part of
|
|
103
|
+
a name, and is removed here.
|
|
91
104
|
|
|
92
105
|
## `material-names.jsonc`
|
|
93
106
|
|
|
@@ -100,12 +113,31 @@ tag follows the rule above, so `pt-PT` resolves to Brazilian Portuguese.
|
|
|
100
113
|
`locale/material/horizons/{raw,manufactured,encoded}.csv`; only that row's explicit
|
|
101
114
|
localized columns are copied. The source's English column is not copied because the
|
|
102
115
|
owning materials catalogues remain authoritative for canonical names. The canonical
|
|
103
|
-
English values therefore
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
- **
|
|
107
|
-
|
|
108
|
-
|
|
116
|
+
English values therefore omit the source's parenthetical Guardian and Thargoid
|
|
117
|
+
category labels where the owning catalogue does; localized columns remain verbatim
|
|
118
|
+
source values.
|
|
119
|
+
- **Second source, the in-game material localisation tables**, acquired 2026-08-30 UTC;
|
|
120
|
+
the game publishes no immutable identifier for them, so the acquired table is the
|
|
121
|
+
evidence. It covers all 146 materials in all six locales and, as everywhere else in
|
|
122
|
+
this repository, wins where the two disagree. That fills the 30 values Odyssey
|
|
123
|
+
Materials Helper did not carry and restyles 30 it did: 23 are the French apostrophe
|
|
124
|
+
(the in-game tables use `'` throughout, as every other catalogue here does, where
|
|
125
|
+
Odyssey Materials Helper uses `’`), five are Spanish names the helper title-cased
|
|
126
|
+
(`Fragmento Caústico` against the game's `Fragmento cáustico`), and the rest are
|
|
127
|
+
wording.
|
|
128
|
+
- **Coverage:** complete. All 146 materials carry all six locales.
|
|
129
|
+
- **Manual corrections:** six of the in-game values are the outfitting UI's own
|
|
130
|
+
abbreviations, shortened to fit its widget rather than translated differently —
|
|
131
|
+
`Comp. de destroços Guardian` against the helper's `Componentes de destroços Sentinela
|
|
132
|
+
Guardian`, and likewise for `Guardian_Sentinel_WeaponParts` (French and Brazilian
|
|
133
|
+
Portuguese), `Guardian_TechComponent` (French and Brazilian Portuguese) and
|
|
134
|
+
`HeatConductionWiring` (Spanish). The unabbreviated value is kept in each.
|
|
135
|
+
- **`Guardian_Sentinel_WreckageComponents` drops `Sentinel` in every locale**, following
|
|
136
|
+
the owning catalogue's rename (see `data/materials/SOURCES.md`). Its Brazilian
|
|
137
|
+
Portuguese is the one value here taken from neither source verbatim: the in-game table
|
|
138
|
+
abbreviates it to `Comp. de destroços Guardian` to fit the widget, so the whole word is
|
|
139
|
+
kept as it is for the other abbreviated labels above, giving
|
|
140
|
+
`Componentes de destroços Guardian`.
|
|
109
141
|
|
|
110
142
|
## `micro-resource-names.jsonc`
|
|
111
143
|
|
|
@@ -123,66 +155,24 @@ tag follows the rule above, so `pt-PT` resolves to Brazilian Portuguese.
|
|
|
123
155
|
`SmallCapacityPowerRegulator` do not. All 30 take the explicit in-game `name` values for
|
|
124
156
|
German, Spanish, French and Russian. In both cases the owning catalogue remains
|
|
125
157
|
authoritative for canonical English names.
|
|
126
|
-
- **
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
- **
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
`
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
Helper's `ships.name.*` key after removing punctuation and folding case. EDSY's
|
|
145
|
-
`eddb.js` `ship.fdname` supplies the second join, with explicit `ship-<id>` language
|
|
146
|
-
entries filling locales absent from the CSV. The CSV keys a row by the ship's display
|
|
147
|
-
name rather than its symbol, which differ for the four hulls whose name carries a mark
|
|
148
|
-
the symbol omits (`Viper` is `ships.name.viper_mk_iii`), so the name is tried first and
|
|
149
|
-
the symbol second. The resulting source-backed coverage is 48 ships in Spanish, 44 in
|
|
150
|
-
French, 38 in Brazilian Portuguese and 48 in Russian; no accepted source carries a
|
|
151
|
-
German ship-name table.
|
|
152
|
-
- **Standing conclusion:** every source-backed non-English value is byte-for-byte equal
|
|
153
|
-
to the canonical English ship name. The explicit values remain in the catalogue so a
|
|
154
|
-
lookup distinguishes a source-backed same spelling from an unavailable translation.
|
|
155
|
-
- **Manual corrections:** none.
|
|
156
|
-
|
|
157
|
-
## `ship-manufacturer-names.jsonc`
|
|
158
|
-
|
|
159
|
-
- **Acquired:** 2026-08-18 UTC.
|
|
160
|
-
- **Derivation:** all 48 symbol-to-manufacturer values are projected directly from
|
|
161
|
-
`data/ships/ships.jsonc`, whose pinned sources and corrections are recorded in
|
|
162
|
-
`data/ships/SOURCES.md`. Repeated manufacturer strings remain keyed by ship symbol so
|
|
163
|
-
consumers need no separate manufacturer identity space.
|
|
164
|
-
- **Coverage:** canonical English covers every ship. The accepted sources carry no
|
|
165
|
-
localized manufacturer labels.
|
|
166
|
-
- **Manual corrections:** none.
|
|
167
|
-
|
|
168
|
-
## `engineering-group-names.jsonc`
|
|
169
|
-
|
|
170
|
-
- **Acquired:** 2026-08-18 UTC.
|
|
171
|
-
- **EDSY revision:** commit `e446fbe6e4597dea7ab0bd3105b9a36642388040`;
|
|
172
|
-
database version `424009901`, last-modified marker `20260810`; `lang-en.json` and
|
|
173
|
-
`lang-ru.json` have Git blob ids `9b199db635f7b968b75c8e9a14bdce68e37e4120` and
|
|
174
|
-
`36496372d056754c34da03ca6836e27987c96b6a` respectively.
|
|
175
|
-
- **Derivation:** each of the 48 group ids and its canonical English name is projected
|
|
176
|
-
from `data/ships/engineering-options.jsonc`. That catalogue derives its group menus
|
|
177
|
-
from EDSY, with the supplemental sources and corrections recorded in
|
|
178
|
-
`data/ships/SOURCES.md`. Where a canonical English name matches an EDSY `mtype-*`
|
|
179
|
-
value in `lang-en.json` byte-for-byte and uniquely, explicit values with the same key
|
|
180
|
-
are copied from `lang-ru.json`.
|
|
181
|
-
- **Coverage:** canonical English covers every engineering option group; Brazilian
|
|
182
|
-
Portuguese and Russian each cover 44 of 48. The Guardian power-plant, power-distributor
|
|
183
|
-
and hull-reinforcement groups have no distinct EDSY label, and EDSY carries no value in
|
|
184
|
-
either language for `frameShiftDrivesSCO`.
|
|
185
|
-
- **Manual corrections:** none.
|
|
158
|
+
- **Second source, the in-game micro-resource localisation tables**, acquired
|
|
159
|
+
2026-08-30 UTC; the game publishes no immutable identifier for them, so the acquired
|
|
160
|
+
table is the evidence. It covers 225 of the 226 in all six locales and wins where the
|
|
161
|
+
two disagree, on the same footing as the material tables above. That fills all 47
|
|
162
|
+
remaining values — including the Brazilian Portuguese for `PowerVirus` and
|
|
163
|
+
`SmallCapacityPowerRegulator`, which no registry carries — and restyles 46, of which 36
|
|
164
|
+
are the French apostrophe and seven are the French Powerplay term, which the game
|
|
165
|
+
lower-cases (`Données classifiées de puissance`).
|
|
166
|
+
`PowerMegashipData` is absent from the micro-resource table and appears in the material
|
|
167
|
+
one; its values are taken from there.
|
|
168
|
+
- **Coverage:** complete. All 226 micro resources carry all six locales.
|
|
169
|
+
- **Manual corrections:** five in-game values are layout, not names. Four German
|
|
170
|
+
consumables carry a `<br>` inside a compound word that the UI wraps —
|
|
171
|
+
`Energie-<br>zelle`, `Splitter-<br>granate`, `Schild-<br>unterbrecher` and
|
|
172
|
+
`Schild-<br>generator` — and the French `Amm_Grenade_EMP` is abbreviated to
|
|
173
|
+
`Neutralisat. de bouclier` to fit its widget. The whole word is kept in each:
|
|
174
|
+
`Energiezelle`, `Splittergranate`, `Schildunterbrecher`, `Schildgenerator` and
|
|
175
|
+
`Neutralisateur de bouclier`.
|
|
186
176
|
|
|
187
177
|
## `module-family-names.jsonc`
|
|
188
178
|
|
|
@@ -209,15 +199,30 @@ tag follows the rule above, so `pt-PT` resolves to Brazilian Portuguese.
|
|
|
209
199
|
|
|
210
200
|
## `experimental-effect-descriptions.jsonc`
|
|
211
201
|
|
|
212
|
-
- **Acquired:** 2026-08-
|
|
213
|
-
- **
|
|
214
|
-
|
|
215
|
-
- **Derivation:**
|
|
216
|
-
|
|
217
|
-
description
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
202
|
+
- **Acquired:** 2026-08-30 UTC.
|
|
203
|
+
- **In-game localisation revision:** none published; the game ships no immutable
|
|
204
|
+
identifier for its localisation tables. The acquired table is the evidence.
|
|
205
|
+
- **Derivation:** each of the 86 current keys comes from
|
|
206
|
+
`data/ships/experimental-effects.jsonc`; the Frontier symbol joins to the in-game
|
|
207
|
+
experimental-effect description table, which supplies every locale for all 86. All six
|
|
208
|
+
values, English included, are the source's verbatim.
|
|
209
|
+
- **This catalogue no longer projects the ships catalogue's `description`.** The two
|
|
210
|
+
answer different questions and are deliberately different strings. An effect's
|
|
211
|
+
`description` in `data/ships/experimental-effects.jsonc` is a mechanical note that
|
|
212
|
+
states what the `modifiers` list cannot — that High Yield Shell deals 50/50
|
|
213
|
+
kinetic/explosive damage with module splash, say — and 57 of the 86 effects need no
|
|
214
|
+
such note and carry none. What the game shows a player is display prose that names no
|
|
215
|
+
magnitudes ("Modified munitions that convert a portion of damage to explosive …"), and
|
|
216
|
+
it exists for every effect. Projecting one onto the other would have cost the
|
|
217
|
+
mechanical notes their numbers; storing the display prose here keeps each field doing
|
|
218
|
+
its own job, and the ships catalogue is unchanged.
|
|
219
|
+
- **Coverage:** complete. All 86 effects carry all six locales.
|
|
220
|
+
- **Manual corrections:** 26 of the source's descriptions begin with one or more
|
|
221
|
+
bracketed tokens — `[ShieldRegen]`, and `[SnsrBlinding][Heat]` on
|
|
222
|
+
`special_radiant_canister`. A token is byte-identical across all six locales and is
|
|
223
|
+
left untranslated in each, so it is an identifier the game's client consumes rather
|
|
224
|
+
than text meant for a player; the tokens are removed here. The `†` shadow marker
|
|
225
|
+
described under `experimental-effect-names.jsonc` is removed from descriptions too.
|
|
221
226
|
|
|
222
227
|
## `pre-engineered-variant-names.jsonc`
|
|
223
228
|
|
|
@@ -230,23 +235,42 @@ tag follows the rule above, so `pt-PT` resolves to Brazilian Portuguese.
|
|
|
230
235
|
names such as the three `Decorative_*` festive launchers remain canonical English.
|
|
231
236
|
- **The 22 Merc-shop rows carry the shop's own names**, in 14 distinct records — the shop
|
|
232
237
|
sells a "Far-Reaching Abrasion Blaster", not an Abrasion Blaster — so they do not reuse
|
|
233
|
-
their base module's record.
|
|
234
|
-
|
|
235
|
-
|
|
238
|
+
their base module's record. All six locales are supplied by the repository owner from
|
|
239
|
+
the in-game shop listing; no registry publishes them. The Brazilian Portuguese column
|
|
240
|
+
was acquired 2026-08-30 UTC and agrees byte-for-byte with the five columns already
|
|
241
|
+
stored, which it does not change.
|
|
236
242
|
- **Coverage:** English covers every variant. Ordinary names inherit the explicit
|
|
237
|
-
localized values available for their base module, which
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
translation source.
|
|
243
|
+
localized values available for their base module, which includes Brazilian Portuguese
|
|
244
|
+
on 51 of the 76 variants; the Merc-shop names carry all six locales. Only the three
|
|
245
|
+
`Decorative_*` fixed reward names have no accepted translation source, in any locale.
|
|
241
246
|
- **Manual corrections:** none.
|
|
242
247
|
|
|
248
|
+
## Names this repository deliberately does not localize
|
|
249
|
+
|
|
250
|
+
Three catalogues were removed rather than completed, because the game does not translate
|
|
251
|
+
what they held and storing English under five more keys said otherwise.
|
|
252
|
+
|
|
253
|
+
- **Ship names and manufacturers.** Odyssey Materials Helper and EDSY each publish a
|
|
254
|
+
per-locale ship column, and every value either one publishes is byte-for-byte the
|
|
255
|
+
canonical English name: a hull name is a proper noun the game leaves alone, and so is
|
|
256
|
+
a manufacturer's. No source publishes a localized manufacturer label at all. A lookup
|
|
257
|
+
that can only ever answer in English is not a translation lookup, so `getShipName` and
|
|
258
|
+
`getShipManufacturer` are gone; `data/ships/ships.jsonc` carries both strings and stays
|
|
259
|
+
the one place to read them.
|
|
260
|
+
- **Engineering-group labels.** An engineering group is this repository's own partition
|
|
261
|
+
of the modules that share one menu; the game heads that menu with the module's
|
|
262
|
+
outfitting family and publishes no group label of its own. The EDSY `mtype-*` values
|
|
263
|
+
previously stored here were outfitting labels reached by a name join, which is why they
|
|
264
|
+
disagreed with `module-family-names.jsonc` in 22 places on wording. A group therefore
|
|
265
|
+
carries no name at all — see the header of `data/ships/engineering-options.jsonc` — and
|
|
266
|
+
a consumer names one by joining a module's `familyId` to `module-family-names.jsonc`.
|
|
267
|
+
|
|
243
268
|
## Known gaps
|
|
244
269
|
|
|
245
270
|
Localized coverage follows the accepted sources and is not complete for every catalogue or
|
|
246
|
-
stored locale. A language absent from all
|
|
271
|
+
stored locale. A language absent from all eight catalogues is the locale decision
|
|
247
272
|
recorded above rather than a gap. The accepted sources carry only canonical English for
|
|
248
|
-
|
|
249
|
-
labels, some engineering-group labels, slot and restriction labels, fixed reward names,
|
|
273
|
+
19 of the 77 outfitting-family labels, slot and restriction labels, fixed reward names,
|
|
250
274
|
and structured loadout, calculation, SLEF and edit messages. Missing source-backed
|
|
251
275
|
translations remain tracked by
|
|
252
276
|
[#320](https://github.com/DarkSession/Elite-Dangerous-Almanac/issues/320).
|
|
@@ -26,6 +26,28 @@
|
|
|
26
26
|
Phosphorus, Sulphur, Iron, Nickel, Rhenium, Lead** — the convention the in-game raw
|
|
27
27
|
grid columns follow.
|
|
28
28
|
|
|
29
|
+
### Manual correction — the three Guardian blueprint fragments
|
|
30
|
+
|
|
31
|
+
FDevIDs' `material.csv` names `Guardian_ModuleBlueprint`, `Guardian_WeaponBlueprint` and
|
|
32
|
+
`Guardian_VesselBlueprint` `… Blueprint Segment`. The game calls them **Fragment**, which
|
|
33
|
+
is the name carried here. The in-game localisation table confirmed by repository-owner
|
|
34
|
+
in-game verification (2026-08-30 UTC) says `Fragment` in every locale, and the French and
|
|
35
|
+
Russian columns Odyssey Materials Helper already supplied said `Fragment de plan …` and
|
|
36
|
+
`Фрагмент чертежа …` while its English, German, Spanish and Portuguese said Segment — the
|
|
37
|
+
disagreement was inside one source, not between the game and this repository.
|
|
38
|
+
|
|
39
|
+
### Manual correction — Guardian Wreckage Components has no Sentinel
|
|
40
|
+
|
|
41
|
+
FDevIDs names `Guardian_Sentinel_WreckageComponents` `Guardian Sentinel Wreckage
|
|
42
|
+
Components`; the game calls it **Guardian Wreckage Components**, which is the name
|
|
43
|
+
carried here. The symbol keeps Frontier's own `_Sentinel_` spelling, because that is what
|
|
44
|
+
the journal writes. Repository-owner in-game verification, 2026-08-30 UTC; the in-game
|
|
45
|
+
localisation table drops the word in German, Spanish, French and Brazilian Portuguese
|
|
46
|
+
too, and the Russian column Odyssey Materials Helper already supplied had no equivalent
|
|
47
|
+
of it either — `Обломки кораблекрушения Стражей`, against the `часовых Стражей` it uses
|
|
48
|
+
for `Guardian_Sentinel_WeaponParts`. That sibling **keeps** its Sentinel: the game names
|
|
49
|
+
it `Guardian Sentinel Weapon Parts`, so only the wreckage components are renamed.
|
|
50
|
+
|
|
29
51
|
### Secondary source — Thargoid caustic / Titan materials absent from FDevIDs
|
|
30
52
|
|
|
31
53
|
Several Thargoid caustic and Titan materials are absent from the pinned FDevIDs
|
|
@@ -140,9 +140,16 @@ identity from FDevIDs, stats and slots from coriolis-data, joined on `symbol`.
|
|
|
140
140
|
are omitted. Hull identity is already the map key; display names, slot keys and
|
|
141
141
|
hardpoint counts are recoverable from `ships.jsonc`; all other acquisition and
|
|
142
142
|
presentation metadata is unnecessary for projection and is dropped.
|
|
143
|
-
- **Precision:** offsets
|
|
144
|
-
|
|
145
|
-
|
|
143
|
+
- **Precision:** the offsets come from 32-bit-float model geometry, so decimal digits
|
|
144
|
+
below that grid describe nothing the source resolves. 196 of the 458 non-zero recorded
|
|
145
|
+
numbers are plainly a 32-bit float printed to ten decimals (`1.3350000381` is 1.335,
|
|
146
|
+
`-4.1649999619` is -4.165) and the rest sit within half a 32-bit-float step of one, so
|
|
147
|
+
each number is stored as the shortest rounding of its recorded decimal that still
|
|
148
|
+
lands on the same 32-bit float. 436 of the 468 shorten under that rule and none moves
|
|
149
|
+
by a full 32-bit-float step; the largest movement is 1.6 µm, the Cutter's
|
|
150
|
+
`48.7663916349` written `48.76639`. Exact zero and tiny near-zero values both describe
|
|
151
|
+
centerline mounts; the residuals are numeric precision, not meaningful sub-millimetre
|
|
152
|
+
displacements to interpret or normalize.
|
|
146
153
|
- **Manual corrections:** none. All 48 hulls and all 234 of their hardpoint slot keys join
|
|
147
154
|
one-to-one without correction.
|
|
148
155
|
|
|
@@ -493,7 +500,16 @@ FDevIDs, stats from coriolis-data and EDSY, joined on `symbol`.
|
|
|
493
500
|
every other record remains an omitted sparse field.
|
|
494
501
|
- **`rateOfFire` is derived, not copied.** Upstream stores the fire interval; the
|
|
495
502
|
journal (and this catalogue) report the combined shots per second, so it is
|
|
496
|
-
computed as `burst / ((burst − 1) / burstRateOfFire + fireInterval)
|
|
503
|
+
computed as `burst / ((burst − 1) / burstRateOfFire + fireInterval)` — with a float32
|
|
504
|
+
stored after every operation and the result written to six decimal places, which is
|
|
505
|
+
how the game computes and serializes it. The float matters on three records, where
|
|
506
|
+
exact arithmetic lands one place away: a capture is what settles it, and
|
|
507
|
+
`journal-cobra-mkv.jsonc` states a stock `RateOfFire` of 8.333334 for the small
|
|
508
|
+
gimballed multi-cannon, whose 0.12 s interval gives 8.333333 exactly and 8.333334
|
|
509
|
+
through the float. `Hpt_Slugshot_Fixed_Small` (5.555555) and
|
|
510
|
+
`Hpt_MkIIPlasmaShockAutocannon_Fixed_Large` (7.844017) follow the same rule; no
|
|
511
|
+
capture states either, so they are the derivation the multi-cannon vindicates rather
|
|
512
|
+
than observed readings. Coriolis
|
|
497
513
|
(`Module.getRoF`) and EDSY (`rof = fpc / spc`) also fold `chargeTime` into this
|
|
498
514
|
figure, but Frontier does not: `journal-federation-corvette-mixed.jsonc` states
|
|
499
515
|
`RateOfFire` base values of 1.587302 for the small rail gun and 1.204819 for the
|
|
@@ -1470,6 +1486,17 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1470
1486
|
"which experimentals go with blueprint X" has no single answer. Modules are therefore
|
|
1471
1487
|
grouped (48 groups covering 1005 ordinary engineering menus) and each group lists the
|
|
1472
1488
|
`blueprints` and `experimentals` it offers.
|
|
1489
|
+
- **A group carries no display name.** The grouping is this repository's own partition of
|
|
1490
|
+
the modules sharing one menu; the game publishes no engineering-group label, heading
|
|
1491
|
+
each menu with the module's outfitting family instead. EDSY's `mtype-*` strings, which
|
|
1492
|
+
this file previously stored as group names, are outfitting labels reached by a name
|
|
1493
|
+
join — which is why they disagreed with `module-families.jsonc` in 22 places on wording
|
|
1494
|
+
(`cannons` Russian "Пушки" against the family's "Орудия", `moduleReinforcements`
|
|
1495
|
+
Brazilian Portuguese title case against the family's sentence case). Consumers name a
|
|
1496
|
+
group by joining a module's `familyId` to `module-families.jsonc`. The two partitions
|
|
1497
|
+
do not coincide exactly: 47 of the 48 groups sit wholly inside one family, while
|
|
1498
|
+
`heatSinkLaunchers` covers both `heatsinkLaunchers` and `causticSinkLaunchers`, and the
|
|
1499
|
+
`fsd` and `hullReinforcements` families are each split across two groups.
|
|
1473
1500
|
- **Source:** EDSY `eddb.js`, whose module-group tables carry each group's `blueprints`
|
|
1474
1501
|
and `expeffects` lists and which modules belong to each group, and whose module records
|
|
1475
1502
|
carry the per-module `noblueprints` / `noexpeffects`
|
|
@@ -1913,8 +1940,8 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1913
1940
|
itself.
|
|
1914
1941
|
- **Burst interval has to be added to the decoder's output by hand.** EDSY carries no
|
|
1915
1942
|
journal Label for `bstint` — the journal reports the resulting `RateOfFire`, never the
|
|
1916
|
-
interval it comes from — so a straight decode drops it, leaving the 13 variants
|
|
1917
|
-
|
|
1943
|
+
interval it comes from — so a straight decode drops it, leaving the 13 variants whose
|
|
1944
|
+
stat block changes a burst pattern on the _stock_ cadence, and four of them (the two frag cannons
|
|
1918
1945
|
and the two Guardian gauss cannons) inconsistent as well as slow, carrying the
|
|
1919
1946
|
engineered `BurstSize` — and, on the gauss cannons, the engineered `BurstRateOfFire` —
|
|
1920
1947
|
against a stock interval. All 13 are stored under **`BurstInterval`**, the same label
|
package/README.md
CHANGED
|
@@ -168,19 +168,18 @@ pinned sources carry no translation instead of silently substituting English:
|
|
|
168
168
|
```ts
|
|
169
169
|
import {
|
|
170
170
|
getBlueprintName,
|
|
171
|
-
getEngineeringGroupName,
|
|
172
171
|
getMaterialName,
|
|
173
172
|
getMicroResourceName,
|
|
174
173
|
getModuleName,
|
|
175
|
-
|
|
174
|
+
getOutfittingFamilyName,
|
|
176
175
|
} from '@elite-dangerous-almanac/core/i18n';
|
|
177
176
|
|
|
178
177
|
getModuleName('Int_Hyperdrive_Size6_Class5', 'de-DE'); // -> "Frameshiftantrieb"
|
|
179
178
|
getBlueprintName('FSD_LongRange', 'fr-FR'); // -> "Portée FSD améliorée"
|
|
180
179
|
getMaterialName('GridResistors', 'de'); // -> "Gitterwiderstände"
|
|
181
180
|
getMicroResourceName('graphene', 'fr'); // -> "Graphène"
|
|
182
|
-
|
|
183
|
-
|
|
181
|
+
getOutfittingFamilyName('shieldGenerators', 'de'); // -> "Schildgeneratoren"
|
|
182
|
+
getOutfittingFamilyName('xenoScanners', 'de'); // -> null
|
|
184
183
|
```
|
|
185
184
|
|
|
186
185
|
The functions return an explicit source value verbatim, so a source-backed spelling may
|
|
@@ -189,10 +188,17 @@ catalogues carry English, French, German, Portuguese, Russian and Spanish, each
|
|
|
189
188
|
under a bare language tag: a regional or script subtag is dropped (`de-DE` → `de`), and
|
|
190
189
|
any other language returns `null`.
|
|
191
190
|
|
|
192
|
-
The same contract covers
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
191
|
+
The same contract covers pre-engineered variant names, experimental-effect names and
|
|
192
|
+
descriptions, loadout-slot and restriction labels, and structured loadout, calculation,
|
|
193
|
+
SLEF and edit messages. A family whose accepted source currently supplies only English
|
|
194
|
+
returns `null` for every non-English locale.
|
|
195
|
+
|
|
196
|
+
**Ship names, manufacturers and engineering groups have no lookup**, because the game
|
|
197
|
+
does not translate them. Hull names and manufacturers are proper nouns — every source
|
|
198
|
+
that publishes a localized ship column publishes the English spelling — so read them
|
|
199
|
+
from the ships catalogue (`getShipBySymbol(symbol)?.name` and `?.manufacturer`). An
|
|
200
|
+
engineering group has no in-game label at all: its menu is headed by the module's own
|
|
201
|
+
outfitting family, so name it with `getOutfittingFamilyName(module.familyId, locale)`.
|
|
196
202
|
|
|
197
203
|
Registry lookups ignore case and surrounding whitespace. The material, commodity and
|
|
198
204
|
module lookups that resolve one record by symbol or name search their complete registry
|