mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-31 14:31:02 +00:00 
			
		
		
		
	Merge branch 'rebase-forgejo-i18n' into forgejo
This commit is contained in:
		
				commit
				
					
						0033b48653
					
				
			
		
					 31 changed files with 126 additions and 8 deletions
				
			
		
							
								
								
									
										3
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							|  | @ -118,3 +118,6 @@ prime/ | |||
| 
 | ||||
| # Manpage | ||||
| /man | ||||
| 
 | ||||
| # Generated merged Forgejo+Gitea language files | ||||
| /options/locale/locale_* | ||||
|  |  | |||
							
								
								
									
										14
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										14
									
								
								Makefile
									
										
									
									
									
								
							|  | @ -796,10 +796,14 @@ generate: generate-backend | |||
| generate-backend: $(TAGS_PREREQ) generate-go | ||||
| 
 | ||||
| .PHONY: generate-go | ||||
| generate-go: $(TAGS_PREREQ) | ||||
| generate-go: $(TAGS_PREREQ) merge-locales | ||||
| 	@echo "Running go generate..." | ||||
| 	@CC= GOOS= GOARCH= $(GO) generate -tags '$(TAGS)' $(GO_PACKAGES) | ||||
| 
 | ||||
| .PHONY: merge-locales | ||||
| merge-locales: | ||||
| 	@CC= GOOS= GOARCH= $(GO) run build/merge-forgejo-locales.go | ||||
| 
 | ||||
| .PHONY: security-check | ||||
| security-check: | ||||
| 	go run $(GOVULNCHECK_PACKAGE) ./... | ||||
|  | @ -972,13 +976,7 @@ lockfile-check: | |||
| 
 | ||||
