Add language source and template file generator
This commit is contained in:
parent
e581ec4771
commit
056d056613
@ -2,6 +2,7 @@ package config
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"git.grassecon.net/urdt/ussd/initializers"
|
"git.grassecon.net/urdt/ussd/initializers"
|
||||||
)
|
)
|
||||||
@ -20,6 +21,7 @@ const (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
defaultLanguage = "eng"
|
defaultLanguage = "eng"
|
||||||
|
languages []string
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -39,8 +41,27 @@ var (
|
|||||||
VoucherDataURL string
|
VoucherDataURL string
|
||||||
CheckAliasURL string
|
CheckAliasURL string
|
||||||
DefaultLanguage string
|
DefaultLanguage string
|
||||||
|
Languages []string
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func setLanguage() error {
|
||||||
|
defaultLanguage = initializers.GetEnv("DEFAULT_LANGUAGE", defaultLanguage)
|
||||||
|
languages = strings.Split(initializers.GetEnv("LANGUAGES", defaultLanguage), ",")
|
||||||
|
haveDefaultLanguage := false
|
||||||
|
for i, v := range(languages) {
|
||||||
|
languages[i] = strings.ReplaceAll(v, " ", "")
|
||||||
|
if languages[i] == defaultLanguage {
|
||||||
|
haveDefaultLanguage = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !haveDefaultLanguage {
|
||||||
|
languages = append([]string{defaultLanguage}, languages...)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func setBase() error {
|
func setBase() error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
@ -56,8 +77,6 @@ func setBase() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
defaultLanguage = initializers.GetEnv("DEFAULT_LANGUAGE", defaultLanguage)
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,6 +86,10 @@ func LoadConfig() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
err = setLanguage()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
CreateAccountURL, _ = url.JoinPath(custodialURLBase, createAccountPath)
|
CreateAccountURL, _ = url.JoinPath(custodialURLBase, createAccountPath)
|
||||||
TrackStatusURL, _ = url.JoinPath(custodialURLBase, trackStatusPath)
|
TrackStatusURL, _ = url.JoinPath(custodialURLBase, trackStatusPath)
|
||||||
BalanceURL, _ = url.JoinPath(custodialURLBase, balancePathPrefix)
|
BalanceURL, _ = url.JoinPath(custodialURLBase, balancePathPrefix)
|
||||||
@ -77,6 +100,7 @@ func LoadConfig() error {
|
|||||||
VoucherDataURL, _ = url.JoinPath(dataURLBase, voucherDataPathPrefix)
|
VoucherDataURL, _ = url.JoinPath(dataURLBase, voucherDataPathPrefix)
|
||||||
CheckAliasURL, _ = url.JoinPath(dataURLBase, AliasPrefix)
|
CheckAliasURL, _ = url.JoinPath(dataURLBase, AliasPrefix)
|
||||||
DefaultLanguage = defaultLanguage
|
DefaultLanguage = defaultLanguage
|
||||||
|
Languages = languages
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
126
devtools/lang/main.go
Normal file
126
devtools/lang/main.go
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"path"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"git.defalsify.org/vise.git/logging"
|
||||||
|
"git.defalsify.org/vise.git/lang"
|
||||||
|
"git.grassecon.net/urdt/ussd/config"
|
||||||
|
"git.grassecon.net/urdt/ussd/initializers"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
|
||||||
|
changeHeadSrc = `LOAD reset_account_authorized 0
|
||||||
|
LOAD reset_incorrect 0
|
||||||
|
CATCH incorrect_pin flag_incorrect_pin 1
|
||||||
|
CATCH pin_entry flag_account_authorized 0
|
||||||
|
`
|
||||||
|
|
||||||
|
selectSrc = `LOAD set_language 6
|
||||||
|
RELOAD set_language
|
||||||
|
CATCH terms flag_account_created 0
|
||||||
|
MOVE language_changed
|
||||||
|
`
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
logg = logging.NewVanilla()
|
||||||
|
mouts string
|
||||||
|
incmps string
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
initializers.LoadEnvVariables()
|
||||||
|
}
|
||||||
|
|
||||||
|
func toLanguageLabel(ln lang.Language) string {
|
||||||
|
s := ln.Name
|
||||||
|
v := strings.Split(s, " (")
|
||||||
|
if len(v) > 1 {
|
||||||
|
s = v[0]
|
||||||
|
}
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
func toLanguageKey(ln lang.Language) string {
|
||||||
|
s := toLanguageLabel(ln)
|
||||||
|
return strings.ToLower(s)
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var srcDir string
|
||||||
|
|
||||||
|
flag.StringVar(&srcDir, "o", ".", "resource dir write to")
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
logg.Infof("start command", "dir", srcDir)
|
||||||
|
|
||||||
|
err := config.LoadConfig()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "config load error: %v", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
logg.Tracef("using languages", "lang", config.Languages)
|
||||||
|
|
||||||
|
for i, v := range(config.Languages) {
|
||||||
|
ln, err := lang.LanguageFromCode(v)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "error parsing language: %s", v)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
n := i + 1
|
||||||
|
s := toLanguageKey(ln)
|
||||||
|
mouts += fmt.Sprintf("MOUT %s %v\n", s, n)
|
||||||
|
//incmp += fmt.Sprintf("INCMP set_%s %u\n",
|
||||||
|
v = "set_" + ln.Code
|
||||||
|
incmps += fmt.Sprintf("INCMP %s %v\n", v, n)
|
||||||
|
|
||||||
|
p := path.Join(srcDir, v)
|
||||||
|
w, err := os.OpenFile(p, os.O_WRONLY | os.O_CREATE | os.O_TRUNC, 0600)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "failed open language set template output: %v", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
s = toLanguageLabel(ln)
|
||||||
|
defer w.Close()
|
||||||
|
_, err = w.Write([]byte(s))
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "failed write select language vis output: %v", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
src := mouts + "HALT\n" + incmps
|
||||||
|
src += "INCMP . *\n"
|
||||||
|
|
||||||
|
p := path.Join(srcDir, "select_language.vis")
|
||||||
|
w, err := os.OpenFile(p, os.O_WRONLY | os.O_CREATE | os.O_TRUNC, 0600)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "failed open select language vis output: %v", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
defer w.Close()
|
||||||
|
_, err = w.Write([]byte(src))
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "failed write select language vis output: %v", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
src = changeHeadSrc + src
|
||||||
|
p = path.Join(srcDir, "change_language.vis")
|
||||||
|
w, err = os.OpenFile(p, os.O_WRONLY | os.O_CREATE | os.O_TRUNC, 0600)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "failed open select language vis output: %v", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
defer w.Close()
|
||||||
|
_, err = w.Write([]byte(src))
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "failed write select language vis output: %v", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user