БъздавамС ΠΌΠ½ΠΎΠ³ΠΎΠ΅Π·ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с React Native

БъздавамС ΠΌΠ½ΠΎΠ³ΠΎΠ΅Π·ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с React Native

Локализацията Π½Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΡ‚Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½Π° Π·Π° ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π°Π²Π»ΠΈΠ·Π°Ρ‚ Π² Π½ΠΎΠ²ΠΈ Π·Π° тях Π΄ΡŠΡ€ΠΆΠ°Π²ΠΈ ΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½ΠΈ. По ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ локализацията Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° ΠΈ Π½Π° ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈΡ‚Π΅ прилоТСния. ΠšΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡŠΡ‚ Π·Π°ΠΏΠΎΡ‡Π½Π΅ ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Π° Скспанзия, Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° прСдостави Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° страна Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с интСрфСйса Π½Π° тСхния Ρ€ΠΎΠ΄Π΅Π½ Π΅Π·ΠΈΠΊ. Π’ Ρ‚Π°Π·ΠΈ статия Ρ‰Π΅ създадСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ React Native, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° react-native-localize.

Skillbox ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°: ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅Π½ ΠΎΠ½Π»Π°ΠΉΠ½ курс Β«ΠŸΡ€ΠΎΡ„Π΅ΡΠΈΡ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΒ».
НапомнямС: Π·Π° всички Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ Π½Π° Β«Π₯Π°Π±Ρ€Π°Β» β€” ΠΎΡ‚ΡΡ‚ΡŠΠΏΠΊΠ° ΠΎΡ‚ 10 000 Ρ€ΡƒΠ±Π»ΠΈ ΠΏΡ€ΠΈ записванС Π½Π° всСки курс Skillbox с ΠΏΡ€ΠΎΠΌΠΎΠΊΠΎΠ΄ Β«Π₯Π°Π±Ρ€Β».

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΈ ΠΈ умСния

Π—Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ Ρ‚Π°Π·ΠΈ статия, са Π½ΡƒΠΆΠ½ΠΈ основни умСния Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с React Native. Π—Π° Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ с настройкитС Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½Π°Ρ‚Π° машина ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π°Ρ‚Π° инструкция.

НуТдаСм сС ΠΎΡ‚ слСднитС вСрсии Π½Π° софтуСрнитС инструмСнти:

  • Node v10.15.0
  • npm 6.4.1
  • yarn 1.16.0
  • react-native 0.59.9
  • react-native-localize 1.1.3
  • i18n-js 3.3.0

Π—Π°ΠΏΠΎΡ‡Π²Π°ΠΌΠ΅

Π©Π΅ създадСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° английски, фрСнски ΠΈ арабски Π΅Π·ΠΈΡ†ΠΈ. ΠŸΡŠΡ€Π²ΠΎ създавамС Π½ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ react-native-cli. Π—Π° Ρ†Π΅Π»Ρ‚Π° Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° трябва Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ слСдното:

$ react-native init multiLanguage
$ cd multiLanguage

ДобавямС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

ΠŸΡŠΡ€Π²ΠΎ трябва Π΄Π° инсталирамС react-native-localize, ΠΊΠ°Ρ‚ΠΎ напишСм слСдното:
$ yarn add react-native-localize

Ако Π²ΡŠΠ·Π½ΠΈΠΊΠ½Π°Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° инсталиранСто, Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄Π°Ρ‚Π΅ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ Π·Π° инсталация.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° react-native-localize Π΄Π°Π²Π° Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠ΅Π·ΠΈΡ‡Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Но Π΅ Π½ΡƒΠΆΠ½Π° ΠΈ Π΄Ρ€ΡƒΠ³Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° β€” i18n.

Π’ статията сС описва ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ ΠΉ I18n.js Π·Π° осигуряванС Π½Π° ΠΏΡ€Π΅Π²ΠΎΠ΄ Π² JavaScript.

$ yarn add i18n-js

Въй ΠΊΠ°Ρ‚ΠΎ i18n-js Π½Π΅ прСдоставя ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ ΠΈΠ»ΠΈ мСмоизация, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ lodash.memoize Π·Π° Ρ‚Π°Π·ΠΈ Ρ†Π΅Π»:

$ yarn add lodash.memoize

Π Π°Π±ΠΎΡ‚Π° с ΠΏΡ€Π΅Π²ΠΎΠ΄ΠΈ

Π—Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈ Π΅Π·ΠΈΡ†ΠΈ, ΠΏΡŠΡ€Π²ΠΎ трябва Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ translations Π² src, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ β€” Ρ‚Ρ€ΠΈ JSON Ρ„Π°ΠΉΠ»Π°, ΠΏΠΎ Π΅Π΄ΠΈΠ½ Π·Π° всСки ΠΎΡ‚ Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅.

