Files
qwqcode 1ca892fc2d feat(i18n): translations for backend (#344)
* i18n: add i18n for server pacakge

Signed-off-by: qwqcode <qwqcode@gmail.com>

* i18n: add i18n for cmd pacakge

Signed-off-by: qwqcode <qwqcode@gmail.com>

* feat: add mustache syntax support for i18n.T in backend

Signed-off-by: qwqcode <qwqcode@gmail.com>

* i18n: improve i18n for backend further

Signed-off-by: qwqcode <qwqcode@gmail.com>

* i18n: `zh-CN` translation for backend

Signed-off-by: qwqcode <qwqcode@gmail.com>

Signed-off-by: qwqcode <qwqcode@gmail.com>
2023-01-19 20:17:32 +08:00

26 lines
546 B
Go

package utils
import (
"fmt"
"regexp"
)
// 解析 Mustaches 语法
// 替换 {{ key }} 为 val
func RenderMustaches(data string, dict map[string]interface{}, valueGetter ...func(k string, v interface{}) string) string {
r := regexp.MustCompile(`{{\s*(.*?)\s*}}`)
return r.ReplaceAllStringFunc(data, func(m string) string {
key := r.FindStringSubmatch(m)[1]
if val, isExist := dict[key]; isExist {
if len(valueGetter) > 0 {
return valueGetter[0](key, val)
} else {
return fmt.Sprintf("%v", val)
}
}
return m
})
}