配置i18n时输出键而非对应值,求排查问题原因
i18n输出键而非对应值的常见排查点
语言文件加载路径错误
确认i18n配置中指向语言文件的路径是否正确,比如你的en.json是否放在配置指定的目录下。以i18next为例,若配置中指定的资源路径不对,会导致无法加载翻译内容,最终输出键名。
示例正确配置:import i18n from 'i18next'; import { initReactI18next } from 'react-i18next'; // 确保这个路径指向你的en.json文件 import enTranslations from './locales/en.json'; i18n.use(initReactI18next).init({ resources: { en: { translation: enTranslations // 正确挂载语言资源 } }, lng: 'en', fallbackLng: 'en', interpolation: { escapeValue: false } });语言资源未正确注册
部分i18n库需要明确将JSON翻译内容注册到对应locale下,若遗漏这一步,库无法读取到翻译值,会直接返回键名。比如Node.js的i18n模块:const i18n = require('i18n'); i18n.configure({ locales: ['en'], directory: __dirname + '/locales', // 确保目录包含en.json defaultLocale: 'en' });调用函数的参数格式错误
检查__函数的传参是否符合所用库的要求。很多库的翻译函数第一个参数直接是键名,而非包含phrase和locale的对象。比如正确调用可能是:__('hi', { name: 'Marcus' });若错误传递对象作为第一个参数,库无法识别键名,会直接返回传入的对象内容或键名。
插值语法不匹配(次要但需确认)
你使用的{{name}}插值语法需与所用i18n库匹配,比如i18next默认支持该语法,但有些库使用%s或{name}。不过语法不匹配一般不会直接导致输出键名,但若同时存在加载问题则可能叠加影响。
内容的提问来源于stack exchange,提问作者Maor agai
相关产品推荐
相关产品推荐