1. en.json за английски;

2. fr.json Π·Π° фрСнски;

3. ar.json Π·Π° арабски.

Π’Π΅Π·ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ JSON ΠΎΠ±Π΅ΠΊΡ‚ΠΈ с ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ ΠΈ стойности. ΠšΠ»ΡŽΡ‡ΡŠΡ‚ Ρ‰Π΅ бъдС Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ Π·Π° всСки Π΅Π·ΠΈΠΊ. Π’ΠΎΠΉ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π·Π° Π΄Π° ΠΏΠΎΠΊΠ°Π·Π²Π° тСкстовата информация.

Бтойността (value) Π΅ Ρ‚Π΅ΠΊΡΡ‚ΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ трябва Π΄Π° сС ΠΏΠΎΠΊΠ°Π·Π²Π° Π½Π° потрСбитСля.

Английски Сзик:

{ "hello": "Hello World!"}

ЀрСнски

{ "hello": "Salut le Monde!"}

Арабски

{ "hello": "Ψ£Ω‡Ω„Ψ§Ω‹ Ψ¨Ψ§Ω„ΨΉΨ§Ω„Ω…"}

По ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ ΠΌΠΎΠΆΠ΅ Π΄Π° добавятС ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Π΅Π·ΠΈΡ†ΠΈ.

ОсновСн код

На Ρ‚ΠΎΠ·ΠΈ Π΅Ρ‚Π°ΠΏ трябва Π΄Π° ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»Π° App.js ΠΈ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚:

import React ΠΎΡ‚ "react";
import * as RNLocalize ΠΎΡ‚ "react-native-localize";
import i18n ΠΎΡ‚ "i18n-js";
import memoize ΠΎΡ‚ "lodash.memoize"; // Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Π·Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅/ΠΌΠ΅ΠΌΠΎΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π·Π° ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π° производитСлност
 
import {
  I18nManager,
  SafeAreaView,
  ScrollView,
  StyleSheet,
  Text,
  View
} ΠΎΡ‚ "react-native";

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° сС добавят ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ константи, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ ΠΏΠΎ-късно.

const translationGetters = {
  // ΠΌΡŠΡ€Π·Π΅Π»ΠΈΠ²ΠΈ изисквания (ΠΌΠ΅Ρ‚Ρ€ΠΎ bundler Π½Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° 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 = () => {
  // Ρ€Π΅Π·Π΅Ρ€Π²Π΅Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π°ΠΊΠΎ няма Π½Π°Π»ΠΈΡ‡Π΅Π½ Π΅Π·ΠΈΠΊ
  const fallback = { languageTag: "en", isRTL: false };
 
  const { languageTag, isRTL } =
    RNLocalize.findBestAvailableLanguage(Object.keys(translationGetters)) ||
    fallback;
 
  // изчистванС Π½Π° кСша Π½Π° ΠΏΡ€Π΅Π²ΠΎΠ΄ΠΈΡ‚Π΅
  translate.cache.clear();
  // Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° посоката Π½Π° ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅
  I18nManager.forceRTL(isRTL);
  // настройка Π½Π° конфигурация Π½Π° i18n-js
  i18n.translations = { [languageTag]: translationGetters[languageTag]() };
  i18n.locale = languageTag;
};

Π‘Π΅Π³Π° Ρ‰Π΅ създадСм клас ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ App:

export default class App extends React.Component {
  constructor(props) {
    super(props);
    setI18nConfig(); // настройка Π½Π° Π½Π°Ρ‡Π°Π»Π½Π°Ρ‚Π° конфигурация
  }
 
  componentDidMount() {
    RNLocalize.addEventListener("change", this.handleLocalizationChange);
  }
 
  componentWillUnmount() {
    RNLocalize.removeEventListener("change", this.handleLocalizationChange);
  }
 
  handleLocalizationChange = () => {
    setI18nConfig();
    this.forceUpdate();
  };
 
  render() {
    return (
      
        {translate("hello")}
      
    );
  }
}
 
const styles = StyleSheet.create({
  safeArea: {
    backgroundColor: "white",
    flex: 1,
    alignItems: "center",
    justifyContent: "center"
  },
  value: {
    fontSize: 18
  }
});

ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ β€” setI18nConfig() β€” настройва Π½Π°Ρ‡Π°Π»Π½Π°Ρ‚Π° конфигурация.

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π² componentDidMount() трябва Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π» Π·Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ слСди Π·Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Ρ‰Π΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π° handleLocalizationChange() ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ‚Π΅ сС случват.

