我在 React Native 和 Expo 托管工作流中开发了一个应用程序。我希望该应用程序能够以其他语言提供,因此我将 i18n-js 集成到该应用程序中。我按照在线教程解释了如何将 i18n-js 集成到我的应用程序中,但是导入单词的方式需要我在页面之间导航时按 Ctrl+S,否则会出现:
[缺少“en-US.word”翻译]
有没有人遇到过这个问题?
下面是我如何设置翻译,并将它们导入文件:
创建了一个名为“locales”的文件夹,它与我的文件位于同一位置(因此它是直接的 './' 导入。
在名为“en.json”和“fr.json”的文件夹中创建了 2 个文件
此文件中的翻译设置如下:
{
"sentence" : "This is a sentence.",
"sentence2" : "This is another sentence",
}
在同一文件夹中创建了一个名为“index.js”的文件
index.js 的设置如下:
import i18n from 'i18n-js'
import * as Localization from 'expo-localization'
import en from './en.json'
import fr from './fr.json'
i18n.translations = {
en,
fr
}
const getLanguage = async() => {
try{
const choice = await Localization.locale
i18n.locale = choice.substr(0,2)
i18n.initAsync()
}catch (error){
console.log("Unable to locate")
}
}
getLanguage()
export function t(name){
return i18n.t()
}
- 将翻译导入给定文件:
import { t } from './locales'
i18n.locale = Localization.locale;
i18n.fallbacks = true
...
<Text style = {styles.text}> {i18n.t('sentence')}</Text>
...