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.
54 lines
1.1 KiB
54 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)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|