React native 如何使用包含en.json和da.json等翻译的后端服务器Web服务向应用程序提供本地化和多语言文本?
我想为应用程序添加多语言支持,但所有关键字都来自后端Web服务。如何获取该关键字并在应用程序中添加翻译 我目前正在使用静态关键字,如以下代码: 我使用react-native-i18n作为本地化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
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));