16 lines
986 B
TypeScript
16 lines
986 B
TypeScript
// Which language pairs the add-a-book form OFFERS.
|
|
//
|
|
// ⚠ This is a client-side offer list and it is the honest weak point of the intake screen: the
|
|
// contract has no handle for "what this deployment can translate", and which pairs a deployment
|
|
// can actually run is its own property — the engine reads a pair out of a language pack, and a
|
|
// deployment shipping a different set would make this list lie. A code the user cannot enter is
|
|
// worse than a list that is short, so the form offers what the product translates today and the
|
|
// gap is written down rather than papered over (BACKLOG Ф-57: a handle in the contract).
|
|
//
|
|
// Codes only, never names: the name is computed by `Intl.DisplayNames` for the language of the
|
|
// INTERFACE, so a second interface language renames the list without an edit here (the same rule
|
|
// the whole zone follows — CLAUDE.md §2).
|
|
|
|
export const sourceLanguages = ['zh', 'ja', 'en'] as const;
|
|
|
|
export const targetLanguages = ['ru'] as const;
|