i18n - Elite-Dangerous-Almanac/Almanac-Core GitHub Wiki
@elite-dangerous-almanac/core / i18n
Sparse, source-backed localized display names and descriptions for Elite Dangerous outfitting, personal-equipment, engineering, material, market-commodity and galactic codex-region catalogues.
Each lookup takes the identifier its owning catalogue is keyed by — a Frontier symbol,
the library id where the game publishes none, as for a suit tool, or the region id for
a galactic codex region — and a BCP 47 locale. English is complete: for a name
catalogue it is exactly the owning record's name, and for a description catalogue it
is the game's own display prose, which no catalogue otherwise publishes.
Other locales are intentionally sparse: the function returns null when its pinned
sources carry no translation, leaving the application in control of fallback policy.
A source-backed localized spelling can be identical to English; the lookup returns
explicit source values verbatim but never manufactures an English fallback.
The catalogues carry English, French, German, Portuguese, Russian and Spanish only,
each stored under a bare language tag: a regional or script subtag is dropped
(de-DE → de), and any other language is an unsupported locale.
How sparse, dataset by dataset. Each column below is the percentage of that
lookup's keys carrying a stored value for the locale, so a 0 would mean the dataset
holds nothing in that language at all and the lookup returns null for every key:
most datasets are complete in every locale, while the outfitting families the game
does not name separately have no locale at all. Plan fallback per
lookup rather than per application. The table is generated from the
data/i18n/ catalogues,
so it moves when the data does.
| Lookup | Keys | en | de | es | fr | pt | ru |
|---|---|---|---|---|---|---|---|
getBlueprintName |
111 | 100 | 100 | 100 | 100 | 100 | 100 |
getCodexRegionName |
42 | 100 | 100 | 100 | 100 | 100 | 100 |
getCommodityName |
412 | 100 | 100 | 100 | 100 | 100 | 100 |
getExperimentalEffectDescription |
86 | 100 | 100 | 100 | 100 | 100 | 100 |
getExperimentalEffectName |
86 | 100 | 100 | 100 | 100 | 100 | 100 |
getMaterialName |
146 | 100 | 100 | 100 | 100 | 100 | 100 |
getMicroResourceName |
226 | 100 | 100 | 100 | 100 | 100 | 100 |
getModuleName |
1203 | 100 | 100 | 100 | 100 | 100 | 100 |
getPersonalModificationDescription |
31 | 100 | 100 | 100 | 100 | 100 | 100 |
getPersonalModificationName |
31 | 100 | 100 | 100 | 100 | 100 | 100 |
getPersonalToolName |
4 | 100 | 100 | 100 | 100 | 100 | 100 |
getPersonalWeaponDescription |
11 | 100 | 100 | 100 | 100 | 100 | 100 |
getSuitDescription |
19 | 100 | 100 | 100 | 100 | 100 | 100 |
getSuitName |
19 | 100 | 100 | 100 | 100 | 100 | 100 |
getPreEngineeredVariantName |
79 | 100 | 92 | 89 | 89 | 100 | 100 |
getOutfittingFamilyName |
77 | 100 | 75 | 75 | 75 | 75 | 75 |
Each dataset lives in a separate runtime module. Import from this barrel for
convenience or from the corresponding i18n/* subpath for an explicit bundle
boundary.
Structured diagnostic helpers expose their English fallback only for English
locales and return null otherwise, so a UI never mistakes English prose for a
requested translation. Stable codes and params remain available for applications
that supply their own message catalogues.
import {
getBlueprintName,
getMaterialName,
getModuleName,
getOutfittingFamilyName,
} from '@elite-dangerous-almanac/core/i18n';
getModuleName('Int_Hyperdrive_Size6_Class5', 'de'); // -> 'Frameshiftantrieb'
getBlueprintName('FSD_LongRange', 'de-DE'); // -> 'Erhöhte FSA-Reichweite'
getMaterialName('GridResistors', 'de'); // -> 'Gitterwiderstände'
// Sparseness is per dataset, not per locale: German module names are complete,
// while no outfitting family the game does not name separately has any.
getOutfittingFamilyName('shieldGenerators', 'de'); // -> 'Schildgeneratoren'
getOutfittingFamilyName('xenoScanners', 'de'); // -> null- getBlueprintName
- getCalculationIssueMessage
- getCodexRegionName
- getCommodityName
- getExperimentalEffectDescription
- getExperimentalEffectName
- getLoadoutEditErrorMessage
- getLoadoutIssueMessage
- getLoadoutSlotName
- getMaterialName
- getMicroResourceName
- getModuleName
- getOutfittingFamilyName
- getPersonalModificationDescription
- getPersonalModificationName
- getPersonalMountName
- getPersonalToolName
- getPersonalWeaponDescription
- getPreEngineeredVariantName
- getSlefDiagnosticMessage
- getSlotRestrictionLabel
- getSuitDescription
- getSuitName