Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@colisweb/bs-react-intl-extractor

Package Overview
Dependencies
Maintainers
2
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@colisweb/bs-react-intl-extractor

Message extractor for bs-react-intl

  • 0.10.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
Maintainers
2
Weekly downloads
 
Created
Source

bs-react-intl-extractor

Extracts messages for localization from ReScript or Reason source files. This assumes that you are using the bs-react-intl 2.x bindings for react-intl.

NPM
Build Status

Installation

Binaries for macOS, Linux and Windows can be installed via npm or yarn. For global installation, run

npm install -g bs-react-intl-extractor-bin

Alternatively, the binaries are also available for download on the releases page.

Usage

bs-react-intl-extractor [--allow-duplicates] [path...]

where path is a ReScript (*.res) or Reason (*.re) source file or a directory containing such source files. Multiple files/directories may be specified.

The --allow-duplicates option allows messages with identical id props if the defaultMessage props are identical as well.

Output

The output (a JSON array of all extracted messages sorted by id) is written to stdout. It will look like this:

[
  {
    "id": "message.hello",
    "defaultMessage": "Hello"
  },
  {
    "id": "message.world",
    "defaultMessage": "World"
  },
  {
    "id": "some.message.id",
    "defaultMessage": "Some message"
  }
]

Message Definition (ReScript Syntax)

Formatted messages may be defined in your source files in one of the following ways:

  1. inline in FormattedMessage:
<ReactIntl.FormattedMessage id="some.message.id" defaultMessage="Some message" />

or

open ReactIntl;
...
<FormattedMessage id="some.message.id" defaultMessage="Some message" />
  1. within a module with the [@intl.messages] attribute:
open ReactIntl

module Msg = {
  @@intl.messages

  let hello = {id: "message.hello", defaultMessage: "Hello"}
  let world = {id: "message.world", defaultMessage: "World"}
}

You also can pass descriptions to the records with:

let foo = @intl.description("Hello description") {id: "message.hello", defaultMessage: "Hello"}

Message Definition (Reason Syntax)

Formatted messages may be defined in your source files in one of the following ways:

  1. inline in FormattedMessage:
<ReactIntl.FormattedMessage id="some.message.id" defaultMessage="Some message" />

or

open ReactIntl;
...
<FormattedMessage id="some.message.id" defaultMessage="Some message" />
  1. within a module with the [@intl.messages] attribute:
open ReactIntl;

module Msg = {
  [@intl.messages];

  let hello = {id: "message.hello", defaultMessage: "Hello"};
  let world = {id: "message.world", defaultMessage: "World"};
};

You also can pass descriptions to the records with:

let foo = [@intl.description "Hello description"] {id: "message.hello", defaultMessage: "Hello"};

Building and Testing

The ReScript parser is included as a git submodule. Therefore, after checking out the sources, first run

git submodule update --init --recursive

Install esy as follows:

% npm install -g esy

Then you can install the project dependencies using:

% esy install

Then build the project dependencies along with the project itself:

% esy build

Run the compiled executable:

% esy x Extract.exe

Run the tests:

% esy test

FAQs

Package last updated on 14 Apr 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc