отсканированный json с «переводом» | i18n-сканер - PullRequest
0 голосов
/ 04 апреля 2020

Я использую React с react-i18next и для генерации файлов i18n json, которые я использую i18next-scanner.

Как я уже видел, для файлов react-i18next json нужен ключ "translation":{...} для всего остального.

Как я могу автоматически добавить i18next-scanner?

РЕДАКТИРОВАТЬ:

i18n. js

import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import de from './de/resource.json';
import en from './en/resource.json';

i18n.use(initReactI18next).init({
    debug: true,
    fallbackLng: 'de',
    lng: 'en',
    load: 'all',
    ns: false,
    resources: { de, en },
    react: { wait: true },
    interpolation: { escapeValue: false },
});

// eslint-disable-next-line
export const t = i18n;

Это я как мне нужно, чтобы он работал: src / i18n / en / resource. json

{
  "translation": {
    "component": {

Вот как i18next-scanner создает файлы: src / i18n / en / resource. json:

{
   "component": {

И мне нужно либо, чтобы react-next не нуждался в этом переводе, либо i18next-scanner учитывает это.

1 Ответ

0 голосов
/ 05 апреля 2020

Поскольку вы используете ресурсы inline , необходимо использовать префикс «translations», вы можете сделать это при использовании.

// i18n.js

import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import de from './de/resource.json';
import en from './en/resource.json';

i18n.use(initReactI18next).init({
    debug: true,
    fallbackLng: 'de',
    lng: 'en',
    load: 'all',
    ns: ["translation"], // <-- specify the NS's exists
    defaultNS: "translation", // <-- what is the default namespace
    resources: { de: {translation: de}, en: {translation: en} }, // <-- this is the change
    react: { wait: true },
    interpolation: { escapeValue: false },
});

// eslint-disable-next-line
export const t = i18n;

This » Префикс перевода называется пространство имен в пространстве i18. Это означает, что ваши файлы перевода могут быть разделены на отдельные файлы.

Обратите внимание , когда вы используете встроенные ресурсы, это означает, что ваши файлы комплекта будут содержать весь перевод, когда пользователь использует только один из языков. Проверьте i18next-xhr-backend , который будет выбирать требуемый язык пользователя во время выполнения.

...