New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@yandex/i18n

Package Overview
Dependencies
Maintainers
5
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@yandex/i18n

i18n made with love to tanker

  • 0.8.0
  • latest
  • npm
  • Socket score

Version published
Maintainers
5
Created
Source

I18N

Интерфейс для локализации текста с динамическими параметрами и плюрализацией.

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

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

src/features/FeatureName
├── FeatureName.i18n — файлы переводов
│   ├── ru.ts — словарь для русского языка
│   ├── en.ts — словарь для английского языка
│   └── index.ts — словарь используемых языков

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

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

Все языки должны быть зарегистрированы в словаре. Этим словарем оперирует сам модуль I18N.

// FeatureName/FeatureName.i18n/index.ts
export * from './ru';
export * from './en';

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

// FeatureName/FeatureName.ts
import i18n from '@yandex-int/i18n';

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

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

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

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

// FeatureName/FeatureName.i18n/en.ts
export const en = {
    'м. {metro}': 'subway {metro}',
}
// FeatureName/FeatureName.ts
import i18n from '@yandex-int/i18n';

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

const exampleI18N = i18n(keyset);

exampleI18N('м. {metro}', {
    metro: 'Парк Культуры',
});

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

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

// FeatureName/FeatureName.i18n/en.ts
export const en = {
    '{count} оценка': {
        many: '{count} оценок',
        none: 'нет оценок',
        one: '{count} оценка',
        some: '{count} оценки',
    }
}
// FeatureName/FeatureName.ts
import i18n from '@yandex-int/i18n';

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

const exampleI18N = i18n(keyset);

exampleI18N('{count} оценка', {
    count: 2,
});

Интеграция с компонентами

// FeatureName/FeatureName.i18n/en.ts
export const en = {
    'OOO «{link}»': 'LLC {link}',
    'ЯНДЕКС': 'YANDEX',
}
// FeatureName/FeatureName.tsx
import i18n, { i18nRaw } from '@yandex-int/i18n';

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

const exampleI18NRaw = i18nRaw(keyset);
const exampleI18N = i18n(keyset);

exampleI18NRaw('OOO «{link}»', {
    link: <Link url="#">{exampleI18N('ЯНДЕКС')}</Link>
});

Синхронизация с Танкером

Для синхронизаций с Танкером используйте набор хелперов для tanker-kit из пакета @yandex-int/tanker-helpers

FAQs

Package last updated on 17 Jan 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc