рдирдП рджреЗрд╢реЛрдВ рдФрд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдп рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд╛рдж рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЗрд╕реА рдкреНрд░рдХрд╛рд░, рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдбреЗрд╡рд▓рдкрд░ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдп рд╡рд┐рд╕реНрддрд╛рд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рджреВрд╕рд░реЗ рджреЗрд╢ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрдирдХреА рдореВрд▓ рднрд╛рд╖рд╛ рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВрдЧреЗ
рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ: рд╢реИрдХреНрд╖рд┐рдХ рдСрдирд▓рд╛рдЗрди рдкрд╛рдареНрдпрдХреНрд░рдо
"рдкреЗрд╢рд╛ рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░" .
рдЕрдиреБрд╕реНрдорд╛рд░рдХ: "рд╣реИрдмрд░" рдХреЗ рд╕рднреА рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП - "рд╣реИрдмрд░" рдкреНрд░рдЪрд╛рд░ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рдирд╛рдорд╛рдВрдХрди рдХрд░рддреЗ рд╕рдордп 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 рдХреИрд╢рд┐рдВрдЧ рдпрд╛ рдореЗрдореЛрдЗрдЬрд╝реЗрд╢рди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП 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 рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд▓реМрдЯрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднрд╛рд╖рд╛ рджрд┐рдЦрд╛рдИ рджреЗред
рдмреЛрдирд╕
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдореЗрдВ рдПрдХ рдПрдкреАрдЖрдИ рд╣реИ рдЬреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рднрд╛рд╖рд╛ рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдХрд╛рдо рд╢реБрд░реВ рдХрд░реЗрдВ,
рдирд┐рд╖реНрдХрд░реНрд╖
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╣реБрднрд╛рд╖реА рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд░рд┐рдПрдХреНрдЯ-рдиреЗрдЯрд┐рд╡-рд▓реЛрдХрд▓рд╛рдЗрдЬрд╝ рдПрдХ рдмреЗрд╣рддрд░реАрди рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдРрдк рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдзрд╛рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрд░реЛрдд рдХреЛрдб
рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ:
- рджреЛ рд╡рд░реНрд╖реАрдп рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкрд╛рдареНрдпрдХреНрд░рдо
"рдореИрдВ рдПрдХ PRO рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВ" .- рдСрдирд▓рд╛рдЗрди рдкрд╛рдареНрдпрдХреНрд░рдо
"рд╢реБрд░реБрдЖрдд рд╕реЗ рд╕реА# рдбреЗрд╡рд▓рдкрд░" .- рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╡рд░реНрд╖ рдкрд╛рдареНрдпрдХреНрд░рдо
"PHP рдбреЗрд╡рд▓рдкрд░ 0 рд╕реЗ PRO рддрдХ" .
рд╕реНрд░реЛрдд: www.habr.com