ΠœΠ΅Ρ‚ΠΎΠ΄ΡŠΡ‚ handleLocalizationChange() Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€Π° setI18nConfig() ΠΈ forceUpdate(). Π’ΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° устройства Π½Π° Android, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΡŠΡ‚ трябва Π΄Π° бъдС Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ€Π°Π½, Π·Π° Π΄Π° станат ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²ΠΈΠ΄ΠΈΠΌΠΈ.

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° трябва Π΄Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅ΠΌ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Ρ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° componentWillUnmount().

Накрая, Π² render() сС Π²Ρ€ΡŠΡ‰Π° hello Ρ‡Ρ€Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° translate() ΠΈ добавянС Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° key. Π‘Π»Π΅Π΄ Ρ‚Π΅Π·ΠΈ дСйствия ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° "Ρ€Π°Π·Π±ΠΈΡ€Π°" ΠΊΠΎΠΉ Π΅Π·ΠΈΠΊ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΈ Π΄Π° ΠΏΠΎΠΊΠ°Π·Π²Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½Π΅Π³ΠΎ.

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ

Π‘Π΅Π³Π° Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΡŠΡ‚ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΡ€Π΅Π²ΠΎΠ΄ΡŠΡ‚.

ΠŸΡŠΡ€Π²ΠΎ стартирамС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² симулатора ΠΈΠ»ΠΈ Π΅ΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€Π°, Π½Π°Π±ΠΈΡ€Π°ΠΉΠΊΠΈ

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

Π’ΠΎΠ²Π° Ρ‰Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ‚Π°ΠΊΠ°:

БъздавамС ΠΌΠ½ΠΎΠ³ΠΎΠ΅Π·ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с React Native

Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ Π΄Π° смСнитС Π΅Π·ΠΈΠΊΠ° Π½Π° фрСнски, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄Π° стартиратС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

БъздавамС ΠΌΠ½ΠΎΠ³ΠΎΠ΅Π·ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с React Native

Π‘ арабския Π΅Π·ΠΈΠΊ ΠΏΡ€Π°Π²ΠΈΠΌ ΡΡŠΡ‰ΠΎΡ‚ΠΎ, Ρ€Π°Π·Π»ΠΈΠΊΠ° няма.

ДосСга всичко Π²ΡŠΡ€Π²ΠΈ Π΄ΠΎΠ±Ρ€Π΅.

Но ΠΊΠ°ΠΊΠ²ΠΎ Ρ‰Π΅ сС случи, Π°ΠΊΠΎ ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ случайния Π΅Π·ΠΈΠΊ, Π·Π° ΠΊΠΎΠΉΡ‚ΠΎ няма ΠΏΡ€Π΅Π²ΠΎΠ΄ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ?

Оказва сС, Ρ‡Π΅ Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° findBestLanguage Π΅ Π΄Π° прСдостави оптималния ΠΎΡ‚ всички Π½Π°Π»ΠΈΡ‡Π½ΠΈ ΠΏΡ€Π΅Π²ΠΎΠ΄. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Ρ‰Π΅ сС ΠΏΠΎΠΊΠ°Π·Π²Π° Π΅Π·ΠΈΠΊΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

Π‘Ρ‚Π°Π²Π° Π²ΡŠΠΏΡ€ΠΎΡ Π·Π° настройкитС Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°. НапримСр, Π² iOS Π΅ΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ€Π΅Π΄Π° Π½Π° Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅.

БъздавамС ΠΌΠ½ΠΎΠ³ΠΎΠ΅Π·ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с React Native

Ако избраният Π΅Π·ΠΈΠΊ Π½Π΅ Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½, findBestAvailableLanguage Π²Ρ€ΡŠΡ‰Π° undefined, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ‰Π΅ сС ΠΏΠΎΠΊΠ°Π·Π²Π° Π΅Π·ΠΈΠΊΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

Бонус

react-native-localize Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π° с API, ΠΊΠΎΠ΅Ρ‚ΠΎ прСдоставя Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ голямо количСство Π΅Π·ΠΈΠΊΠΎΠ²ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ. ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°, Π΄ΠΎΠ±Ρ€Π΅ Π΅ Π΄Π° сС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅Ρ‚Π΅ с докумСнтацията.

Изводи

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠ΅Π·ΠΈΡ‡Π½ΠΎ Π±Π΅Π· особСни трудности. React-native-localize Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π΅Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ позволява Π΄Π° Ρ€Π°Π·ΡˆΠΈΡ€ΠΈΡ‚Π΅ ΠΊΡ€ΡŠΠ³Π° Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

Π˜Π·Ρ…ΠΎΠ΄Π½ΠΈΡΡ‚ ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° сС Π½Π°ΠΌΠΈΡ€Π° Ρ‚ΡƒΠΊ.

Skillbox ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°:

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster