Try to catch more broken translations (#23867)
Result: #23866 Gitea should drop the ``` ` ``` as string quoter, it is not recognized by Crowdin and it causes problem for translators.
This commit is contained in:
		
							parent
							
								
									f020fc27e5
								
							
						
					
					
						commit
						c2ff2a4724
					
				
					 1 changed files with 30 additions and 5 deletions
				
			
		| 
						 | 
					@ -62,6 +62,7 @@ func main() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// use old en-US as the base, and copy the new translations to the old locales
 | 
						// use old en-US as the base, and copy the new translations to the old locales
 | 
				
			||||||
	enUsOld := inisOld["options/locale/locale_en-US.ini"]
 | 
						enUsOld := inisOld["options/locale/locale_en-US.ini"]
 | 
				
			||||||
 | 
						brokenWarned := map[string]bool{}
 | 
				
			||||||
	for path, iniOld := range inisOld {
 | 
						for path, iniOld := range inisOld {
 | 
				
			||||||
		if iniOld == enUsOld {
 | 
							if iniOld == enUsOld {
 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
| 
						 | 
					@ -77,11 +78,14 @@ func main() {
 | 
				
			||||||
				if secNew.HasKey(keyEnUs.Name()) {
 | 
									if secNew.HasKey(keyEnUs.Name()) {
 | 
				
			||||||
					oldStr := secOld.Key(keyEnUs.Name()).String()
 | 
										oldStr := secOld.Key(keyEnUs.Name()).String()
 | 
				
			||||||
					newStr := secNew.Key(keyEnUs.Name()).String()
 | 
										newStr := secNew.Key(keyEnUs.Name()).String()
 | 
				
			||||||
					if oldStr != "" && strings.Count(oldStr, "%") != strings.Count(newStr, "%") {
 | 
										broken := 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())
 | 
										broken = broken || strings.Contains(oldStr, "\n") || strings.Contains(oldStr, "\n")
 | 
				
			||||||
						fmt.Printf("\told: %s\n", oldStr)
 | 
										if broken {
 | 
				
			||||||
						fmt.Printf("\tnew: %s\n", newStr)
 | 
											brokenWarned[secOld.Name()+"."+keyEnUs.Name()] = true
 | 
				
			||||||
						fmt.Println("---- ")
 | 
											fmt.Println("----")
 | 
				
			||||||
 | 
											fmt.Printf("WARNING: skip broken locale: %s , [%s] %s\n", path, secEnUS.Name(), keyEnUs.Name())
 | 
				
			||||||
 | 
											fmt.Printf("\told: %s\n", strings.ReplaceAll(oldStr, "\n", "\\n"))
 | 
				
			||||||
 | 
											fmt.Printf("\tnew: %s\n", strings.ReplaceAll(newStr, "\n", "\\n"))
 | 
				
			||||||
						continue
 | 
											continue
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					secOld.Key(keyEnUs.Name()).SetValue(newStr)
 | 
										secOld.Key(keyEnUs.Name()).SetValue(newStr)
 | 
				
			||||||
| 
						 | 
					@ -90,4 +94,25 @@ func main() {
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		mustNoErr(iniOld.SaveTo(path))
 | 
							mustNoErr(iniOld.SaveTo(path))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fmt.Println("========")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for path, iniNew := range inisNew {
 | 
				
			||||||
 | 
							for _, sec := range iniNew.Sections() {
 | 
				
			||||||
 | 
								for _, key := range sec.Keys() {
 | 
				
			||||||
 | 
									str := sec.Key(key.Name()).String()
 | 
				
			||||||
 | 
									broken := strings.Contains(str, "\n")
 | 
				
			||||||
 | 
									broken = broken || strings.HasPrefix(str, "`") != strings.HasSuffix(str, "`")
 | 
				
			||||||
 | 
									broken = broken || strings.HasPrefix(str, "\"`")
 | 
				
			||||||
 | 
									broken = broken || strings.HasPrefix(str, "`\"")
 | 
				
			||||||
 | 
									broken = broken || strings.Count(str, `"`)%2 == 1
 | 
				
			||||||
 | 
									broken = broken || strings.Count(str, "`")%2 == 1
 | 
				
			||||||
 | 
									if broken && !brokenWarned[sec.Name()+"."+key.Name()] {
 | 
				
			||||||
 | 
										fmt.Printf("WARNING: found broken locale: %s , [%s] %s\n", path, sec.Name(), key.Name())
 | 
				
			||||||
 | 
										fmt.Printf("\tstr: %s\n", strings.ReplaceAll(str, "\n", "\\n"))
 | 
				
			||||||
 | 
										fmt.Println("----")
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue