// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn . package langs import ( "github.com/TeaOSLab/EdgeCommon/pkg/configutils" "github.com/iwind/TeaGo/actions" "net/http" "strings" ) // Message 读取消息 // Read message func Message(langCode LangCode, messageCode MessageCode, args ...any) string { return defaultManager.GetMessage(langCode, messageCode, args...) } func DefaultMessage(messageCode MessageCode, args ...any) string { return defaultManager.GetMessage("en-us", messageCode, args...) } func ParseLangFromRequest(req *http.Request) (langCode string) { // 强制使用中文 return "zh-cn" } func ParseLangFromAction(action actions.ActionWrapper) (langCode string) { return ParseLangFromRequest(action.Object().Request) } // Format 格式化变量 // Format string that contains message variables, such as ${lang.MESSAGE_CODE} // // 暂时不支持变量中加参数 func Format(langCode LangCode, varString string) string { return configutils.ParseVariables(varString, func(varName string) (value string) { if !strings.HasPrefix(varName, varPrefix) { return "${" + varName + "}" // keep origin variable } return Message(langCode, MessageCode(varName[len(varPrefix):])) }) } // Load 加载消息定义 // Load message definitions from map func Load(langCode LangCode, messageMap map[MessageCode]string) { lang, ok := defaultManager.GetLang(langCode) if !ok { lang = defaultManager.AddLang(langCode) } for messageCode, messageText := range messageMap { lang.Set(messageCode, messageText) } }