เดฑเดฟเดฏเดพเด•เตเดŸเต เดจเต‡เดฑเตเดฑเต€เดตเดฟเตฝ เด’เดฐเต เดฌเดนเตเดญเดพเดทเดพ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŽเดดเตเดคเตเดจเตเดจเต

เดฑเดฟเดฏเดพเด•เตเดŸเต เดจเต‡เดฑเตเดฑเต€เดตเดฟเตฝ เด’เดฐเต เดฌเดนเตเดญเดพเดทเดพ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŽเดดเตเดคเตเดจเตเดจเต

เดชเตเดคเดฟเดฏ เดฐเดพเดœเตเดฏเด™เตเด™เดณเตเด‚ เดชเตเดฐเดฆเต‡เดถเด™เตเด™เดณเตเด‚ เดชเดฐเตเดฏเดตเต‡เด•เตเดทเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด…เดจเตเดคเดพเดฐเดพเดทเตเดŸเตเดฐ เด•เดฎเตเดชเดจเดฟเด•เตพเด•เตเด•เต เด‰เตฝเดชเตเดชเดจเตเดจ เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดตเตฝเด•เตเด•เดฐเดฃเด‚ เดตเดณเดฐเต† เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต. เด…เดคเตเดชเต‹เดฒเต†, เดฎเตŠเดฌเตˆเตฝ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพเด•เตเด•เตเด‚ เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดตเตฝเด•เตเด•เดฐเดฃเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เด’เดฐเต เดกเต†เดตเดฒเดชเตเดชเตผ เด…เดจเตเดคเดพเดฐเดพเดทเตเดŸเตเดฐ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดฎเดฑเตเดฑเตŠเดฐเต เดฐเดพเดœเตเดฏเดคเตเดคเต เดจเดฟเดจเตเดจเตเดณเตเดณ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เต เด…เดตเดฐเตเดŸเต† เดฎเดพเดคเตƒเดญเดพเดทเดฏเดฟเตฝ เด‡เดจเตเดฑเตผเดซเต‡เดธเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด…เดตเดธเดฐเด‚ เดจเตฝเด•เต‡เดฃเตเดŸเดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต. เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ, เดชเดพเด•เตเด•เต‡เดœเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพ เด’เดฐเต เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต เดจเต‡เดฑเตเดฑเต€เดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚ เดชเตเดฐเดคเดฟเด•เดฐเดฟเด•เตเด•เตเด•-เดจเต‡เดฑเตเดฑเต€เดตเต-เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเด•เตเด•เตเด•.

เดธเตเด•เดฟเตฝเดฌเต‹เด•เตเดธเต เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเต: เดตเดฟเดฆเตเดฏเดพเดญเตเดฏเดพเดธ เด“เตบเดฒเตˆเตป เด•เต‹เดดเตเดธเต "เดชเตเดฐเตŠเดซเดทเตป เดœเดพเดต เดกเต†เดตเดฒเดชเตเดชเตผ".
เดžเด™เตเด™เตพ เด“เตผเดฎเตเดฎเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต: "Habr"-เดจเตเดฑเต† เดŽเดฒเตเดฒเดพ เดตเดพเดฏเดจเด•เตเด•เดพเตผเด•เตเด•เตเด‚ - "Habr" เดชเตเดฐเตŠเดฎเต‹เดทเดฃเตฝ เด•เต‹เดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดธเตเด•เดฟเตฝเดฌเต‹เด•เตเดธเต เด•เต‹เดดเตเดธเดฟเตฝ เดšเต‡เดฐเตเดฎเตเดชเต‹เตพ 10 เดฑเต‚เดฌเดฟเตพเดธเต เด•เดฟเดดเดฟเดตเต.

เด‰เดชเด•เดฐเดฃเด™เตเด™เดณเตเด‚ เด•เดดเดฟเดตเตเด•เดณเตเด‚

เดˆ เดฒเต‡เด–เดจเด‚ เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเตป, เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต เดจเต‡เดฑเตเดฑเต€เดตเดฟเดจเตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดŸเดฟเดธเตเดฅเดพเดจ เด•เดดเดฟเดตเตเด•เตพ เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดฎเต†เดทเต€เดจเตเดฑเต† เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดธเตเดตเดฏเด‚ เดชเดฐเดฟเดšเดฏเดชเตเดชเต†เดŸเดพเตป, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดดเดฟเดฏเตเด‚ เด”เดฆเตเดฏเต‹เด—เดฟเด• เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•.

เดธเต‹เดซเตเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ เดŸเต‚เดณเตเด•เดณเตเดŸเต† เดˆ เดชเดคเดฟเดชเตเดชเตเด•เตพ เดžเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฃเต:

  • เดจเต‹เดกเต v10.15.0
  • npm 6.4.1
  • เดจเต‚เตฝ 1.16.0
  • เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต-เดจเต‡เดฑเตเดฑเต€เดตเต 0.59.9
  • เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต-เดจเต‡เดฑเตเดฑเต€เดตเต-เดฒเต‹เด•เตเด•เดฒเตˆเดธเต 1.1.3
  • i18n-js 3.3.0

เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต

เด‡เด‚เด—เตเดฒเต€เดทเต, เดซเตเดฐเดžเตเดšเต, เด…เดฑเดฌเดฟเด•เต เดŽเดจเตเดจเดฟเดตเดฏเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดžเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚. เด†เดฆเตเดฏเด‚ เดจเดฎเตเดฎเตพ react-native-cli เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดชเตเดคเดฟเดฏ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพ เด‡เดคเต เดŸเต†เตผเดฎเดฟเดจเดฒเดฟเตฝ เดŸเตˆเดชเตเดชเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

$ react-native init เดฌเดนเตเดญเดพเดท
$ cd เดฌเดนเตเดญเดพเดท

เด†เดตเดถเตเดฏเดฎเดพเดฏ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เตพ เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเดจเตเดจเต

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดŸเตˆเดชเตเดชเต เดšเต†เดฏเตเดคเตเด•เตŠเดฃเตเดŸเต react-native-localize เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด†เดฆเตเดฏ เดชเดŸเดฟ:
$ เดจเต‚เตฝ เดšเต‡เตผเด•เตเด•เตเด• react-native-localize

เด‡เตปเดธเตเดฑเตเดฑเดฒเต‡เดทเตป เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เด‰เดฃเตเดŸเดพเดฏเดพเตฝ, เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเตป เดฎเดพเดจเตเดตเตฝ เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเดคเต เดฎเต‚เดฒเตเดฏเดตเดคเตเดคเดพเดฃเต.

เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต-เดจเต‡เดฑเตเดฑเต€เดตเต-เดฒเต‹เด•เตเด•เดฒเตˆเดธเต เดฒเตˆเดฌเตเดฐเดฑเดฟ เดกเต†เดตเดฒเดชเตเดชเตผเด•เตเด•เต เดฌเดนเตเดญเดพเดทเดพ เดซเต€เดšเตเดšเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเดตเต‡เดถเดจเด‚ เดจเตฝเด•เตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เด…เดตเตพเด•เตเด•เต เด’เดฐเต เดฒเตˆเดฌเตเดฐเดฑเดฟ เด•เต‚เดŸเดฟ เดตเต‡เดฃเด‚ - i18n.

เดˆ เดฒเต‡เด–เดจเด‚ เด‰เดชเดฏเต‹เด—เดคเตเดคเต† เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเต I18n.js เดœเดพเดตเดพเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเดตเตผเดคเตเดคเดจเด‚ เดจเตฝเด•เตเดจเตเดจเดคเดฟเดจเต.

$ เดจเต‚เตฝ i18n-js เดšเต‡เตผเด•เตเด•เตเด•

เดถเดฐเดฟ, i18n-js เด•เดพเดทเดฟเด‚เด—เต‹ เด“เตผเดฎเตเดฎเดชเตเดชเต†เดŸเตเดคเตเดคเดฒเต‹ เดจเตฝเด•เดพเดคเตเดคเดคเดฟเดจเดพเตฝ, เด‡เดคเดฟเดจเดพเดฏเดฟ lodash.memoize เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดžเดพเตป เดจเดฟเตผเดฆเตเดฆเต‡เดถเดฟเด•เตเด•เตเดจเตเดจเต:

$ เดจเต‚เตฝ เดšเต‡เตผเด•เตเด•เตเด• lodash.memoize

เดตเดฟเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต

เด…เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต เดฎเดฑเตเดฑเต เดญเดพเดทเด•เดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฃเดฎเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพ เด†เดฆเตเดฏเด‚ src- เด•เตเด•เตเดณเตเดณเดฟเตฝ เด’เดฐเต เดตเดฟเดตเตผเดคเตเดคเดจ เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เดคเตเดŸเตผเดจเตเดจเต เด“เดฐเต‹ เดญเดพเดทเดฏเตเด•เตเด•เตเด‚ เดฎเต‚เดจเตเดจเต JSON เดซเดฏเดฒเตเด•เตพ.

1. เด‡เด‚เด—เตเดฒเต€เดทเดฟเดจเต en.json;

2. เดซเตเดฐเต†เดžเตเดšเดฟเดจเต fr.json;

