mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-28 06:33:50 +03:00
[I18N] Add Locale merger script
(cherry picked from commitecc3dae2ac
) (cherry picked from commitc6c3fc6ace
) (cherry picked from commit4833bd594a
) [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 commit71de77f5ae
) (cherry picked from commite9adeae464
) (cherry picked from commit6469290eac
)
This commit is contained in:
parent
c927edfcb9
commit
f1cf66e7cf
1 changed files with 97 additions and 0 deletions
97
build/merge-forgejo-locales.go
Normal file
97
build/merge-forgejo-locales.go
Normal file
|
@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue