@ditsmod/i18n
i18n - це скорочення від слова internationalization. Модуль @ditsmod/i18n
забезпечує базову функціональність для перекладу системних повідомлень (що видає Ditsmod-застосунок під час роботи), і надає можливість для легкого розширення словників. Фактично ви використовуєте звичайні сервіси у якості словників для перекладу, тому текст для перекладу можна брати як з TypeScript-файлів, так і з баз даних. Робота @ditsmod/i18n
спроектована таким чином, щоб кожен поточний модуль міг мати власний переклад, і щоб можна було змінити чи доповнити переклад будь-якого імпортованого модуля.
Проглянути код з прикладами використання @ditsmod/i18n
можна у репозиторію Ditsmod, хоча зручніше його проглядати локально, тому краще спочатку клонувати його:
git clone https://github.com/ditsmod/ditsmod.git
cd ditsmod
npm i
cd examples/15-i18n
Приклад можна запускати командою:
npm start
Встановлення
Вище показано як клонувати готовий приклад з @ditsmod/i18n
, а коли вам потрібно встановити даний модуль у ваш застосунок, це можна зробити так:
npm i @ditsmod/i18n
Структура каталогів
Рекомендована структура директорій словників з перекладом є такою:
└── modulename
├── ...
├── locales
│ ├── current
│ │ ├── _base-en
│ │ ├── de
│ │ ├── fr
│ │ ├── pl
│ │ ├── uk
│ │ └── index.ts
│ └── imported
│ ├── one
│ │ ├── de
│ │ ├── fr
│ │ ├── pl
│ │ └── uk
│ ├── two
│ │ ├── de
│ │ ├── fr
│ │ ├── pl
│ │ └── uk
│ └── index.ts
Як бачите, кожен модуль має переклад у теці locales
, яка містить дві теки:
current
- переклад для поточного модуля;imported
- змінений чи доповнений переклад для імпортованих модулів.
Причому лише тека current
містить теку _base-en
, де розміщено базові словники (в даному разі - англійською мовою), від яких відгалуджуються словники з перекладами на інші мови. У назві використано символ нижнього підкреслення щоб _base-en
була постійно вгорі над іншими теками.