@nanostores/i18n
Version:
A tiny (≈600 bytes) i18n library for React/Preact/Vue/Svelte
46 lines (42 loc) • 991 B
TypeScript
import type {
TranslationFunction,
TranslationFunctionAlternatives,
TranslationJSON
} from '../create-i18n/index.js'
export type CountInput = {
few?: TranslationJSON
many: TranslationJSON
one?: TranslationJSON
}
interface Count {
/**
* Add pluralization variants to translation.
*
* ```ts
* import { count } from '@nanostores/i18n'
* import { i18n } from '../stores/i18n'
*
* export const messages = i18n('pagination', {
* pages: count({
* one: 'One page',
* many: '{count} pages'
* })
* })
* ```
*
* ```js
* t.count(5)
* ```
*
* @param input Pluralization variants.
* @return Transform for translation.
*/
<Parameters extends Record<string, number | string>>(
input: TranslationFunction<[Parameters], string>
): TranslationFunctionAlternatives<Parameters>
<Input extends CountInput>(input: Input): TranslationFunction<
[number],
Input[keyof Input]
>
}
export const count: Count