Spaces:
Paused
Paused
| package main | |
| import ( | |
| "context" | |
| "flag" | |
| "fmt" | |
| "path/filepath" | |
| ) | |
| func main() { | |
| var ( | |
| targetLang = flag.String("lang", "zh-CN", "target language (e.g., zh-CN)") | |
| sourceLang = flag.String("src", "en", "source language") | |
| docsRoot = flag.String("docs", "docs", "docs root") | |
| tmPath = flag.String("tm", "", "translation memory path") | |
| ) | |
| flag.Parse() | |
| files := flag.Args() | |
| if len(files) == 0 { | |
| fatal(fmt.Errorf("no doc files provided")) | |
| } | |
| resolvedDocsRoot, err := filepath.Abs(*docsRoot) | |
| if err != nil { | |
| fatal(err) | |
| } | |
| if *tmPath == "" { | |
| *tmPath = filepath.Join(resolvedDocsRoot, ".i18n", fmt.Sprintf("%s.tm.jsonl", *targetLang)) | |
| } | |
| glossaryPath := filepath.Join(resolvedDocsRoot, ".i18n", fmt.Sprintf("glossary.%s.json", *targetLang)) | |
| glossary, err := LoadGlossary(glossaryPath) | |
| if err != nil { | |
| fatal(err) | |
| } | |
| translator, err := NewPiTranslator(*sourceLang, *targetLang, glossary) | |
| if err != nil { | |
| fatal(err) | |
| } | |
| defer translator.Close() | |
| tm, err := LoadTranslationMemory(*tmPath) | |
| if err != nil { | |
| fatal(err) | |
| } | |
| for _, file := range files { | |
| if err := processFile(context.Background(), translator, tm, resolvedDocsRoot, file, *sourceLang, *targetLang); err != nil { | |
| fatal(err) | |
| } | |
| } | |
| if err := tm.Save(); err != nil { | |
| fatal(err) | |
| } | |
| } | |