]> source.dussan.org Git - gitea.git/commitdiff
Improve backport-locales.go (#23807)
authorwxiaoguang <wxiaoguang@gmail.com>
Thu, 30 Mar 2023 06:58:33 +0000 (14:58 +0800)
committerGitHub <noreply@github.com>
Thu, 30 Mar 2023 06:58:33 +0000 (14:58 +0800)
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

index 9421b6925e4429b37f62227e291d26c040d5ccca..a717b37367dc4973dac3f3e4f09388bd17fcb854 100644 (file)
@@ -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)