Initial Commit
This commit is contained in:
55
cmd/translate/gen-id.go
Normal file
55
cmd/translate/gen-id.go
Normal 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
32
cmd/translate/main.go
Normal 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)
|
||||
}
|
||||
}
|
||||
29
cmd/translate/translate.go
Normal file
29
cmd/translate/translate.go
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user