ืฉืจื™ื™ื‘ืŸ ืึท ืžืึทืœื˜ื™ื™ืœื™ื ื’ื•ื•ืึทืœ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ React Native

ืฉืจื™ื™ื‘ืŸ ืึท ืžืึทืœื˜ื™ื™ืœื™ื ื’ื•ื•ืึทืœ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ React Native

ืคึผืจืึธื“ื•ืงื˜ ืœืึธื•ืงืึทืœืึทื–ื™ื™ืฉืึทืŸ ืื™ื– ื–ื™ื™ืขืจ ื•ื•ื™ื›ื˜ื™ืง ืคึฟืึทืจ ืื™ื ื˜ืขืจื ืึทืฆื™ืึธื ืึทืœืข ืงืึธืžืคึผืึทื ื™ืขืก ื•ื•ืึธืก ื•ื™ืกืคืึธืจืฉืŸ ื ื™ื™ึทืข ืœืขื ื“ืขืจ ืื•ืŸ ืžืงื•ืžื•ืช. ืกื™ืžื™ืœืึทืจืœื™, ืœืึธื•ืงืึทืœืึทื–ื™ื™ืฉืึทืŸ ืื™ื– ื“ืืจืฃ ืคึฟืึทืจ ืจื™ืจืขื•ื•ื“ื™ืง ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื–. ืื•ื™ื‘ ืึท ื“ืขื•ื•ืขืœืึธืคึผืขืจ ื”ื™ื™ื‘ื˜ ืื™ื ื˜ืขืจื ืึทืฆื™ืึธื ืึทืœืขืจ ื™ืงืกืคึผืึทื ืฉืึทืŸ, ืขืก ืื™ื– ื•ื•ื™ื›ื˜ื™ืง ืฆื• ื’ืขื‘ืŸ ื ื™ืฆืขืจืก ืคื•ืŸ ืืŸ ืื ื“ืขืจ ืœืึทื ื“ ื“ื™ ื’ืขืœืขื’ื ื”ื™ื™ื˜ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ื™ ืฆื•ื‘ื™ื ื“ ืื™ืŸ ื–ื™ื™ืขืจ ื’ืขื‘ื•ื™ืจืŸ ืฉืคึผืจืึทืš. ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ืžื™ืจ ื•ื•ืขืœืŸ ืฉืึทืคึฟืŸ ืึท React Native ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืžื™ื˜ ื“ืขื ืคึผืขืงืœ ืจืขืึทื’ื™ืจืŸ-ื’ืขื‘ื•ื™ืจืŸ-ืœืึธื•ืงืึทืœื™ื–ื™ืจืŸ.

Skillbox ืจืขืงืึทืžืขื ื“ื–: ื‘ื™ืœื“ื•ื ื’ืงืจื™ื™ื– ืึธื ืœื™ื™ืŸ ืงื•ืจืก "ืคืึทืš ื“ื–ืฉืึทื•ื•ืึท ื“ืขื•ื•ืขืœืึธืคึผืขืจ".
ืžื™ืจ ื“ืขืจืžืึธื ืขืŸ ืื™ืจ: ืคึฟืึทืจ ืึทืœืข ืœื™ื™ืขื ืขืจ ืคื•ืŸ "ื”ื‘ืจ" - ืึท ืึทืจืึธืคึผืจืขื›ืขื ืขืŸ ืคื•ืŸ 10 ืจื•ื‘ืœ ื•ื•ืขืŸ ืื™ืจ ืคืึทืจืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ ืงื™ื™ืŸ ืกืงื™ืœื‘ืึธืงืก ืงื•ืจืก ื ื™ืฆืŸ ื“ื™ ืคึผืขืจืžืึธื•ืฉืึทื ืึทืœ ืงืึธื“ "ื”ื‘ืจ".

ืžื›ืฉื™ืจื™ื ืื•ืŸ ืกืงื™ืœื–

ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ืื™ืจ ื“ืึทืจืคึฟืŸ ื™ืงืขืจื“ื™ืง ืกืงื™ืœื– ืื™ืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ React Native. ืฆื• ื‘ืืงืขื ืขืŸ ื–ื™ืš ืžื™ื˜ ื“ื™ ืกืขื˜ื˜ื™ื ื’ืก ืคื•ืŸ ื“ื™ ืึทืจื‘ืขื˜ ืžืึทืฉื™ืŸ, ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ื“ื™ ื‘ืึทืึทืžื˜ืขืจ ื™ื ืกื˜ืจืึทืงืฉืึทื ื–.

