From 71afbcafa9f8200af3f2e4848fad605116159c7f Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Thu, 30 Mar 2023 14:58:33 +0800 Subject: [PATCH] Improve backport-locales.go (#23807) ps: there are more broken translation strings in 1.20 (main), most of them are still caused by incorrect quoting/unquoting. For example, translators might write text ``` `my text ```, such incorrect encoding might break crowdin & Gitea's locale package. In the future, a Go `update-locales.go` should replace the legacy `update-locales.sh`. --- build/backport-locales.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/build/backport-locales.go b/build/backport-locales.go index 9421b6925e4..a717b37367d 100644 --- a/build/backport-locales.go +++ b/build/backport-locales.go @@ -77,10 +77,11 @@ func main() { if secNew.HasKey(keyEnUs.Name()) { oldStr := secOld.Key(keyEnUs.Name()).String() newStr := secNew.Key(keyEnUs.Name()).String() - // A bug: many of new translations with ";" are broken in Crowdin (due to last messy restoring) - // As the broken strings are gradually fixed, this workaround check could be removed (in a few months?) - if strings.Contains(oldStr, ";") && !strings.Contains(newStr, ";") { - println("skip potential broken string", path, secEnUS.Name(), keyEnUs.Name()) + if oldStr != "" && strings.Count(oldStr, "%") != strings.Count(newStr, "%") { + fmt.Printf("WARNING: locale %s [%s]%s has different number of arguments, skipping\n", path, secEnUS.Name(), keyEnUs.Name()) + fmt.Printf("\told: %s\n", oldStr) + fmt.Printf("\tnew: %s\n", newStr) + fmt.Println("---- ") continue } secOld.Key(keyEnUs.Name()).SetValue(newStr)