Module icu_provider_export::fs_exporter

Expand description

Data exporter that creates a file system structure for use with FsDataProvider.

This module can be used as a target for the icu_provider_export crate.

See our datagen tutorial for more information about different data providers.

§Examples

use icu_provider::hello_world::*;
use icu_provider_export::prelude::*;
use icu_provider_fs::export::*;

let demo_path = std::env::temp_dir().join("icu4x_json_demo");

// Set up the exporter
let mut options = Options::default();
options.root = demo_path.clone();
let serializer = Box::new(serializers::Json::default());
let mut exporter = FilesystemExporter::try_new(serializer, options)
    .expect("Should successfully initialize data output directory");

// Export something. Make sure to use the same fallback data at runtime!
ExportDriver::new(
    [DataLocaleFamily::FULL],
    DeduplicationStrategy::Maximal.into(),
    LocaleFallbacker::new().static_to_owned(),
)
.export(&HelloWorldProvider, exporter)
.unwrap();

The resulting files can now be used like this:

use icu_locale_core::locale;
use icu_provider::hello_world::*;
use icu_provider::prelude::*;
use icu_provider_fs::FsDataProvider;

// Create a filesystem provider reading from the demo directory
let provider = FsDataProvider::try_new(demo_path)
    .expect("Should successfully read from filesystem");

// Use the provider as a `BufferProvider`
let formatter = HelloWorldFormatter::try_new_with_buffer_provider(
    &provider,
    locale!("en").into(),
)
.unwrap();

assert_eq!(formatter.format_to_string(), "Hello World");

Modules§

Structs§

Enums§