* 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>
26 lines
546 B
Go
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
|
|
})
|
|
}
|