ืžื™ืจ ื•ื•ืขืœืŸ ื“ืึทืจืคึฟืŸ ื“ื™ ื•ื•ืขืจืกื™ืขืก ืคื•ืŸ ื•ื•ื™ื™ื›ื•ื•ืืจื’ ืžื›ืฉื™ืจื™ื:

  • ื ืึธื“ืข ื•ื•10.15.0
  • ื ืคึผื 6.4.1
  • ื™ืึทืจืŸ 1.16.0
  • ืจืขืึทื’ื™ืจืŸ-ื’ืขื‘ื•ื™ืจืŸ 0.59.9
  • react-native-localize 1.1.3
  • i18n-js 3.3.0

ื’ืขื˜ื™ื ื’ ืกื˜ืึทืจื˜ืขื“

ืžื™ืจ ื•ื•ืขืœืŸ ืฉืึทืคึฟืŸ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื•ื•ืึธืก ื•ื•ืขื˜ ืฉื˜ื™ืฆืŸ ืขื ื’ืœื™ืฉ, ืคืจืื ืฆื•ื™ื–ื™ืฉ ืื•ืŸ ืึทืจืึทื‘ื™ืฉ. ืขืจืฉื˜ืขืจ ืžื™ืจ ืžืึทื›ืŸ ืึท ื ื™ื™ึทืข ืคึผืจื•ื™ืขืงื˜ ื ื™ืฆืŸ ืจืขืึทืงื˜-ื’ืขื‘ื•ื™ืจืŸ-ืงืœื™. ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืึทืจื™ื™ึทืŸ ื“ืขื ื•ื•ืึธืงื–ืึทืœ:

$ ืจืขืึทื’ื™ืจืŸ-ื’ืขื‘ื•ื™ืจืŸ ื™ื ื™ื˜ ืžื•ืœื˜ื™ ืฉืคึผืจืึทืš
$ ืงืึธืžืคึผืึทืงื˜ื“ื™ืกืง MultiLanguage

ืึทื“ื™ื ื’ ื“ื™ ื ื™ื™ื˜ื™ืง ืœื™ื™ื‘ืจืขืจื™ื–

ื“ืขืจ ืขืจืฉื˜ืขืจ ืฉืจื™ื˜ ืื™ื– ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืจืขืึทืงื˜-ื’ืขื‘ื•ื™ืจืŸ-ืœืึธืงืึทืœื™ื–ืข ื“ื•ืจืš ื˜ื™ื™ืคึผื™ื ื’ ื“ื™ ืคืืœื’ืขื ื“ืข:
$ ื™ืึทืจืŸ ืœื™ื™ื’ืŸ ืจืขืึทื’ื™ืจืŸ-ื’ืขื‘ื•ื™ืจืŸ-ืœืึธื•ืงืึทืœื™ื™ื–

ืื•ื™ื‘ ืคึผืจืึธื‘ืœืขืžืก ืคืึทืœืŸ ื‘ืขืฉืึทืก ื“ื™ ื™ื ืกื˜ืึทืœื™ืจื•ื ื’ ืคึผืจืึธืฆืขืก, ืขืก ืื™ื– ื•ื•ืขืจื˜ ืœื™ื™ืขื ืขืŸ ื“ื™ ืžืึทื ื•ืึทืœ ืคึฟืึทืจ ื™ื ืกื˜ืึทืœื™ืจื•ื ื’.

ื“ื™ ืจืขืึทืงื˜-ื’ืขื‘ื•ื™ืจืŸ-ืœืึธืงืึทืœื™ื–ืข ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื’ื™ื˜ ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืึทืงืกืขืก ืฆื• ืžืึทืœื˜ื™ื™ืœื™ื ื’ื•ื•ืึทืœ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ. ืื‘ืขืจ ื–ื™ ื“ืืจืฃ ื ืืš ืืฒืŸ ื‘ื™ื‘ืœื™ืื˜ืขืง โ€” ื™18ืŸ.

