获取i18next实例支持语言列表的标准方式是什么?
问题:获取i18next当前支持的所有语言列表
在React应用中使用i18next/react-i18next,已按常规配置多语言资源:
i18n .use(LanguageDetector) .use(initReactI18next) .init({ fallbackLng: "en", resources: { en: { ... }, de: { ... }, pl: { ... }, // ... }, });
需要获取该i18next实例当前支持的语言列表,用于制作语言选择器,确定可传入i18next.changeLanguage()的参数。由于i18next支持运行时修改资源,语言列表可能已变更,因此希望从i18next直接获取真实状态。
最初尝试用i18next.languages,但它仅返回当前活跃语言,无法体现所有可用语言。目前使用Object.keys(i18n.services.resourceStore.data)获取列表,虽能反映变更,但感觉像非官方取巧方式,请问是否有更标准的做法?
标准解决方案
i18next提供了官方认可的API来获取所有已加载的语言列表,无需直接访问内部私有属性:
i18next v22+ 推荐用法:使用
i18next.getLanguages()方法,这是专门新增的公开API,直接返回当前所有可用语言的字符串数组,完全适配运行时资源变更场景:const availableLanguages = i18next.getLanguages(); // 返回示例:["en", "de", "pl"]兼容旧版本(v22以下):通过
resourceStore提供的公开方法getLanguages()获取,比直接读取data属性更符合API规范:const availableLanguages = i18next.services.resourceStore.getLanguages();
这两种方式都能准确反映i18next实例的实时语言资源状态,属于官方推荐的标准用法,比直接访问内部数据结构更可靠。
内容的提问来源于stack exchange,提问作者Autumn Leaf
相关产品推荐
相关产品推荐

