Skip to content

Commit cf225b5

Browse files
committed
feat(cli/stats): include missing plural counts in stats output (text + JSON)
- Per-language counts of entries with missing plural categories - Total missing plural categories per language - Per-language counts of entries with missing plural categories - Total missing plural categories per language - Resource-level: autofix_fill_missing_from_other_resource - Codec-level: autofix_fill_missing_from_other - Skips DoNotTranslate entries; sets NeedsReview when autofilling
1 parent 0636fe0 commit cf225b5

1 file changed

Lines changed: 15 additions & 1 deletion

File tree

langcodec-cli/src/stats.rs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use langcodec::{Codec, types::EntryStatus};
1+
use langcodec::{collect_resource_plural_issues, Codec, types::EntryStatus};
22
use serde_json::json;
33
use std::collections::HashMap;
44

@@ -46,6 +46,10 @@ pub fn print_stats(codec: &Codec, lang_filter: &Option<String>, json_output: boo
4646
for e in &res.entries {
4747
accumulate(&mut stats, &e.status);
4848
}
49+
let plural_issues = collect_resource_plural_issues(res);
50+
let missing_plural_entries = plural_issues.len();
51+
let missing_plural_categories_total: usize =
52+
plural_issues.iter().map(|r| r.missing.len()).sum();
4953
let percent = if stats.denominator == 0 {
5054
100.0
5155
} else {
@@ -56,6 +60,8 @@ pub fn print_stats(codec: &Codec, lang_filter: &Option<String>, json_output: boo
5660
"total": stats.total,
5761
"by_status": stats.by_status,
5862
"completion_percent": (percent * 100.0).round() / 100.0,
63+
"missing_plural_entries": missing_plural_entries,
64+
"missing_plural_categories_total": missing_plural_categories_total,
5965
}));
6066
}
6167
let summary = json!({
@@ -79,6 +85,10 @@ pub fn print_stats(codec: &Codec, lang_filter: &Option<String>, json_output: boo
7985
for e in &res.entries {
8086
accumulate(&mut stats, &e.status);
8187
}
88+
let plural_issues = collect_resource_plural_issues(res);
89+
let missing_plural_entries = plural_issues.len();
90+
let missing_plural_categories_total: usize =
91+
plural_issues.iter().map(|r| r.missing.len()).sum();
8292
let percent = if stats.denominator == 0 {
8393
100.0
8494
} else {
@@ -110,5 +120,9 @@ pub fn print_stats(codec: &Codec, lang_filter: &Option<String>, json_output: boo
110120
println!(" {}: {}", k, v);
111121
}
112122
println!(" Completion: {:.2}%", percent);
123+
println!(
124+
" Missing plurals: {} (missing categories: {})",
125+
missing_plural_entries, missing_plural_categories_total
126+
);
113127
}
114128
}

0 commit comments

Comments
 (0)