ื“ืขืจ ืึทืจื˜ื™ืงืœ ื‘ืืฉืจื™ื™ื‘ื˜ ื“ื™ ื ื•ืฆืŸ I18n.js ืื™ืŸ ืกื“ืจ ืฆื• ืฆื•ืฉื˜ืขืœืŸ ืื™ื‘ืขืจื–ืขืฆื•ื ื’ ืื™ืŸ ื“ื–ืฉืึทื•ื•ืึทืกืงืจื™ืคึผื˜.

$ ื™ืึทืจืŸ ืœื™ื™ื’ืŸ i18n-js

ื ื•, ื–ื™ื ื˜ i18n-js ื˜ื•ื˜ ื ื™ืฉื˜ ืฆื•ืฉื˜ืขืœืŸ ืงืึทื˜ืฉื™ื ื’ ืึธื“ืขืจ ืžืขืžืึธื™ื–ืึทื˜ื™ืึธืŸ, ืื™ืš ืคึฟืึธืจืฉืœืึธื’ืŸ ื ื™ืฆืŸ lodash.memoize ืคึฟืึทืจ ื“ืขื:

$ ื™ืึทืจืŸ ืœื™ื™ื’ืŸ lodash.memoize

ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืื™ื‘ืขืจื–ืขืฆื•ื ื’ืขืŸ

ื›ึผื“ื™ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื–ืึธืœ ืงืขื ืขืŸ ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ืื ื“ืขืจืข ืฉืคึผืจืึทื›ืŸ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉืึทืคึฟืŸ ืึท ืื™ื‘ืขืจื–ืขืฆื•ื ื’ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืื™ืŸ src, ื“ืขืจื ืึธืš ื“ืจื™ื™ JSON ื˜ืขืงืขืก ืคึฟืึทืจ ื™ืขื“ืขืจ ืฉืคึผืจืึทืš.

1. en.json ืคึฟืึทืจ ืขื ื’ืœื™ืฉ;

2. ืคืจ.ื“ื–ืฉืกืึธืŸ ืคึฟืึทืจ ืคืจืื ืฆื•ื™ื–ื™ืฉ;

3. ar.json ืคึฟืึทืจ ืึทืจืึทื‘ื™ืฉ.

ื“ื™ ื˜ืขืงืขืก ืึทื ื˜ื”ืึทืœื˜ืŸ JSON ืึทื‘ื“ื–ืฉืขืงืฅ ืžื™ื˜ ืฉืœื™ืกืœืขืŸ ืื•ืŸ ื•ื•ืึทืœื•ืขืก. ื“ืขืจ ืฉืœื™ืกืœ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื“ื™ ื–ืขืœื‘ืข ืคึฟืึทืจ ื™ืขื“ืขืจ ืฉืคึผืจืึทืš. ืขืก ืื™ื– ื’ืขื ื™ืฆื˜ ื“ื•ืจืš ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืฆื• ื•ื•ื™ื™ึทื–ืŸ ื˜ืขืงืกื˜ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข.

ื•ื•ืขืจื˜ ืื™ื– ื“ืขืจ ื˜ืขืงืกื˜ ื•ื•ืึธืก ื“ืึทืจืฃ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื–ืŸ ืฆื• ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ.

ืขื ื’ืœื™ืฉ:

{"hello": "ื”ืขืœื ื•ื•ืขืœื˜!"}

ะคั€ะฐะฝั†ัƒะทัะบะธะน

{"hello": "ืฉืœื•ื ื“ื™ ืžืึธื ื“ืข!"}

ืึทืจืึทื‘ื™ืฉ

{ "ื”ืขืœื": "ื”ืขืœื"}

ืื™ืจ ืงืขื ืขืŸ ืœื™ื™ื’ืŸ ืื ื“ืขืจืข ืฉืคึผืจืึทื›ืŸ ืื™ืŸ ื“ื™ ื–ืขืœื‘ืข ื•ื•ืขื’.

ื”ื•ื™ืคึผื˜ ืงืึธื“

ืื™ืŸ ื“ืขื ืคื•ื ื˜, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืขืคึฟืขื ืขืŸ ื“ื™ App.js ื˜ืขืงืข ืื•ืŸ ืœื™ื™ื’ืŸ ื™ืžืคึผืึธืจืฅ ืฆื• ืขืก:

import React from "react";
import * as RNLocalize from "react-native-localize";
import i18n from "i18n-js";
import memoize from "lodash.memoize"; // Use for caching/memoize for better performance
 
import {
  I18nManager,
  SafeAreaView,
  ScrollView,
  StyleSheet,
  Text,
  View
} from "react-native";

ื ืึธืš ื“ืขื, ืึทื’ื–ื™ืœื™ืขืจื™ ืคืึทื ื’ืงืฉืึทื ื– ืื•ืŸ ืงืึทื ืกื˜ืึทื ืฅ ื–ืขื ืขืŸ ืฆื•ื’ืขื’ืขื‘ืŸ ื•ื•ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื ื•ืฆื™ืง ืฉืคึผืขื˜ืขืจ.

const translationGetters = {
  // lazy requires (metro bundler does not support symlinks)
  ar: () => require("./src/translations/ar.json"),
  en: () => require("./src/translations/en.json"),
  fr: () => require("./src/translations/fr.json")
};
 
const translate = memoize(
  (key, config) => i18n.t(key, config),
  (key, config) => (config ? key + JSON.stringify(config) : key)
);
 
const setI18nConfig = () => {
  // fallback if no available language fits
  const fallback = { languageTag: "en", isRTL: false };
 
  const { languageTag, isRTL } =
    RNLocalize.findBestAvailableLanguage(Object.keys(translationGetters)) ||
    fallback;
 
  // clear translation cache
  translate.cache.clear();
  // update layout direction
  I18nManager.forceRTL(isRTL);
  // set i18n-js config
  i18n.translations = { [languageTag]: translationGetters[languageTag]() };
  i18n.locale = languageTag;
};

ื ื•, ืื™ืฆื˜ ืœืึธื–ืŸ ืื•ื ื“ื– ืžืึทื›ืŸ ืึท ืงืึธืžืคึผืึธื ืขื ื˜ ืคื•ืŸ ื“ื™ ืึทืคึผ ืงืœืึทืก:

export default class App extends React.Component {
  constructor(props) {
    super(props);
    setI18nConfig(); // set initial config
  }
 
  componentDidMount() {
    RNLocalize.addEventListener("change", this.handleLocalizationChange);
  }
 
  componentWillUnmount() {
    RNLocalize.removeEventListener("change", this.handleLocalizationChange);
  }
 
  handleLocalizationChange = () => {
    setI18nConfig();
    this.forceUpdate();
  };
 
  render() {
    return (
      <SafeAreaView style={styles.safeArea}>
        <Text style={styles.value}>{translate("hello")}</Text>
      </SafeAreaView>
    );
  }
}
 
const styles = StyleSheet.create({
  safeArea: {
    backgroundColor: "white",
    flex: 1,
    alignItems: "center",
    justifyContent: "center"
  },
  value: {
    fontSize: 18
  }
});

ื“ืขืจ ืขืจืฉื˜ืขืจ ืขืœืขืžืขื ื˜, setI18nConfig (), ืฉื˜ืขืœื˜ ื“ื™ ืขืจืฉื˜ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ.

ื“ืขืจื ืึธืš ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืœื™ื™ื’ืŸ ืึท ื’ืขืฉืขืขื ื™ืฉ ืœื™ืกื ืขืจ ืฆื• ืงืึธืžืคึผืึธื ืขื ื˜DidMount (), ื“ืขืจ ืขืœืขืžืขื ื˜ ื•ื•ืขื˜ ื”ืขืจืŸ ืคึฟืึทืจ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื•ื ื’ืขืŸ ืื•ืŸ ืจื•ืคืŸ handleLocalizationChange () ื•ื•ืขืŸ ื–ื™ื™ ืคึผืึทืกื™ืจืŸ.