| .PHONY: update-translations | ||||
| update-translations: | ||||
| 	mkdir -p ./translations | ||||
| 	cd ./translations && curl -L https://crowdin.com/download/project/gitea.zip > gitea.zip && unzip gitea.zip | ||||
| 	rm ./translations/gitea.zip | ||||
| 	$(SED_INPLACE) -e 's/="/=/g' -e 's/"$$//g' ./translations/*.ini | ||||
| 	$(SED_INPLACE) -e 's/\\"/"/g' ./translations/*.ini | ||||
| 	mv ./translations/*.ini ./options/locale/ | ||||
| 	rmdir ./translations | ||||
| 	# noop to detect merge conflicts (potentially needs updating the scripts) and avoid breaking with Gitea | ||||
| 
 | ||||
| .PHONY: generate-license | ||||
| generate-license: | ||||
|  |  | |||
							
								
								
									
										117
									
								
								build/merge-forgejo-locales.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								build/merge-forgejo-locales.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,117 @@ | |||
| // Copyright 2022 The Forgejo Authors c/o Codeberg e.V.. All rights reserved. | ||||
| // Use of this source code is governed by a MIT-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build ignore | ||||
| 
 | ||||
| package main | ||||
| 
 | ||||
| import ( | ||||
| 	"bufio" | ||||
| 	"log" | ||||
| 	"os" | ||||
| 	"regexp" | ||||
| 	"strings" | ||||
| 
 | ||||
| 	"gopkg.in/ini.v1" | ||||
| ) | ||||
| 
 | ||||
| const ( | ||||
| 	trimPrefix   = "gitea_" | ||||
| 	sourceFolder = "options/locales/" | ||||
| ) | ||||
| 
 | ||||
| // returns list of locales, still containing the file extension! | ||||
| func generate_locale_list() []string { | ||||
| 	localeFiles, _ := os.ReadDir(sourceFolder) | ||||
| 	locales := []string{} | ||||
| 	for _, localeFile := range localeFiles { | ||||
| 		if !localeFile.IsDir() && strings.HasPrefix(localeFile.Name(), trimPrefix) { | ||||
| 			locales = append(locales, strings.TrimPrefix(localeFile.Name(), trimPrefix)) | ||||
| 		} | ||||
| 	} | ||||
| 	return locales | ||||
| } | ||||
| 
 | ||||
| // replace all occurrences of Gitea with Forgejo | ||||
| func renameGiteaForgejo(filename string) []byte { | ||||
| 	file, err := os.Open(filename) | ||||
| 	if err != nil { | ||||
| 		panic(err) | ||||
| 	} | ||||
| 
 | ||||
| 	replacements := []string{ | ||||
| 		"Gitea", "Forgejo", | ||||
| 		"https://docs.gitea.com/installation/install-from-binary", "https://forgejo.org/download/#installation-from-binary", | ||||
| 		"https://github.com/go-gitea/gitea/tree/master/docker", "https://forgejo.org/download/#container-image", | ||||
| 		"https://docs.gitea.com/installation/install-from-package", "https://forgejo.org/download", | ||||
| 		"https://code.gitea.io/gitea", "https://forgejo.org/download", | ||||
| 		"code.gitea.io/gitea", "Forgejo", | ||||
| 		`<a href="https://github.com/go-gitea/gitea/issues" target="_blank">GitHub</a>`, `<a href="https://codeberg.org/forgejo/forgejo/issues" target="_blank">Codeberg</a>`, | ||||
| 		"https://github.com/go-gitea/gitea", "https://codeberg.org/forgejo/forgejo", | ||||
| 		"https://blog.gitea.io", "https://forgejo.org/news", | ||||
| 		"https://docs.gitea.com/usage/protected-tags", "https://forgejo.org/docs/latest/user/protection/#protected-tags", | ||||
| 		"https://docs.gitea.com/usage/webhooks", "https://forgejo.org/docs/latest/user/webhooks/", | ||||
| 	} | ||||
| 	replacer := strings.NewReplacer(replacements...) | ||||
| 	replaced := make(map[string]bool, len(replacements)/2) | ||||
| 	count_replaced := func(original string) { | ||||
| 		for i := 0; i < len(replacements); i += 2 { | ||||
| 			if strings.Contains(original, replacements[i]) { | ||||
| 				replaced[replacements[i]] = true | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	out := make([]byte, 0, 1024) | ||||
| 	scanner := bufio.NewScanner(file) | ||||
| 	scanner.Split(bufio.ScanLines) | ||||
| 	for scanner.Scan() { | ||||
| 		line := scanner.Text() | ||||
| 
 | ||||
| 		if strings.HasPrefix(line, "license_desc=") { | ||||
| 			line = strings.Replace(line, "GitHub", "Forgejo", 1) | ||||
| 		} | ||||
| 
 | ||||
| 		if strings.HasPrefix(line, "[") && strings.HasSuffix(line, "]") { | ||||
| 			out = append(out, []byte("\n"+line+"\n")...) | ||||
| 		} else if strings.HasPrefix(line, "settings.web_hook_name_gitea") { | ||||
| 			out = append(out, []byte("\n"+line+"\n")...) | ||||
| 			out = append(out, []byte("settings.web_hook_name_forgejo = Forgejo\n")...) | ||||
| 		} else if strings.HasPrefix(line, "migrate.gitea.description") { | ||||
| 			re := regexp.MustCompile(`(.*Gitea)`) | ||||
| 			out = append(out, []byte(re.ReplaceAllString(line, "${1}/Forgejo")+"\n")...) | ||||
| 		} else { | ||||
| 			count_replaced(line) | ||||
| 			out = append(out, []byte(replacer.Replace(line)+"\n")...) | ||||
| 		} | ||||
| 	} | ||||
| 	file.Close() | ||||
| 	if strings.HasSuffix(filename, "gitea_en-US.ini") { | ||||
| 		for i := 0; i < len(replacements); i += 2 { | ||||
| 			if replaced[replacements[i]] == false { | ||||
| 				log.Fatalf("%s was never used to replace something in %s, it is obsolete and must be updated", replacements[i], filename) | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	return out | ||||
| } | ||||
| 
 | ||||
| func main() { | ||||
| 	locales := generate_locale_list() | ||||
| 	var err error | ||||
| 	var localeFile *ini.File | ||||
| 	for _, locale := range locales { | ||||
| 		giteaLocale := sourceFolder + "gitea_" + locale | ||||
| 		localeFile, err = ini.LoadSources(ini.LoadOptions{ | ||||
| 			IgnoreInlineComment: true, | ||||
| 		}, giteaLocale, renameGiteaForgejo(giteaLocale)) | ||||
| 		if err != nil { | ||||
| 			panic(err) | ||||
| 		} | ||||
| 		err = localeFile.SaveTo("options/locale/locale_" + locale) | ||||
| 		if err != nil { | ||||
| 			panic(err) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue