---
title: TranslationParams
description: Typed contract for translation keys and their placeholder arguments
---
import DocsLink from '@/components/docs/DocsLink.astro';
`TranslationParams` maps every opaque translation key to its argument shape. Keys with `never` accept only `t('key')`. Keys with an object accept `t('key', { … })` with typed placeholder names.
## Import
```ts
import type { TranslationParams } from '@videojs/core/i18n';
```
## Definition
```ts
type TranslationParams = {
play: never;
pause: never;
seekForward: { seconds: number | string };
timeRemainingPhrase: { duration: string };
// …
};
```
English defaults and the full key list live in `packages/core/src/core/i18n/locales/en.ts`. The authoritative TypeScript map is `packages/core/src/core/i18n/types.ts`.
## Parametric keys
| Key | Placeholders | Example English value |
| --- | --- | --- |
| `seekForward` | `{seconds}` | `Seek forward {seconds} seconds` |
| `seekBackward` | `{seconds}` | `Seek backward {seconds} seconds` |
| `playbackRateAria` | `{rate}` | `Playback rate {rate}` |
| `timeSliderValueTextRange` | `{current}`, `{duration}` | `{current} of {duration}` |
| `timeRemainingPhrase` | `{duration}` | `{duration} remaining` |
| `volumeSliderValueTextMuted` | `{percent}` | `{percent}, muted` |
| `indicatorVolumeWithValue` | `{value}` | `Volume {value}` |
All other keys are plain strings with no parameters.
## Usage with Translator
```ts
const t: Translator = createTranslator(translations, 'es');
t('play');
t('seekForward', { seconds: 10 });
t('timeRemainingPhrase', { duration: '1 minute' });
```
TypeScript rejects missing placeholders when defining `Translations` overlays:
```ts
registerI18n('es', {
seekForward: 'Adelantar', // error: missing {seconds}
});
```
## Related
- `Translations`
- `Translator`
- Internationalization — opaque keys overview