如何在i18next上使用postProcess?

时间:2019-09-05 08:55:49

标签: react-native internationalization i18next react-i18next

this article中我读到,您可以向i18next添加后处理功能:

i18n.addPostProcessor("myProcessorsName", function(value, key, options) 
{
   return 'some post processed data based on translated value';
});

并在初始化期间添加它:

i18n.init({ postProcess: 'myProcessorsName' });

但是我得到一个错误addPostProcessor不是一个函数。

那么如何为i18next添加和使用后处理功能?

1 个答案:

答案 0 :(得分:0)

我从the documentation得出,您可以创建一个后处理模块,并使用i18next将其添加到use()实例中。

在此示例中,后处理模块将大写返回的任何字符串的首字母:

import i18next from "i18next";
import { initReactI18next } from "react-i18next";

(...)

const CapitalizeFirstLetter = (str) => {
  return str.length ? str.charAt(0).toUpperCase() + str.slice(1) : str
}

const initTranslations = () => {
    i18next
    .use({
      type: 'postProcessor',
      name: 'capitalize',
      process: function (value, key, options, translator) {
        return CapitalizeFirstLetter(value);
      }
    })
    .use(initReactI18next) // passes i18n down to react-i18next
    .init({
      postProcess: ["capitalize"]
    })
}