Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 如何使用包含en.json和da.json等翻译的后端服务器Web服务向应用程序提供本地化和多语言文本?_React Native_React Native Android - Fatal编程技术网

React native 如何使用包含en.json和da.json等翻译的后端服务器Web服务向应用程序提供本地化和多语言文本?

React native 如何使用包含en.json和da.json等翻译的后端服务器Web服务向应用程序提供本地化和多语言文本?,react-native,react-native-android,React Native,React Native Android,我想为应用程序添加多语言支持,但所有关键字都来自后端Web服务。如何获取该关键字并在应用程序中添加翻译 我目前正在使用静态关键字,如以下代码: 我使用react-native-i18n作为本地化 import React, { Component } from 'react'; const en = { login: 'LOGIN', logout: 'LOGOUT', usernameInput: 'USERNAME', passwordInput: 'PAS

我想为应用程序添加多语言支持,但所有关键字都来自后端Web服务。如何获取该关键字并在应用程序中添加翻译

我目前正在使用静态关键字,如以下代码:

我使用react-native-i18n作为本地化

import React, { Component } from 'react';

const en = {
    login: 'LOGIN',
    logout: 'LOGOUT',
    usernameInput: 'USERNAME',
    passwordInput: 'PASSWORD',
    dashboardDrawer: 'Dashboard',
    historyDrawer: 'History',
    feedbackDrawer: 'Feed back',
    settingsDrawer: 'Settings',
    helpDrawer: 'Help',
}

export default en

首先,做一个翻译课

import ReactNative from "react-native";
import I18n from "react-native-i18n";
import * as RNLocalize from "react-native-localize";
import { SafeAreaView, AsyncStorage, NetInfo, Alert } from "react-native";

import en from "./en.json"; // JSON file of words in English
import lv from "./lv.json"; // JSON file of words in Your language

I18n.fallbacks = true;

I18n.translations = {
  en,
  lv
};

global.selectedLanguage = "";

AsyncStorage.getItem("SELECTED_LANGUAGE").then(value => {
  if (value) {
    let languageDict = JSON.parse(value);
    let language = languageDict.language;
    global.selectedLanguage = language;

    if (language === "English") {
      I18n.locale = "en";
    } else {
      I18n.locale = "lv";
    }
  } else {
    I18n.locale = "en";
  }
});

export function changeLanguage() {
  return (I18n.locale = "lv");
}

export function strings(name, params = {}) {
  return I18n.t(name, params);
}

export default I18n;
第二,在UI组件中使用它

例如:


如何从我的服务器的webservice获取翻译?如果您有API,那么首先调用该API,并在单独的变量中使用它。设en=..//来自服务器的json数据让lv=..//服务器中的jsondata I18n.translations={en,lv};你能解释一下怎么做吗?当你的应用程序打开时,首先调用你的API,我想你知道如何调用API。然后,响应将返回JSON数据,该数据将以变量或状态保存在某个位置。然后在上述代码中使用该变量或状态。如果你被卡住了,请随时询问确切的疑问。如果我需要帮助,我会进一步询问。
....
import { strings } from "../../i18n;
....

....
<Text style={styles.titleText}>{strings("sign_up")}</Text>
....
let dict = {
      language: this.state.selectedLanguage
    };
    AsyncStorage.setItem("SELECTED_LANGUAGE", JSON.stringify(dict));