我在翻译组件外部的某些错误消息时遇到了问题。
这是我的i18n设置
const languageDetector = {
type: 'languageDetector',
async: true,
detect: (cb: (baseLanguage: string) => void) => {
let prevLanguage: string;
store.subscribe(() => {
const selectBaseLanguage = makeSelectBaseLanguage();
const baseLanguage = selectBaseLanguage(store.getState());
if (baseLanguage !== prevLanguage) {
prevLanguage = baseLanguage;
cb(baseLanguage);
}
});
},
init: () => {},
cacheUserLanguage: () => {},
};
i18n
.use(languageDetector)
.use(initReactI18next) // passes i18n down to react-i18next
.init({
debug: true,
resources: languagesResources,
// language to use if translations in user language are not available.
fallbackLng: defaultLanguage,
interpolation: {
escapeValue: false, // not needed for react as it escapes by default
},
react: {
wait: false,
useSuspense: false,
},
});
我必须到达此文件中的错误代码----> httpErrors: en_HttpError
路径文件:@config/locales/languageConfig
export const languagesResources = {
en: { ...en, httpErrors: en_HttpError },
tr: { ...tr, httpErrors: tr_HttpError },
};
这是function*
,在这里我需要进行介绍:
路径文件:@config/utils/helpers
export function* _handleFetchError(error: any) {
const { httpStatus, httpDescriptions, errorCode, errorDescription } = error;
console.log('!!! Start Error Handler !!!:', httpStatus, httpDescriptions, errorCode, errorDescription);
const test = i18n.t('en_HttpError');
yield put(sagaShowFullScreenOverlay(GenericOverlay, errorModal));
}
现在,const test
仅产生未定义的错误,
如何在没有未定义错误的情况下基于我收到的errorCode值获得正确的交易?
答案 0 :(得分:3)
我需要有关您的错误的更多信息,但您可能想要执行以下操作:
i18next Fallback。
因此,您可以显示一条取决于httpStatus响应的消息,例如error.404
为Página no encontrada
考虑到您的i18n.t函数正在等待文本键来注册翻译。
在我的简单情况下:
i18n.init({
fallbackLng: {
default: ['es'],
},
resources: {
es: {
common: {
Name: 'Nombre',
....
然后,我可以i18n.t('Name')
来获得'Nombre'