ื“ื™ ื”ืึทื ื“ืœืขืœืึธืงืึทืœื™ื–ืึทื˜ื™ืึธืŸ ื˜ืฉืึทื ื’ืข () ืื•ืคึฟืŸ ืึทืงื˜ืึทื•ื•ื™ื™ืฅ setI18nConfig () ืื•ืŸ ืคืึธืจืกืขื•ืคึผื“ืึทื˜ืข (). ื“ืึธืก ืื™ื– ื ื™ื™ื˜ื™ืง ืคึฟืึทืจ ืึทื ื“ืจื•ื™ื“ ื“ืขื•ื•ื™ืกืขืก, ื•ื•ื™ื™ึทืœ ื“ื™ ืงืึธืžืคึผืึธื ืขื ื˜ ืžื•ื–ืŸ ื–ื™ื™ืŸ ืจืขื ื“ืขืจื“ ืคึฟืึทืจ ื“ื™ ืขื ื“ืขืจื•ื ื’ืขืŸ ืฆื• ื–ื™ื™ืŸ ื‘ืืžืขืจืงื˜.

ื“ืขืจื ืึธืš ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื‘ืึทื–ื™ื™ึทื˜ื™ืงืŸ ื“ื™ ืฆื•ื’ืขื”ืขืจื˜ ืคื•ืŸ ื“ื™ componentWillUnmount () ืื•ืคึฟืŸ.

ืฆื•ื ืกื•ืฃ, render () ืงืขืจื˜ ื”ืขืœื ื“ื•ืจืš ื ื™ืฆืŸ translate () ืื•ืŸ ืึทื“ื™ื ื’ ืึท ืฉืœื™ืกืœ ืคึผืึทืจืึทืžืขื˜ืขืจ ืฆื• ืขืก. ื ืึธืš ื“ื™ ืกื˜ืขืคึผืก, ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื•ื•ืขื˜ ืงืขื ืขืŸ ืฆื• "ืคึฟืึทืจืฉื˜ื™ื™ืŸ" ื•ื•ืึธืก ืฉืคึผืจืึทืš ืื™ื– ื“ืืจืฃ ืื•ืŸ ื•ื•ื™ื™ึทื–ืŸ ืึทืจื˜ื™ืงืœืขืŸ ืื™ืŸ ืขืก.

ืงืึทื˜ืขืจ ืคื•ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ

ืื™ืฆื˜ ืื™ื– ื“ื™ ืฆื™ื™ื˜ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื•ื•ื™ ื“ื™ ืื™ื‘ืขืจื–ืขืฆื•ื ื’ ืึทืจื‘ืขื˜.

ืขืจืฉื˜ืขืจ, ืžื™ืจ ืงืึทื˜ืขืจ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ ื“ื™ ืกื™ืžื™ืึทืœื™ื™ื˜ืขืจ ืึธื“ืขืจ ืขืžื•ืœืึทื˜ืึธืจ ื“ื•ืจืš ื˜ื™ื™ืคึผื™ื ื’

$ ืจืขืึทื’ื™ืจืŸ-ื’ืขื‘ื•ื™ืจืŸ ืœื•ื™ืคืŸ-ื™ืึธืก
$ ืจืขืึทื’ื™ืจืŸ-ื’ืขื‘ื•ื™ืจืŸ ืœื•ื™ืคืŸ-ืึทื ื“ืจื•ื™ื“

ืขืก ื•ื•ืขื˜ ืงื•ืงืŸ ืขืคึผืขืก ื•ื•ื™ ื“ืึธืก:

ืฉืจื™ื™ื‘ืŸ ืึท ืžืึทืœื˜ื™ื™ืœื™ื ื’ื•ื•ืึทืœ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ React Native

ืื™ืฆื˜ ืื™ืจ ืงืขื ืขืŸ ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ื˜ื•ื™ืฉืŸ ื“ื™ ืฉืคึผืจืึทืš ืฆื• ืคืจืื ืฆื•ื™ื–ื™ืฉ ื“ื•ืจืš ืงืึทื˜ืขืจ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.

ืฉืจื™ื™ื‘ืŸ ืึท ืžืึทืœื˜ื™ื™ืœื™ื ื’ื•ื•ืึทืœ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ React Native

ืžื™ืจ ื˜ืึธืŸ ื“ื™ ื–ืขืœื‘ืข ื–ืึทืš ืžื™ื˜ ืึทืจืึทื‘ื™ืฉ, ืขืก ืื™ื– ืงื™ื™ืŸ ื—ื™ืœื•ืง.

ืึทื–ื•ื™ ื•ื•ื™ื™ึทื˜ ืึทื–ื•ื™ ื’ื•ื˜.

ืึธื‘ืขืจ ื•ื•ืึธืก ื›ืึทืคึผืึทื ื– ืื•ื™ื‘ ืื™ืจ ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ืึท ื˜ืจืึทืค - ืฉืคึผืจืึทืš ืคึฟืึทืจ ื•ื•ืึธืก ืขืก ืื™ื– ืงื™ื™ืŸ ืื™ื‘ืขืจื–ืขืฆื•ื ื’ ืื™ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ?

ืขืก ื˜ื•ืจื ืก ืื•ื™ืก ืึทื– ื“ื™ ืึทืจื‘ืขื˜ ืคื•ืŸ findBestLanguage ืื™ื– ืฆื• ืฆื•ืฉื˜ืขืœืŸ ื“ื™ ืึธืคึผื˜ื™ืžืึทืœ ืื™ื‘ืขืจื–ืขืฆื•ื ื’ ืคื•ืŸ ืึทืœืข ื‘ื ื™ืžืฆื. ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ืฉืคึผืจืึทืš ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื–ืŸ.

ืžื™ืจ ื–ืขื ืขืŸ ื’ืขืจืขื“ื˜ ื•ื•ืขื’ืŸ ื˜ืขืœืขืคืึธืŸ ืกืขื˜ื˜ื™ื ื’ืก. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื™ืŸ ื“ื™ ื™ืึธืก ืขืžื•ืœืึทื˜ืึธืจ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ื“ื™ ืกื“ืจ ืคื•ืŸ ืฉืคึผืจืึทื›ืŸ.

ืฉืจื™ื™ื‘ืŸ ืึท ืžืึทืœื˜ื™ื™ืœื™ื ื’ื•ื•ืึทืœ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ React Native

ืื•ื™ื‘ ื“ื™ ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ ืฉืคึผืจืึทืš ืื™ื– ื ื™ืฉื˜ ื“ื™ ื‘ื™ืœื›ืขืจ ืฉืคึผืจืึทืš, findBestAvailableLanguage ืงืขืจื˜ ืึทื ื“ื™ืคื™ื™ื ื“ ืึทื–ื•ื™ ืึทื– ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ืฉืคึผืจืึทืš ืื™ื– ื’ืขื•ื•ื™ื–ืŸ.

ื‘ืึธื ื•ืก

react-native-localize ื”ืื˜ ืึทืŸ API ื•ื•ืึธืก ื’ื™ื˜ ืึทืงืกืขืก ืฆื• ืึท ื’ืจื•ื™ืก ื ื•ืžืขืจ ืคื•ืŸ ืฉืคึผืจืึทืš ืขืœืขืžืขื ื˜ืŸ. ืื™ื™ื“ืขืจ ืื™ืจ ืึธื ื”ื™ื™ื‘ืŸ ืึทืจื‘ืขื˜ืŸ, ืขืก ืื™ื– ื•ื•ืขืจื˜ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ.

ืคื™ื™ื ื“ื™ื ื’ื–

ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืžืื›ื˜ ืžืึทืœื˜ื™ื™ืœื™ื ื’ื•ื•ืึทืœ ืึธืŸ ืงื™ื™ืŸ ืคืจืื‘ืœืขืžืขืŸ. React-native-localize ืื™ื– ืึท ื’ืจื•ื™ืก ืึธืคึผืฆื™ืข ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื™ืงืกืคึผืึทื ื“ ื“ื™ ื‘ืึทื ื™ืฆืขืจ ื‘ืึทื–ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ื™ืŸ ืึทืคึผ.

ืคึผืจืึธื™ืขืงื˜ ืžืงื•ืจ ืงืึธื“ ืื™ื– ื“ื.

Skillbox ืจืขืงืึทืžืขื ื“ื–:

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’