#icu #cldr #localization #unicode

icu_provider_fs

ICU4X data provider that reads from structured data files

14 releases (7 stable)

1.4.0 Nov 17, 2023
1.3.0 Sep 23, 2023
1.2.1 Apr 22, 2023
1.1.0 Jan 26, 2023
0.1.0 Oct 15, 2020

#329 in Internationalization (i18n)

Download history 1382/week @ 2023-10-31 2513/week @ 2023-11-07 2070/week @ 2023-11-14 1277/week @ 2023-11-21 1277/week @ 2023-11-28 1653/week @ 2023-12-05 2034/week @ 2023-12-12 2455/week @ 2023-12-19 799/week @ 2023-12-26 1858/week @ 2024-01-02 1020/week @ 2024-01-09 2442/week @ 2024-01-16 1690/week @ 2024-01-23 3366/week @ 2024-01-30 2270/week @ 2024-02-06 2423/week @ 2024-02-13

10,021 downloads per month
Used in 10 crates (3 directly)

Custom license

265KB
4K SLoC

icu_provider_fs crates.io

icu_provider_fs is one of the ICU4X components.

It reads ICU4X data files from the filesystem in a given directory.

Examples

use icu_provider_fs::FsDataProvider;

let provider = FsDataProvider::try_new("/path/to/data/directory")
    .expect_err("Specify a real directory in the line above");

Directory Structure

The ICU4X data directory has a file named manifest.json at the root, and a nested structure with a data key (DataKey), and locale (DataLocale) as the leaf data files. For example, Arabic JSON data for cardinal plural rules lives at plurals/cardinal@1/ar.json.

The exact form of the directory structure may change over time. ICU4X uses metadata from manifest.json to dynamically interpret different versions of the directory structure.

├── manifest.json
├── dates
│   └── gregory@1
│       ├── ar-EG.json
│       ├── ar.json
│       ├── be.json
│       ⋮
│       └── und.json
└── plurals
    ├── cardinal@1
    │   ├── ar.json
    │   ├── be.json
    │   ⋮
    │   └── und.json
    └── ordinal@1
        ├── ar.json
        ├── be.json
        ⋮
        └── und.json

Resource Formats

ICU4X data can be stored in different formats. At the moment there are:

  • JSON - Textual format, easy to read
  • Postcard - Binary, small #[no_std] resource format
  • Bincode - Binary, fast resource format

The directory passed to the FsDataProvider constructor may contain either of them.

Notice: In order for ICU4X to be able to deserialize the returned data, the corresponding Cargo feature has to be activated on the icu_provider crate. See AsDeserializingBufferProvider::as_deserializing.

Exporting data

To generate the data required for FsDataProvider, run the following:

icu4x-datagen --keys all --locales full --format dir

To export postcard format, use

icu4x-datagen --keys all --locales full --format dir --syntax postcard

More Information

For more information on development, authorship, contributing etc. please visit ICU4X home page.

Dependencies

~1.7–2.6MB
~51K SLoC