123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package translation
- import (
- "encoding/json"
- "fmt"
- "github.com/0xJacky/Nginx-UI/app"
- "github.com/0xJacky/pofile"
- "github.com/samber/lo"
- "io"
- "log"
- )
- var Dict map[string]pofile.Dict
- func init() {
- Dict = make(map[string]pofile.Dict)
- i18nJson, _ := app.DistFS.Open("i18n.json")
- defer i18nJson.Close()
- bytes, _ := io.ReadAll(i18nJson)
- i18nMap := make(map[string]string)
- _ = json.Unmarshal(bytes, &i18nMap)
- langCode := lo.MapToSlice(i18nMap, func(key string, value string) string {
- return key
- })
- for _, v := range langCode {
- handlePo(v)
- }
- }
- func handlePo(langCode string) {
- file, err := app.DistFS.Open(fmt.Sprintf("src/language/%s/app.po", langCode))
- if err != nil {
- log.Fatalln(err)
- }
- defer file.Close()
- bytes, err := io.ReadAll(file)
- if err != nil {
- log.Fatalln(err)
- }
- p, err := pofile.ParseText(string(bytes))
- if err != nil {
- log.Fatalln(err)
- }
- Dict[langCode] = p.ToDict()
- }
- func GetTranslation(langCode string) pofile.Dict {
- return Dict[langCode]
- }
|