• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

cca-io/rescript-react-intl-extractor: Extracts messages for localization from Re ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称(OpenSource Name):

cca-io/rescript-react-intl-extractor

开源软件地址(OpenSource Url):

https://github.com/cca-io/rescript-react-intl-extractor

开源编程语言(OpenSource Language):

OCaml 75.7%

开源软件介绍(OpenSource Introduction):

rescript-react-intl-extractor

Extracts messages for localization from ReScript source files. Also supports the legacy Reason syntax.

This assumes that you are using the rescript-react-intl 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 rescript-react-intl-extractor-bin

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

Usage

rescript-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 (Legacy 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"};
  1. within intl-ppx ReScript team recommends not to use PPXes
let hello = [%intl "hello"]
let world = [%intl {msg: "world", desc: "Some description"}]

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 Ocaml and OPAM, and create an OPAM switch with OCaml version 4.06.1.

Then run

opam pin add rescript-react-intl-extractor.dev . --no-action
opam install . --deps-only --with-doc --with-test

To build the project, run

opam exec -- dune build

To run the tests, do

opam exec -- dune runtest



鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap