gpt4 book ai didi

react-native - 在 React Native 中的数组或对象内部时,i18n 无法正确翻译

转载 作者:行者123 更新时间:2023-12-05 06:59:08 27 4
gpt4 key购买 nike

我正在尝试使用 i18n-js 将一些字符串翻译成其他语言。如果我的代码是普通代码,它就可以工作。例如:

//Displays "Something" (no quotes) where I want it
<Text> translate("Something"); </Text>

但是如果我把它放在一个数组或对象中,然后稍后调用它,它就会停止工作并显示一条丢失的消息,而不是我想要翻译的文本。例如:

const messages = {
something: translate("Something"),
// other translations...
}

// later on
// Displays "[missing "en.Something" translation]" (no quotes) where I want it
<Text> messages.something </Text>

以下是我的翻译功能代码,以及 i18n 的配置。我正在使用 lodash-memoize,但这与问题无关。我已经检查过传递给 i18n.t() 的文本是相同的(包括类型),无论它是在普通代码中还是在数组中,但它仍然没有返回正确的东西。我写了一些错误检查以避免在屏幕上显示丢失的消息,但这仍然不能解决它找不到翻译的问题。

export const translationGetters = ({
en: () => require('./translations/en.json'),
es: () => require('./translations/es.json')
});

export const translate = memoize(
(key, config) => {
text = i18n.t(key, config)
return text
},
(key, config) => (config ? key + JSON.stringify(config) : key)
);

export const setI18nConfig = () => {
// fallback if no available language fits
const fallback = { languageTag: "en", isRTL: false };

const { languageTag, isRTL } =
RNLocalize.findBestAvailableLanguage(Object.keys(translationGetters)) ||
fallback;

// clear translation cache
translate.cache.clear();
// update layout direction
I18nManager.forceRTL(isRTL);
// set i18n-js config
i18n.translations = { [languageTag]: translationGetters[languageTag]() };
i18n.locale = languageTag;
};

我不知道该去哪里。任何建议将不胜感激!

最佳答案

同样的问题,解决方法是从函数内部返回数组/对象:

不工作

export const translations = [i18.t('path')]

作品

export function getTranslations() {
const translations = [i18.t('path')]
return translations
}

关于react-native - 在 React Native 中的数组或对象内部时,i18n 无法正确翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64455414/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com