рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдореЗрдВ рдПрдХ рдмрд╣реБрднрд╛рд╖реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдирд╛

рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдореЗрдВ рдПрдХ рдмрд╣реБрднрд╛рд╖реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдирд╛

рдирдП рджреЗрд╢реЛрдВ рдФрд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдп рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд╛рдж рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЗрд╕реА рдкреНрд░рдХрд╛рд░, рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдбреЗрд╡рд▓рдкрд░ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдп рд╡рд┐рд╕реНрддрд╛рд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рджреВрд╕рд░реЗ рджреЗрд╢ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрдирдХреА рдореВрд▓ рднрд╛рд╖рд╛ рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВрдЧреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╕реНрдерд╛рдиреАрдпрдХрд░рдг.

рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ: рд╢реИрдХреНрд╖рд┐рдХ рдСрдирд▓рд╛рдЗрди рдкрд╛рдареНрдпрдХреНрд░рдо "рдкреЗрд╢рд╛ рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░".
рдЕрдиреБрд╕реНрдорд╛рд░рдХ: "рд╣реИрдмрд░" рдХреЗ рд╕рднреА рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП - "рд╣реИрдмрд░" рдкреНрд░рдЪрд╛рд░ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рдирд╛рдорд╛рдВрдХрди рдХрд░рддреЗ рд╕рдордп 10 рд░реВрдмрд▓ рдХреА рдЫреВрдЯред

рдЙрдкрдХрд░рдг рдФрд░ рдХреМрд╢рд▓

рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдХреМрд╢рд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдХрд╛рд░реНрдпрд╢реАрд▓ рдорд╢реАрди рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗ рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ.

рд╣рдореЗрдВ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЯреВрд▓ рдХреЗ рдЗрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

  • рдиреЛрдб v10.15.0
  • рдПрдирдкреАрдПрдо 6.4.1
  • рдпрд╛рд░реНрди 1.16.0
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ 0.59.9
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╕реНрдерд╛рдиреАрдпрдХрд░рдг 1.1.3
  • i18n-js 3.3.0

рд╢реБрд░реВ

рд╣рдо рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рдЕрдВрдЧреНрд░реЗрдЬреА, рдлреНрд░реЗрдВрдЪ рдФрд░ рдЕрд░рдмреА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╕реАрдПрд▓рдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

$ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ init рдорд▓реНрдЯреАрд▓реИрдВрдЧреНрд╡реЗрдЬ
$ рд╕реАрдбреА рдорд▓реНрдЯреАрд▓реИрдВрдЧреНрд╡реЗрдЬ

рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛрдбрд╝рдирд╛

рдкрд╣рд▓рд╛ рдХрджрдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯрд╛рдЗрдк рдХрд░рдХреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИ:
$ рдпрд╛рд░реНрди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдЬреЛрдбрд╝реЗрдВ

рдпрджрд┐ рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рд╕рдорд╕реНрдпрд╛рдПрдБ рдЖрддреА рд╣реИрдВ, рдпрд╣ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдореИрдиреБрдЕрд▓ рдкрдврд╝рдиреЗ рд▓рд╛рдпрдХ рд╣реИ.

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдмрд╣реБрднрд╛рд╖реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рд▓реЗрдХрд┐рди рдЙрд╕реЗ рдПрдХ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЬрд░реВрд░рдд рд╣реИ - 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(), рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред

рдлрд┐рд░ рдЖрдкрдХреЛ рдХрдВрдкреЛрдиреЗрдВрдЯрдбрд┐рдбрдорд╛рдЙрдВрдЯ() рдореЗрдВ рдПрдХ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рддрддреНрд╡ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рд╕реБрдиреЗрдЧрд╛ рдФрд░ рдЙрдирдХреЗ рд╣реЛрдиреЗ рдкрд░ рд╣реИрдВрдбрд▓рд▓реЛрдХрд▓рд╛рдЗрдЬрд╝реЗрд╢рдирдЪреЗрдВрдЬ() рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред

