tools: align locale diagnostics and generate native language names
Validate / Validate (push) Successful in 2m46s

This commit is contained in:
KenanZhu committed 2026-10-14 00:01:40 +08:00
1 parent b8089e8a7e
commit d99c5d1dc5
13 files changed
+170 -46

No files matched your search

+38
View File
@@ -0,0 +1,38 @@
package logging
import (
"bytes"
"reflect"
"strings"
"testing"
)
func TestMissingTranslations(t *testing.T) {
missing := map[string][]string{
"fr-FR": {"mail.second", "mail.first"},
"en-US": nil,
"de-DE": {"mail.first"},
}
want := "Missing translation keys:\n" +
"Language Fallback Key\n" +
"de-DE en-US mail.first\n" +
"fr-FR en-US mail.first\n" +
" mail.second"
message := missingTranslations(missing)
if message != want {
t.Fatalf("got %q, want %q", message, want)
}
if !reflect.DeepEqual(missing["fr-FR"], []string{"mail.second", "mail.first"}) {
t.Fatal("report mutated input keys")
}
var output bytes.Buffer
write(&output, true, "W", "Locale", message)
for _, line := range strings.Split(strings.TrimSuffix(output.String(), "\n"), "\n") {
if !strings.HasPrefix(line, "\033[33m[W]\033[0m [Locale] ") {
t.Fatalf("missing warning prefix: %q", line)
}
}
if missingTranslations(nil) != "" || missingTranslations(map[string][]string{"en-US": nil}) != "" {
t.Fatal("empty report produced a warning")
}
}