13 releases (5 breaking)
0.6.0 | Oct 23, 2024 |
---|---|
0.5.0 | Aug 19, 2024 |
0.4.1 | Aug 16, 2024 |
0.3.2 | Aug 8, 2024 |
0.1.0 | May 24, 2024 |
#388 in Internationalization (i18n)
233 downloads per month
Used in 2 crates
(via fluent-static-macros)
94KB
2.5K
SLoC
fluent-static-codegen
Part of fluent-static library providing simple to use, yet efficient way to add localization to Rust projects with Fluent Localization System.
fluent-static is inspired by and partially based on awesome Fluent-rs project.
Usage
Cargo dependencies
Add fluent-static-codegen
to project's build-dependencies
section
[build-dependencies]
fluent-static-codegen = "*"
Build script
The fluent-static-codegen requires Cargo Build Script to operate.
use std::{env, fs, path::PathBuf};
use fluent_static_codegen::MessageBundleBuilder;
fn resources_base_dir() -> PathBuf {
PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").expect("'CARGO_MANIFEST_DIR' not set"))
.join("l10n")
}
fn output_dir() -> PathBuf {
let out =
PathBuf::from(env::var_os("OUT_DIR").expect("'OUT_DIR' not set")).join("generated/fluent");
if !out.exists() {
fs::create_dir_all(&out).unwrap();
}
out
}
pub fn main() {
println!("cargo::rerun-if-changed=l10n/");
let bundle = MessageBundleBuilder::new("Messages")
.set_default_language("en")
.expect("Default language should be valid language identifier")
.set_resources_dir(resources_base_dir())
.add_resource("en", "messages-en.ftl")
.expect("Resource file should be valid Fluent resource")
.add_resource("it", "messages-it.ftl")
.expect("Resource file should be valid Fluent resource")
.build()
.unwrap();
bundle
.write_to_file(output_dir().join("messages.rs"))
.expect("Output directory should exist and be writeable to save generated code");
}
Registering Custom Fluent Functions
TBD
License
This project is licensed under MIT license. Feel free to use, modify, and distribute it as per the license conditions.
Dependencies
~1.5–2MB
~40K SLoC