aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfnetx2022-12-14 19:55:13 +0100
committerLoïc Dachary2023-03-12 17:05:53 +0100
commit1252e83f8c7b22e06bb37622900741caa209e9eb (patch)
tree2b603de3f523d462045f600ae0237258532cc040
parentcc741116d2e1423d005869b244054b41b402dc3e (diff)
[I18N] Add Locale merger script
(cherry picked from commit ecc3dae2acaf567cd6b2888cc5c582588c7bfc53) (cherry picked from commit c6c3fc6ace6b6aa4f4877c5a96da54899f2dc2fa) (cherry picked from commit 4833bd594a49b70896c023b41da8a87ba33add0e) [I18N] in the home page replace GitHub with Forgejo The english string that shows on the home page to encourage for contribution no longer reference GitHub. But some translations still do. In this context, and this context only, replace it with Forgejo even though it may not be correct in some cases. Refs: https://codeberg.org/forgejo/forgejo/pulls/450 (cherry picked from commit 71de77f5ae59617eadda9e4992f1867a7acb7f17) (cherry picked from commit 0b5195e4e4ee1c4829d7f4e127cc48d5c0eb3d72)
-rw-r--r--build/merge-forgejo-locales.go97
1 files changed, 97 insertions, 0 deletions
diff --git a/build/merge-forgejo-locales.go b/build/merge-forgejo-locales.go
new file mode 100644
index 000000000..0e6b345f2
--- /dev/null
+++ b/build/merge-forgejo-locales.go
@@ -0,0 +1,97 @@
+// 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"
+ "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)
+ }
+
+ replacer := strings.NewReplacer(
+ "Gitea", "Forgejo",
+ "https://docs.gitea.io/en-us/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.io/en-us/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",
+ )
+
+ 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 {
+ out = append(out, []byte(replacer.Replace(line)+"\n")...)
+ }
+ }
+ file.Close()
+ 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)
+ }
+ }
+}