@salutejs/i18n
TypeScript icon, indicating that this package has built-in type declarations

0.2.0 • Public • Published

@salutejs/i18n

Интерфейс для адаптации текста с динамическими параметрами и плюрализацией в рамках персонажей семейства виртуальных ассистентов Салют.

Создание словарей

Файлы с адаптацией лежат рядом с кодом, к которому они логически относятся.

src/handlers/mainPage
├── mainPage.i18n
│   ├── sber.ts — словарь для персонажа Сбер
│   ├── joy.ts — словарь для персонажа Джой
│   ├── athena.ts — словарь для персонажа Афина
│   └── index.ts — карта персонажей

Файл словаря — модуль, в котором лежит кейсет для одного языка с парами { ключ, перевод }:

// mainPage/mainPage.i18n/sber.ts
export const sber = {
    Пока: 'Bye',
    Привет: 'Example',
};

Все словари должны быть объявлены в карте персонажей. Картой оперирует модуль i18n.

// mainPage/mainPage.i18n/index.ts
export * from './sber';
export * from './joy';
export * from './athena';

Использование

// mainPage/mainPage.ts
import i18n from '@salutejs/i18n';

import * as keyset from './mainPage.i18n';

const greeting = i18n(keyset);
greeting('Привет');

Параметризация

Параметры объявляются в синтаксисе схожем с параметрами для template strings.

// mainPage/mainPage.i18n/sber.ts
export const sber = {
    'Добрый день, {name}!': 'Добрый день, {name}!',
}
// mainPage/mainPage.i18n/joy.ts
export const joy = {
    'Добрый день, {name}!': 'Привет, {name}!',
}
// mainPage/mainPage.ts
import i18n from '@salutejs/i18n';

import * as keyset from './mainPage.i18n';

const greeting = i18n(keyset);

greeting('Добрый день, {name}!', {
    name: 'Костя',
});

Плюрализация

Для выражения плюрализация существует специальный параметр count. Который соотносится с вариантами написания ключа через вложенные параметры: many, some, one, none.

// mainPage/mainPage.i18n/sber.ts
export const sber = {
    '{count} операций': {
        many: '{count} операция',
        none: 'нет операций',
        one: '{count} операция',
        some: '{count} операции',
    }
}
// mainPage/mainPage.ts
import i18n from '@salutejs/i18n';

import * as keyset from './mainPage.i18n';

const transactions = i18n(keyset);

transactions('{count} операций', {
    count: 2,
});

SberDevices with ❤️

Readme

Keywords

none

Package Sidebar

Install

npm i @salutejs/i18n

Weekly Downloads

0

Version

0.2.0

License

Sber Public License at-nc-sa v.2

Unpacked Size

78.5 kB

Total Files

12

Last publish

Collaborators

  • salute-eva
  • awinogradov
  • turanchoks
  • salute-assistant