4

我在 React Native 和 Expo 托管工作流中开发了一个应用程序。我希望该应用程序能够以其他语言提供,因此我将 i18n-js 集成到该应用程序中。我按照在线教程解释了如何将 i18n-js 集成到我的应用程序中,但是导入单词的方式需要我在页面之间导航时按 Ctrl+S,否则会出现:

[缺少“en-US.word”翻译]

有没有人遇到过这个问题?

下面是我如何设置翻译,并将它们导入文件:

  1. 创建了一个名为“locales”的文件夹,它与我的文件位于同一位置(因此它是直接的 './' 导入。

  2. 在名为“en.json”和“fr.json”的文件夹中创建了 2 个文件

    此文件中的翻译设置如下:

 {

   "sentence" : "This is a sentence.",

   "sentence2" : "This is another sentence",
 
 }
  1. 在同一文件夹中创建了一个名为“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()
}
  1. 将翻译导入给定文件:
import { t } from './locales'

i18n.locale = Localization.locale;
i18n.fallbacks = true

...

<Text style = {styles.text}> {i18n.t('sentence')}</Text>

...

4

0 回答 0