Как обеспечить локализацию и многоязычный текст в приложении, используя веб-службы Backend-сервера, которые содержат переводы, такие как en.json и da.json? - PullRequest
0 голосов
/ 18 июня 2019

Я хочу добавить поддержку мультиязычности для приложения, но все ключевые слова взяты из серверных веб-сервисов о том, как получить это ключевое слово и добавить перевод в приложении.

Я сейчас использую статические ключевые слова, как в этом коде:

я использовал реактив-native-i18n в качестве локализации ..

import React, {Component} из'act ';

const en = { Логин: «ВХОД», Выйти: «Выход», usernameInput: 'USERNAME', парольВход: «ПАРОЛЬ», dashboardDrawer: 'Dashboard', historyDrawer: «История», feedbackDrawer: «Обратная связь», settingsDrawer: «Настройки», helpDrawer: «Помощь», }

экспорт по умолчанию en

1 Ответ

0 голосов
/ 18 июня 2019

Сначала создайте класс для перевода,

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;

Во-вторых, используйте это в своих компонентах пользовательского интерфейса,

Например:

....
import { strings } from "../../i18n;
....

....
<Text style={styles.titleText}>{strings("sign_up")}</Text>
....

Клавиша 'sign_up' покажет вам выбранный язык.

А при переключении языка обновлять асинхронное хранилище.

Например:

let dict = {
      language: this.state.selectedLanguage
    };
    AsyncStorage.setItem("SELECTED_LANGUAGE", JSON.stringify(dict));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...