i18next - динамически добавлять пол при использовании контекста - PullRequest
0 голосов
/ 04 марта 2020

У меня есть следующее:

t('translations::How are you?', { context: this.props.me.gender })

В настоящее время я использую i18next-scanner для автоматического создания файла пространства имен JSON. Проблема, с которой я сталкиваюсь, заключается в том, что когда я использую контекст, я получаю:

"How are you?": "How are you?"     // fallback
"How are you?_": "How are you?"    // context

То, что я действительно хотел бы случиться, это всякий раз, когда context используется в i18n, я бы хотел male и female должны быть сгенерированы следующим образом:

"How are you?": "How are you?"
"How are you?_male": "How are you?"
"How are you?_female": "How are you?"

Я не нашел хорошего способа динамического добавления этих ключей. Какие вещи я могу попробовать?

1 Ответ

0 голосов
/ 05 марта 2020

Я рассмотрел исходный код libs, из тестов похоже, что эта библиотека не поддерживает это.

Но, из этот код , если ваш options.context функция, она будет вызвана, это означает, что вы сможете изменить ее. Проверьте этот код: https://codesandbox.io/s/laughing-ptolemy-vd1xb

Как видите, мне удалось изменить тип контекста, но библиотека не поддерживает ваш случай (основываясь на этой строке ) он добавляет только один контекст.

Это может быть действительно простой PR:]

Редактировать Я добавил эту функцию в i18next- сканер , теперь вы можете указать contextDefaultValues - список значений, которые будут использоваться в случае динамических c значений контекста.

// i18next-scanner.config.js

module.exports = {
    input: [
        'app/**/*.{js,jsx}',
        // Use ! to filter out files or directories
        '!app/**/*.spec.{js,jsx}',
        '!app/i18n/**',
        '!**/node_modules/**',
    ],
    output: './',
    options: {
        ...
        contextDefaultValues: ['male', 'female'] // <--- specify this option  
        ...
    },
    ...
};
...