My fork of airsonic with experimental fixes and improvements. See branch "custom"
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
airsonic-custom/contrib/i18n_fix_encoding.go

55 lines
1.1 KiB

package main
// Recompile the script using 'go build i18n_fix_encoding.go'
// Script needs to be executed inside the airsonic-main/src/main/resources/org/airsonic/player/i18n/
// folder.
// Unicode range could be changed to something wider
import (
"fmt"
"io/ioutil"
"log"
"os"
"path/filepath"
"regexp"
"strings"
)
func main() {
// List all files in current dir
files, err := filepath.Glob("*.properties")
if err != nil {
log.Fatal(err)
}
// Iterate over files
for _, path := range files {
f, err := os.Open(path)
if err != nil {
log.Fatal(err)
}
// Read file data
data, err := ioutil.ReadAll(f)
if err != nil {
log.Fatal(err)
}
p := regexp.MustCompile("[\u0080-\u00ff]+")
// Replace any found char by its unicode representation
out := p.ReplaceAllStringFunc(string(data), func(in string) string {
return "\\u" + strings.ToLower(strings.TrimLeft(fmt.Sprintf("%U", []rune(in)[0]), "U+"))
})
// If any changes where made write them to file
if string(data) != out {
fmt.Printf("Changes where made for %s\n", path)
if err := ioutil.WriteFile(path, []byte(out), 0644); err != nil {
log.Fatal(err)
}
}
}
}