package main import ( "errors" "fmt" "log" "os" "path/filepath" "github.com/qor5/x/i18n/i18n-transfer/csv" "github.com/qor5/x/i18n/i18n-transfer/parser" "github.com/manifoldco/promptui" ) func main() { prompt := promptui.Select{ Label: "Import Or Export", Items: []string{"Import", "Export"}, } _, result, err := prompt.Run() if err != nil || (result != "Import" && result != "Export") { fmt.Printf("Please select \"Import\" or \"Export\"\n") return } if result == "Import" { validate := func(input string) error { s, err := os.Stat(input) if err != nil || s.IsDir() { return errors.New("Please input correct csv file path") } return nil } prompt := promptui.Prompt{ Label: "Csv File Path", Validate: validate, } result, err := prompt.Run() if err != nil { fmt.Printf("Please input correct csv file path\n") return } translationMap, err := csv.CsvToTranslationsMap(result) if err != nil { log.Fatalln(err) } projectPath, err := os.Getwd() if err != nil { fmt.Printf("Please run i18n-transfer in a correct project path\n") return } err = parser.ImportFromTranslationsMap(projectPath, translationMap) if err != nil { log.Fatalln(err) } } if result == "Export" { projectPath, _ := os.Getwd() projectPath, _ = filepath.Abs(projectPath) translationsMap, err := parser.ExportToTranslationsMap(projectPath) if err != nil { log.Fatalln(err) } for locale, translationMap := range translationsMap { fmt.Println(locale) for k, v := range translationMap { fmt.Printf(" %v: %v\n", k, v) } } err = csv.TranslationsMapToCsv(translationsMap) if err != nil { log.Fatalln(err) } } }