【问题标题】:i18next return translation of all languages as objecti18next 将所有语言的翻译作为对象返回
【发布时间】:2021-11-19 02:55:23
【问题描述】:

在我的 Express 应用中,我想以我的前端应用支持的所有语言返回错误描述。

Payload 理想情况下应该是这样的:

{ errors: [messages: { de: “Passwort zu kurz”, en: “Password too short” }] }

由于我不想将语言相关文本直接放在我的路由编码中,所以我考虑使用 i18n-next。但是,我不想使用 t(key) 函数返回一种语言,而是使用特定键的相应语言 json 的所有语言。

所以理想情况下我会得到类似的东西:

{ errors: [message: functionINeed(“password_short”)] }

然后,我将有两个语言文件,分别用于 deen,从中提取文本。

有谁知道如何做到这一点?

【问题讨论】:

    标签: node.js express i18next


    【解决方案1】:

    我认为i18next 的公共 API 中没有公开此类功能。但是,您仍然可以使用以下功能实现最终目标:

    function getTranslationsForKey(key) {
      return i18next.languages.reduce((messages, currentLang) => {
        messages[currentLang] = i18next.t(key, { lng: currentLang });
        return messages
      }, {});
    }
    
    const errors = getTranslationsForKey('password_short');
    
    console.log(errors);
    
    // output:
    {
         en: 'Password too short',
         de: 'Passwort zu kurz'
    }
    

    它遍历每个配置的i18next 语言,将提供的键翻译成当前语言,并构建一个包含所有可能的键翻译的哈希映射。

    【讨论】:

    • 感谢茨维坦!正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多