3. เด…เดฑเดฌเดฟเด•เตเด•เต ar.json.

เดˆ เดซเดฏเดฒเตเด•เดณเดฟเตฝ เด•เต€เด•เดณเตเด‚ เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเด‚ เด‰เดณเตเดณ JSON เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด“เดฐเต‹ เดญเดพเดทเดฏเตเด•เตเด•เตเด‚ เด•เต€ เด’เดจเตเดจเตเดคเดจเตเดจเต†เดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. เดŸเต†เด•เตเดธเตเดฑเตเดฑเต เดตเดฟเดตเดฐเด™เตเด™เตพ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด‡เดคเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.

เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต เด•เดพเดฃเดฟเด•เตเด•เต‡เดฃเตเดŸ เดตเดพเดšเด•เดฎเดพเดฃเต เดฎเต‚เดฒเตเดฏเด‚.

เด‡เด‚เด—เตเดฒเต€เดทเต:

{"เดนเดฒเต‹": "เดนเดฒเต‹ เดตเต‡เตพเดกเต!"}

เดซเตเดฐเดžเตเดšเต

{"เดนเดฒเต‹": "เดธเดฒเดŸเตเดŸเต เดฒเต† เดฎเต‹เดฃเตเดŸเต†!"}

เด…เดฑเดฌเดฟเด•เตเด•เต

{ "เดนเดฒเต‹": "ุฃู‡ู„ุงู‹ ุจุงู„ุนุงู„ู…"}

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเดฑเตเดฑเต เดญเดพเดทเด•เดณเตเด‚ เด‡เดคเต‡ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดšเต‡เตผเด•เตเด•เดพเด‚.

เดชเตเดฐเดงเดพเดจ เด•เต‹เดกเต

เดˆ เดธเดฎเดฏเดคเตเดคเต, เดจเดฟเด™เตเด™เตพ 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() เดŽเดจเตเดจเดคเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เด‡เดตเดจเตเดฑเต เดฒเดฟเดธเดฃเตผ เดšเต‡เตผเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เดˆ เด˜เดŸเด•เด‚ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดนเดพเตปเดกเดฟเตฝLocalizationChange() เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.

เดนเดพเตปเดกเดฟเตฝLocalizationChange() เดฐเต€เดคเดฟ setI18nConfig(), forceUpdate() เดŽเดจเตเดจเดฟเดต เดธเดœเต€เดตเดฎเดพเด•เตเด•เตเดจเตเดจเต. เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดถเตเดฐเดฆเตเดงเต‡เดฏเดฎเดพเด•เตเดจเตเดจเดคเดฟเดจเต เด˜เดŸเด•เด‚ เดฑเต†เตปเดกเตผ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเดฟเดจเดพเตฝ Android เด‰เดชเด•เดฐเดฃเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

เด…เดชเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพ เด˜เดŸเด•เด‚WillUnmount() เดฐเต€เดคเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดฒเดฟเดธเดฃเดฟเด‚เด—เต เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เด…เดตเดธเดพเดจเดฎเดพเดฏเดฟ, translate() เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเตเด‚ เด…เดคเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เด•เต€ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดšเต‡เตผเดคเตเดคเตเด‚ render() hello เดจเตฝเด•เตเดจเตเดจเต. เดˆ เด˜เดŸเตเดŸเด™เตเด™เตพเด•เตเด•เต เดถเต‡เดทเด‚, เดเดคเต เดญเดพเดทเดฏเดพเดฃเต เด†เดตเดถเตเดฏเดฎเต†เดจเตเดจเต "เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเดจเตเด‚" เด…เดคเดฟเตฝ เดธเดจเตเดฆเต‡เดถเด™เตเด™เตพ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เด…เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต เด•เดดเดฟเดฏเตเด‚.

เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดฒเต‹เดžเตเดšเต

เดตเดฟเดตเตผเดคเตเดคเดจเด‚ เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เดธเดฎเดฏเดฎเดพเดฃเดฟเดคเต.

เด†เดฆเตเดฏเด‚, เดŸเตˆเดชเตเดชเต เดšเต†เดฏเตเดคเตเด•เตŠเดฃเตเดŸเต เดžเด™เตเด™เตพ เดธเดฟเดฎเตเดฒเต‡เดฑเตเดฑเดฑเดฟเดฒเต‹ เดŽเดฎเตเดฒเต‡เดฑเตเดฑเดฑเดฟเดฒเต‹ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต

$ react-native run-ios
$ react-native run-android

เด‡เดคเต เด‡เดคเตเดชเต‹เดฒเต† เด•เดพเดฃเดชเตเดชเต†เดŸเตเด‚:

