GithubHelp home page GithubHelp logo

isabella232 / react-native-sdk Goto Github PK

View Code? Open in Web Editor NEW

This project forked from crowdin/react-native-sdk

0.0 0.0 0.0 3.6 MB

Crowdin React Native SDK delivers all new translations from Crowdin project to the application immediately

License: MIT License

Java 34.59% JavaScript 22.85% Starlark 6.53% Ruby 5.79% Objective-C 30.23%

react-native-sdk's Introduction

Crowdin React Native SDK beta

Crowdin React Native SDK delivers all-new translations from the Crowdin project to the application immediately. So there is no need to update this application to get the new version with the localization.

The SDK is using the Android SDK and iOS SDK as Native Modules and provides:

  • Over-The-Air Content Delivery – the localized content can be sent to the application from the project whenever needed.

It allows you to easily download localization from Crowdin and use it in your application.

Status

npm npm GitHub issues GitHub contributors GitHub

Table of Contents

Requirements

React Native 0.6+

Installation

  • Using npm:

    npm install @crowdin/react-native-sdk --save

  • Using React Native CLI:

    react-native link @crowdin/react-native-sdk

Example Project

To discover how React Native SDK is integrated into a real project see the Example project. You can set up this project for yourself, run, and test.

This example uses the React Native Localization package for interface localization.

To run the example project, first clone the repo, fill in SDK configuration in the App class and run a project in the example directory:

  • Navigate to the example directory:

    cd react-native-sdk/example

  • Install dependencies:

    npm install

  • Start React Native webserver:

    react-native start

  • Run Emulator/Simulator or connect a real device.

  • Open another terminal and run:

    react-native run-android for Android App

    react-native run-ios for iOS App

Note: To read more about setting up the development environment see the Official Docs.

Setup

To configure React Native SDK integration you need to:

  • Upload your JSON localization file to Crowdin. If you have ready translations, you can also upload them.
  • Set up Distribution in Crowdin.
  • Set up SDK and enable the Over-The-Air Content Delivery feature in your project.

Distribution is a CDN vault that mirrors the translated content of your project and is required for integration with the React Native app.

To manage distributions open the needed project and go to Over-The-Air Content Delivery. You can create as many distributions as you need and choose different files for each. You’ll need to click the Release button next to the necessary distribution every time you want to send new translations to the app.

Notes:

  • The CDN feature does not update the localization files. if you want to add new translations to the localization files you need to do it yourself.
  • Once SDK receives the translations, it's stored on the device as application files for further sessions to minimize requests the next time the app starts.
  • CDN caches all the translation in release for up to 15 minutes and even when new translations are released in Crowdin, CDN may return it with a delay.

Usage

Import Crowdin dependency:

import Crowdin from '@crowdin/react-native-sdk';

Crowdin React Native SDK provides a set of methods that allows you to download localization from CDN and use it in your application.

  1. Initialization:

    Crowdin.initWithHashString('distribution_hash', 'source_language_code', (messages) => { })
    • distribution_hash - Crowdin Distribution Hash.
    • source_language_code - Source language code in your Crowdin project.

    Callback parameters:

    • messages - An array of errors of library initialization or localization downloading. In case initialization success returns "Localization downloaded" message.
  2. Get localization resources for the current language:

    Crowdin.getResources()

    Returns all downloaded localization for the current language in JSON format as a String.

    • Output example:
    {"language": "en", "strings": {...}, "arrays": {...}, "plurals": {...}}
    
  3. Get localizations for the specific language:

    Crowdin.getResourcesByLocale('target_language_code', (data) => { })

    Callback parameters:

    data - all downloaded localization for the specified language in JSON format as a String.

    • Example:
    {"language": "en", "strings": {...}, "arrays": {...}, "plurals": {...}}
    
  4. Get localized string by key for current locale:

    Crowdin.getString('key')
    • key - localization string key.
  5. Example of how to Update / Overwrite Locale with the react-native-localization:

updateLocalization() {
    Crowdin.initWithHashString('distribution_hash', DEFAULT_LANGUAGE, (message) => {});

    Crowdin.getResourcesByLocale('uk', (data) => {
        var response = JSON.parse(data);

        translations.setContent(
            Object.assign({}, translations.getContent(), {
                uk: response.strings
            })
        );

        this.resetState();
    })
}

resetState = () => {
    this.setState({});
}

For more details see the App.js class.

OTA JavaScript client usage

For React Native applications there is also a possibility to use JS client without any native modules. Here you can find example listed above where this library is used.

Limitations

Currently, Screenshots and Real-Time Preview features are not available.

Contributing

If you want to contribute please read the Contributing guidelines.

Seeking Assistance

If you find any problems or would like to suggest a feature, please feel free to file an issue on Github at Issues Page.

Need help working with Crowdin React Native SDK or have any questions? Contact Customer Success Service.

Security

Crowdin React Native SDK CDN feature is built with security in mind, which means minimal access possible from the end-user is required. When you decide to use Crowdin React Native SDK, please make sure you’ve made the following information accessible to your end-users.

  • We use the advantages of Amazon Web Services (AWS) for our computing infrastructure. AWS has ISO 27001 certification and has completed multiple SSAE 16 audits. All the translations are stored at AWS servers.
  • When you use Crowdin React Native SDK CDN – translations are uploaded to Amazon CloudFront to be delivered to the app and speed up the download. Keep in mind that your users download translations without any additional authentication.
  • We use encryption to keep your data private while in transit.
  • We do not store any Personally Identifiable Information (PII) about the end-user, but you can decide to develop the opt-out option inside your application to make sure your users have full control.
  • The Automatic Screenshots and Real-Time Preview features are supposed to be used by the development team and translators team. Those features should not be compiled to the production version of your app. Therefore, should not affect end-users privacy in any way.

License

The Crowdin React Native SDK is licensed under the MIT License.
See the LICENSE file distributed with this work for additional
information regarding copyright ownership.

Except as contained in the LICENSE file, the name(s) of the above copyright
holders shall not be used in advertising or otherwise to promote the sale,
use or other dealings in this Software without prior written authorization.

react-native-sdk's People

Contributors

andrii-bodnar avatar dependabot[bot] avatar mykhailonester avatar serhii-londar avatar yevheniyj avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.