使用i18n-js遇TypeError问题求助(Expo 48.09.9+RN7.20.0)
解决i18n-js "Cannot set property 'fallbacks' of undefined" 错误
这个错误是因为你使用的i18n-js v4+版本和教程里的旧版API不兼容导致的——新版改用了createI18n工厂函数来初始化实例,不再支持直接修改全局i18n对象的属性。
修复步骤:
- 确认你的i18n-js版本:查看
package.json,如果是^4.0.0及以上,按下面的方式重构代码。 - 用
createI18n初始化i18n实例,把fallbacks相关配置整合到初始化参数里:
import { createI18n } from 'i18n-js'; // 你的多语言翻译内容 const translations = { en: { welcome: 'Welcome', // 其他翻译键值对 }, zh: { welcome: '欢迎', // 其他翻译键值对 }, }; // 创建i18n实例并配置 const i18n = createI18n({ locale: 'en', // 当前语言 fallbackLocale: 'en', // 替代原来的fallbacks配置 translations, }); export default i18n;
- 在项目中使用这个实例进行翻译,比如:
import i18n from './path-to-your-i18n-config'; // 使用翻译 console.log(i18n.t('welcome'));
为什么原来的写法失效?
旧版i18n-js会导出一个全局的i18n对象,允许直接修改i18n.fallbacks等属性;但v4+版本为了更好的树摇和模块化,改为通过createI18n创建独立实例,直接访问全局i18n对象会得到undefined,也就出现了你遇到的赋值错误。
内容的提问来源于stack exchange,提问作者Daniele Grillo
相关产品推荐
相关产品推荐

