рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореВрд▓ рдкрд░ рдПрдХ рдмрд╣реБрднрд╛рд╖реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓рд┐рдЦрдирд╛



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

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

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


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

рд╣рдореЗрдВ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЯреВрд▓ рдХреЗ рдЗрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
  • рдиреЛрдб v10.15.0
  • рдПрдирдкреАрдПрдо 6.4.1
  • рдпрд╛рд░реНрди 1.16.0
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА 0.59.9
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╕реНрдерд╛рдиреАрдпрдХрд░рдг 1.1.3
  • i18n-js 3.3.0

рд╢реБрд░реБрдЖрдд рд╣реЛ рд░рд╣реА рд╣реИ


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

$ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА init рдмрд╣реБрднрд╛рд╖реА
$ cd рдмрд╣реБрднрд╛рд╖реА

рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреЛрдбрд╝реЗрдВ

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

рдпрджрд┐ рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕реНрдерд╛рдкрдирд╛ рдореИрдиреБрдЕрд▓ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдмрд╣реБрднрд╛рд╖реА рдХрд╛рд░реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЙрд╕реЗ рдПрдХ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЪрд╛рд╣рд┐рдП - i18nред

рдпрд╣ рд▓реЗрдЦ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП I18n.js рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред

$ рдпрд╛рд░реНрди i18n-js рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ

рдЦреИрд░, рдЪреВрдВрдХрд┐ i18n-js рдХреИрд╢рд┐рдВрдЧ рдпрд╛ рдореЗрдореЙрдЗрдЬрд╝реЗрд╢рди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП lodash.memoize рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ:

$ рдпрд╛рд░реНрди addash.memoize рдЬреЛрдбрд╝реЗрдВ

рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ

рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ src рдХреЗ рдЕрдВрджрд░ рдЕрдиреБрд╡рд╛рдж рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рддреАрди JSON рдлрд╝рд╛рдЗрд▓реЗрдВред

1. en.json for English;

2. fr.json for French;

3. рдЕрд░рдмреА рдХреЗ рд▓рд┐рдП ar.jsonред

рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдФрд░ рдорд╛рди рдХреЗ рд╕рд╛рде JSON рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВред рдХреБрдВрдЬреА рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реЛрдЧреАред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдЯреЗрдХреНрд╕реНрдЯ рд╕реВрдЪрдирд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдкрд╛рда рд╣реИред

рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖рд╛:

{"рд╣реИрд▓реЛ": "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб!"}

рдлреНрд░реЗрдВрдЪ

{"рд╣реИрд▓реЛ": "рд╕рд╛рд▓реБрдд рд▓реЗ рдореЛрдВрдбреЗ!"}

рдЕрд░рдмреА рднрд╛рд╖рд╛

{"рд╣реИрд▓реЛ": ""┘З┘Д╪з 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; }; 

рдареАрдХ рд╣реИ, рдЕрдм рдЪрд▓рд┐рдП App рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдШрдЯрдХ рдмрдирд╛рддреЗ рд╣реИрдВ:

 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 () рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддреА рд╣реИред рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдШрдЯрдХ рдХреЛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реЛ рдЬрд╛рдПрдВред

рддрдм рдЖрдкрдХреЛ рдШрдЯрдХ рд╕реЗ рд╕реБрдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИWillUnmount () рд╡рд┐рдзрд┐ред

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

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


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

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

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

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



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



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

рдЕрдм рддрдХ, рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛ред

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

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

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



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

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


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

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


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

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

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

Source: https://habr.com/ru/post/hi459741/


All Articles