Для использования `i18next-extract` с разделением файлов переводов по страницам, вам нужно настроить плагин так, чтобы он генерировал файлы перевода для каждой страницы отдельно. Вот шаги, которые помогут вам в этом.
### Установка необходимых пакетов
Сначала убедитесь, что у вас установлены необходимые пакеты:
```bash
npm install i18next i18next-extract
```
### Конфигурация i18next-extract
1. **Создайте конфигурационный файл** (например, `i18next-extract.config.js`), который будет настроен на разделение файлов переводов по страницам.
Вот пример конфигурации:
```javascript
module.exports = {
// Укажите пути к вашему исходному коду, где находятся строки для перевода
input: [
'src/pages/**/*.{js,jsx,ts,tsx}', // Ваши страницы
'src/components/**/*.{js,jsx,ts,tsx}', // Ваши компоненты
// Добавьте другие пути по мере необходимости
],
// Укажите где сохранять выходные файлы переводов
output: 'locales/$LOCALE/$NAMESPACE.json',
// Укажите режим, в котором хотите запускать утилиту
// `flat` - все в один файл, `nested` - по папкам
nest: true, // или false, в зависимости от ваших нужд
// Можно указать локали
locales: ['en', 'es'], // Замените на ваши локали
// Название пространства имен
namespace: 'translation', // Имя пространства, по умолчанию "translation"
// Опции для исключения некоторых строк
removeUnusedKeys: true, // Удалять неиспользуемые ключи
};
```
### Разделение на файлы
Чтобы разделить файлы переводов по страницам, вы можете использовать переменные в пути файла, чтобы динамически определять их название. Например:
```javascript
output: 'locales/$LOCALE/$NAMESPACE-$PAGE.json',
```
В этом случае вам нужно будет добавить логику, которая будет отвечать за определение текущей страницы. Это можно сделать с помощью дополнительного параметра в ваших файлах.
Пример с использованием функции для определения страницы:
```javascript
const path = require('path');
module.exports = {
input: ['src/pages/**/*.{js,jsx,ts,tsx}'],
output: (fileName) => {
const pageName = path.basename(fileName, path.extname(fileName)); // Определение имени страницы
return `locales/$LOCALE/${pageName}.json`; // Изменяем вывод для каждой страницы
},
locales: ['en', 'es'],
namespace: 'translation',
removeUnusedKeys: true,
};
```
### Запуск i18next-extract
Теперь вы можете запустить `i18next-extract`, используя команду в терминале:
```bash
npx i18next-extract
```
Это должно сгенерировать файлы переводов в формате JSON, разделенные по страницам.
### Заключение
Это базовая настройка для использования `i18next-extract` с разделением файлов переводов по страницам. Вы можете дополнительно настраивать конфигурацию в зависимости от вашей структуры проекта и конкретных требований. Не забудьте протестировать полученные файлы перевода, чтобы убедиться, что они корректно загружаются в вашем приложении.