เดฑเดฟเดฏเดพเด•เตเดŸเต เดจเต‡เดฑเตเดฑเต€เดตเดฟเตฝ เด’เดฐเต เดฌเดนเตเดญเดพเดทเดพ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŽเดดเตเดคเตเดจเตเดจเต

เด‡เดชเตเดชเต‹เตพ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเดฎเดพเดฐเด‚เดญเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเต เดญเดพเดท เดซเตเดฐเดžเตเดšเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เดพเด‚.

เดฑเดฟเดฏเดพเด•เตเดŸเต เดจเต‡เดฑเตเดฑเต€เดตเดฟเตฝ เด’เดฐเต เดฌเดนเตเดญเดพเดทเดพ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŽเดดเตเดคเตเดจเตเดจเต

เดžเด™เตเด™เตพ เด…เดฑเดฌเดฟเดฏเดฟเดฒเตเด‚ เด’เดฐเต‡ เด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดตเตเดฏเดคเตเดฏเดพเดธเดฎเดฟเดฒเตเดฒ.

เด‡เดคเตเดตเดฐเต† เดตเดณเดฐเต† เดจเดฒเตเดฒเดคเดพเดฏเดฟเดฐเตเดจเตเดจเต.

เดŽเดจเตเดจเดพเตฝ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเตฝ เดตเดฟเดตเตผเดคเตเดคเดจเด‚ เด‡เดฒเตเดฒเดพเดคเตเดค เด’เดฐเต เดฑเดพเตปเดกเด‚ เดญเดพเดท เดจเดฟเด™เตเด™เตพ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเดพเตฝ เดŽเดจเตเดคเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเด‚?

เดฒเดญเตเดฏเดฎเดพเดฏ เดŽเดฒเตเดฒเดพ เดญเดพเดทเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เด’เดชเตเดฑเตเดฑเดฟเดฎเตฝ เดตเดฟเดตเตผเดคเตเดคเดจเด‚ เดจเตฝเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต findBestLanguage-เดจเตเดฑเต† เดšเตเดฎเดคเดฒเดฏเต†เดจเตเดจเต เด‡เดคเต เดฎเดพเดฑเตเดจเตเดจเต. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เดญเดพเดท เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚.

เดžเด™เตเด™เตพ เดซเต‹เตบ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเดพเดฃเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, iOS เดŽเดฎเตเดฒเต‡เดฑเตเดฑเดฑเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดญเดพเดทเด•เดณเตเดŸเต† เด•เตเดฐเดฎเด‚ เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚.

เดฑเดฟเดฏเดพเด•เตเดŸเต เดจเต‡เดฑเตเดฑเต€เดตเดฟเตฝ เด’เดฐเต เดฌเดนเตเดญเดพเดทเดพ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŽเดดเตเดคเตเดจเตเดจเต

เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดค เดญเดพเดท เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดค เดญเดพเดทเดฏเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, findBestAvailableLanguage เดจเดฟเตผเดตเดšเดฟเด•เตเด•เดพเดคเต† เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเดจเตเดจเต, เด…เด™เตเด™เดจเต† เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เดญเดพเดท เด•เดพเดฃเดฟเด•เตเด•เตเด‚.

เดฌเต‹เดฃเดธเต

react-native-localize-เดจเต เดงเดพเดฐเดพเดณเด‚ เดญเดพเดทเดพ เด˜เดŸเด•เด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเดตเต‡เดถเดจเด‚ เดจเตฝเด•เตเดจเตเดจ เด’เดฐเต API เด‰เดฃเตเดŸเต. เดจเดฟเด™เตเด™เตพ เดœเต‹เดฒเดฟ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเต เดฎเต‚เดฒเตเดฏเดตเดคเตเดคเดพเดฃเต.

เด•เดฃเตเดŸเต†เดคเตเดคเดฒเตเด•เตพ

เด’เดฐเต เดชเตเดฐเดถเตเดจเดตเตเดฎเดฟเดฒเตเดฒเดพเดคเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดฌเดนเตเดญเดพเดทเดพ เด†เด•เตเด•เดพเดตเตเดจเตเดจเดคเดพเดฃเต. เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดชเดฟเดจเตเดฑเต† เด‰เดชเดฏเต‹เด•เตเดคเตƒ เด…เดŸเดฟเดคเตเดคเดฑ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เดฎเดฟเด•เดšเตเดš เด“เดชเตเดทเดจเดพเดฃเต React-native-localize.

เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดธเต‹เดดเตเดธเต เด•เต‹เดกเต เด‡เดตเดฟเดŸเต†เดฏเตเดฃเตเดŸเต.

เดธเตเด•เดฟเตฝเดฌเต‹เด•เตเดธเต เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเต:

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•