Initial Commit

This commit is contained in:
2023-01-12 17:57:07 -08:00
commit aa8c0b219c
10 changed files with 555 additions and 0 deletions

55
cmd/translate/gen-id.go Normal file
View File

@@ -0,0 +1,55 @@
package main
import (
"hash/crc64"
"io"
"os"
"github.com/pelletier/go-toml/v2"
"github.com/urfave/cli/v2"
"go.arsenm.dev/logger/log"
"go.arsenm.dev/translate"
)
func genIDCmd(c *cli.Context) error {
if c.NArg() < 1 {
log.Fatal("This command requires one or more arguments").Send()
}
fl, err := os.Open(c.Args().First())
if err != nil {
log.Fatal("Error opening file").Err(err).Send()
}
var tr translate.Translations
err = toml.NewDecoder(fl).Decode(&tr)
if err != nil {
return err
}
fl.Close()
hash := crc64.New(crc64.MakeTable(crc64.ISO))
for i, item := range tr.Items {
hash.Reset()
_, err := io.WriteString(hash, item.Value)
if err != nil {
return err
}
tr.Items[i].ID = hash.Sum64()
}
fl, err = os.Create(c.Args().First())
if err != nil {
log.Fatal("Error creating file").Err(err).Send()
}
err = toml.NewEncoder(fl).Encode(tr)
if err != nil {
log.Fatal("Error writing toml to file").Err(err).Send()
}
return nil
}

32
cmd/translate/main.go Normal file
View File

@@ -0,0 +1,32 @@
package main
import (
"os"
"github.com/urfave/cli/v2"
)
func main() {
app := &cli.App{
Commands: []*cli.Command{
{
Name: "gen-id",
Usage: "<file>",
UsageText: "Generate IDs for each string in the given file",
Action: genIDCmd,
},
{
Name: "translate",
Aliases: []string{"tr"},
Usage: "<dir> <lang> <string>",
UsageText: "Translate the provided string to the given language using the translations in the directory.",
Action: translateCmd,
},
},
}
err := app.Run(os.Args)
if err != nil {
panic(err)
}
}

View File

@@ -0,0 +1,29 @@
package main
import (
"fmt"
"github.com/urfave/cli/v2"
"go.arsenm.dev/logger/log"
"go.arsenm.dev/translate"
"golang.org/x/text/language"
)
func translateCmd(c *cli.Context) error {
if c.NArg() < 3 {
log.Fatal("This command requires three or more arguments").Send()
}
t, err := translate.NewFromDir(c.Args().First())
if err != nil {
log.Fatal("Error creating new translator").Err(err).Send()
}
tag, err := language.Parse(c.Args().Get(1))
if err != nil {
log.Fatal("Error parsing language").Err(err).Send()
}
fmt.Println(t.TranslateTo(c.Args().Get(2), tag))
return nil
}