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