release_audit/
release_audit.rs1use ferrocat::{CatalogAuditOptions, NormalizedParsedCatalog, ParseCatalogOptions, audit_catalogs};
2
3fn catalog(
4 content: &str,
5 locale: &str,
6) -> Result<NormalizedParsedCatalog, Box<dyn std::error::Error>> {
7 Ok(ferrocat::parse_catalog(ParseCatalogOptions {
8 content,
9 locale: Some(locale),
10 source_locale: "en",
11 ..ParseCatalogOptions::new("", "en")
12 })?
13 .into_normalized_view()?)
14}
15
16fn main() -> Result<(), Box<dyn std::error::Error>> {
17 let source = catalog("msgid \"Checkout\"\nmsgstr \"Checkout\"\n", "en")?;
18 let target = catalog("msgid \"Checkout\"\nmsgstr \"\"\n", "de")?;
19
20 let report = audit_catalogs(&[&source, &target], &CatalogAuditOptions::new("en"))?;
21
22 assert!(report.has_errors());
23 assert!(
24 report
25 .diagnostics
26 .iter()
27 .any(|diagnostic| diagnostic.code == "catalog.empty_translation")
28 );
29
30 for diagnostic in &report.diagnostics {
31 println!("{}: {}", diagnostic.code, diagnostic.message);
32 }
33
34 Ok(())
35}