i18n - Elite-Dangerous-Almanac/Almanac-Core GitHub Wiki

@elite-dangerous-almanac/core / i18n

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-DEde), 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.

Example

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

Interfaces

Type Aliases

Functions

⚠️ **GitHub.com Fallback** ⚠️