i18next-使用上下文时动态添加性别

问题描述 投票:0回答:1

我有以下内容:

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

我真正想发生的事情是在i18n中使用context时,我希望像这样生成malefemale

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

我还没有找到一种动态添加这些键的好方法。如果有人对如何操作有任何建议,我将不胜感激。

javascript internationalization i18next react-i18next
1个回答
0
投票

我从测试中查看了libs源代码,看起来这个lib不支持此。

但是,从this code开始,如果您的options.context是一个函数,它将被调用,这意味着您将能够对其进行修改。检查此代码:https://codesandbox.io/s/laughing-ptolemy-vd1xb

如您所见,我设法更改了上下文类型,但是lib不支持您的情况(基于this line,它仅添加了一个上下文。

这可能是一个非常简单的PR:]

编辑我已经将此功能添加到i18next-scanner中,现在您可以指定contextDefaultValues-在动态上下文值的情况下将使用的值列表。

// 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  
        ...
    },
    ...
};
© www.soinside.com 2019 - 2024. All rights reserved.