рд╣реИрдВрдбрд▓рд▓реЛрдХрд▓рд╛рдЗрдЬрд╝реЗрд╢рдирдЪреЗрдВрдЬ() рд╡рд┐рдзрд┐ setI18nConfig() рдФрд░ ForceUpdate() рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддреА рд╣реИред рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдлрд┐рд░ рдЖрдкрдХреЛ рдХрдВрдкреЛрдиреЗрдВрдЯрд╡рд┐рд▓рдЕрдирдорд╛рдЙрдВрдЯ() рд╡рд┐рдзрд┐ рд╕реЗ рд╢реНрд░рд╡рдг рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЕрдВрдд рдореЗрдВ, render() Translate() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рдореБрдЦреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдХрд░ рд╣реИрд▓реЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЗрди рдЪрд░рдгреЛрдВ рдХреЗ рдмрд╛рдж, рдПрдкреНрд▓рд┐рдХреЗрд╢рди "рд╕рдордЭ" рд╕рдХреЗрдЧрд╛ рдХрд┐ рдХрд┐рд╕ рднрд╛рд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдореЗрдВ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ

рдЕрдм рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рдЕрдиреБрд╡рд╛рдж рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЯрд╛рдЗрдк рдХрд░рдХреЗ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдпрд╛ рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ

$ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рд░рди-рдЖрдИрдУрдПрд╕
$ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рд░рди-рдПрдВрдбреНрд░реЙрдЗрдб

рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдореЗрдВ рдПрдХ рдмрд╣реБрднрд╛рд╖реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдирд╛

рдЕрдм рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдХреЗ рднрд╛рд╖рд╛ рдХреЛ рдлрд╝реНрд░реЗрдВрдЪ рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдореЗрдВ рдПрдХ рдмрд╣реБрднрд╛рд╖реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдирд╛

рд╣рдо рдЕрд░рдмреА рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рдХрд░рддреЗ рд╣реИрдВ, рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИред

рдЕрдм рддрдХ рддреЛ рд╕рдм рдареАрдХ рд╣реИред

рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рднрд╛рд╖рд╛ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреЛрдИ рдЕрдиреБрд╡рд╛рдж рдирд╣реАрдВ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдлрд╛рдЗрдВрдбрдмреЗрд╕реНрдЯрд▓реИрдВрдЧреНрд╡реЗрдЬ рдХрд╛ рдХрд╛рд░реНрдп рд╕рднреА рдЙрдкрд▓рдмреНрдз рдЕрдиреБрд╡рд╛рджреЛрдВ рдореЗрдВ рд╕реЗ рдЗрд╖реНрдЯрддрдо рдЕрдиреБрд╡рд╛рдж рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднрд╛рд╖рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдЧреА.

рд╣рдо рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдлреЛрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, iOS рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдЖрдк рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдХреНрд░рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдореЗрдВ рдПрдХ рдмрд╣реБрднрд╛рд╖реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдирд╛

рдпрджрд┐ рдЪрдпрдирд┐рдд рднрд╛рд╖рд╛ рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ findBestAvailableLANguage рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд▓реМрдЯрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднрд╛рд╖рд╛ рджрд┐рдЦрд╛рдИ рджреЗред

рдмреЛрдирд╕

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдореЗрдВ рдПрдХ рдПрдкреАрдЖрдИ рд╣реИ рдЬреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рднрд╛рд╖рд╛ рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдХрд╛рдо рд╢реБрд░реВ рдХрд░реЗрдВ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ.

рдирд┐рд╖реНрдХрд░реНрд╖

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╣реБрднрд╛рд╖реА рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд░рд┐рдПрдХреНрдЯ-рдиреЗрдЯрд┐рд╡-рд▓реЛрдХрд▓рд╛рдЗрдЬрд╝ рдПрдХ рдмреЗрд╣рддрд░реАрди рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдРрдк рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдзрд╛рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдБ рд╕реНрдерд┐рдд рд╣реИ.

рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ:

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