mirror of
https://github.com/TeaOSLab/EdgeCommon.git
synced 2025-11-04 05:00:24 +08:00
部分中文转换为多语言代号
This commit is contained in:
@@ -51,9 +51,10 @@ func runGenerate() {
|
|||||||
var dirRegexp = regexp.MustCompile(`^[a-z]+-[a-z]+$`)
|
var dirRegexp = regexp.MustCompile(`^[a-z]+-[a-z]+$`)
|
||||||
var jsonFileNameRegexp = regexp.MustCompile(`^([a-zA-Z0-9]+)(_([a-zA-Z0-9]+))+\.json$`)
|
var jsonFileNameRegexp = regexp.MustCompile(`^([a-zA-Z0-9]+)(_([a-zA-Z0-9]+))+\.json$`)
|
||||||
var messageCodeRegexp = regexp.MustCompile(`^[a-zA-Z0-9_]+$`)
|
var messageCodeRegexp = regexp.MustCompile(`^[a-zA-Z0-9_]+$`)
|
||||||
|
var jsonCommentRegexp = regexp.MustCompile(`//.+`)
|
||||||
|
|
||||||
var messageCodes = []string{}
|
var messageCodes = []string{}
|
||||||
var messageMaps = map[string]map[string]string{} // lang => { K:V }
|
var langMaps = map[string]*langs.Lang{} // lang => *langs.Lang
|
||||||
var defaultLang = langs.DefaultManager().DefaultLang()
|
var defaultLang = langs.DefaultManager().DefaultLang()
|
||||||
|
|
||||||
for _, file := range files {
|
for _, file := range files {
|
||||||
@@ -65,11 +66,11 @@ func runGenerate() {
|
|||||||
var langCode = dirName
|
var langCode = dirName
|
||||||
var isBaseLang = langCode == defaultLang
|
var isBaseLang = langCode == defaultLang
|
||||||
|
|
||||||
func() {
|
var processOk = func() bool {
|
||||||
jsonFiles, err := filepath.Glob(rootDir + "/" + dirName + "/*.json")
|
jsonFiles, err := filepath.Glob(rootDir + "/" + dirName + "/*.json")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("[ERROR]list json files failed: " + err.Error())
|
fmt.Println("[ERROR]list json files failed: " + err.Error())
|
||||||
return
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, jsonFile := range jsonFiles {
|
for _, jsonFile := range jsonFiles {
|
||||||
@@ -82,21 +83,24 @@ func runGenerate() {
|
|||||||
data, err := os.ReadFile(jsonFile)
|
data, err := os.ReadFile(jsonFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("[ERROR]read json file '" + jsonFile + "' failed: " + err.Error())
|
fmt.Println("[ERROR]read json file '" + jsonFile + "' failed: " + err.Error())
|
||||||
return
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// remove comments in json
|
||||||
|
data = jsonCommentRegexp.ReplaceAll(data, []byte{})
|
||||||
|
|
||||||
var m = map[string]string{} // code => value
|
var m = map[string]string{} // code => value
|
||||||
err = json.Unmarshal(data, &m)
|
err = json.Unmarshal(data, &m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("[ERROR]decode json file '" + jsonFile + "' failed: " + err.Error())
|
fmt.Println("[ERROR]decode json file '" + jsonFile + "' failed: " + err.Error())
|
||||||
return
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
var newM = map[string]string{}
|
var newM = map[string]string{}
|
||||||
for code, value := range m {
|
for code, value := range m {
|
||||||
if !messageCodeRegexp.MatchString(code) {
|
if !messageCodeRegexp.MatchString(code) {
|
||||||
fmt.Println("[ERROR]invalid message code '" + code + "'")
|
fmt.Println("[ERROR]invalid message code '" + code + "'")
|
||||||
return
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
var fullCode = module + "_" + code
|
var fullCode = module + "_" + code
|
||||||
@@ -106,28 +110,42 @@ func runGenerate() {
|
|||||||
newM[fullCode] = value
|
newM[fullCode] = value
|
||||||
}
|
}
|
||||||
|
|
||||||
finalMap, ok := messageMaps[langCode]
|
finalLang, ok := langMaps[langCode]
|
||||||
if !ok {
|
if !ok {
|
||||||
finalMap = map[string]string{}
|
finalLang = langs.NewLang(langCode)
|
||||||
messageMaps[langCode] = finalMap
|
langMaps[langCode] = finalLang
|
||||||
}
|
}
|
||||||
for code, value := range newM {
|
for code, value := range newM {
|
||||||
finalMap[code] = value
|
finalLang.Set(code, value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
}()
|
}()
|
||||||
|
if !processOk {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// compile
|
||||||
|
for langCode, lang := range langMaps {
|
||||||
|
err = lang.Compile()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("[ERROR]compile '" + langCode + "' failed: " + err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// check message codes
|
// check message codes
|
||||||
fmt.Println("checking message codes ...")
|
fmt.Println("checking message codes ...")
|
||||||
var defaultMessageMap = map[string]string{}
|
var defaultMessageMap = map[string]string{}
|
||||||
for langCode, messageMap := range messageMaps {
|
for langCode, messageLang := range langMaps {
|
||||||
if langCode == defaultLang { // only check lang not equal to 'en-us'
|
if langCode == defaultLang { // only check lang not equal to 'en-us'
|
||||||
defaultMessageMap = messageMap
|
defaultMessageMap = messageLang.GetAll()
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
for messageCode := range messageMap {
|
for messageCode := range messageLang.GetAll() {
|
||||||
if !lists.ContainsString(messageCodes, messageCode) {
|
if !lists.ContainsString(messageCodes, messageCode) {
|
||||||
fmt.Println("[ERROR]message code '" + messageCode + "' in lang '" + langCode + "' not exist in default lang file ('" + defaultLang + "')")
|
fmt.Println("[ERROR]message code '" + messageCode + "' in lang '" + langCode + "' not exist in default lang file ('" + defaultLang + "')")
|
||||||
return
|
return
|
||||||
@@ -150,11 +168,16 @@ import(
|
|||||||
const (
|
const (
|
||||||
`
|
`
|
||||||
|
|
||||||
for _, messageCode := range messageCodes {
|
for index, messageCode := range messageCodes {
|
||||||
// add comment to message code
|
// add comment to message code
|
||||||
comment, _, _ := strings.Cut(defaultMessageMap[messageCode], "\n")
|
comment, _, _ := strings.Cut(defaultMessageMap[messageCode], "\n")
|
||||||
|
|
||||||
codesSource += upperWords(messageCode) + " langs.MessageCode = " + strconv.Quote(messageCode) + " // " + comment + "\n"
|
codesSource += upperWords(messageCode) + " langs.MessageCode = " + strconv.Quote(messageCode) + " // " + comment
|
||||||
|
|
||||||
|
// add NL
|
||||||
|
if index != len(messageCodes)-1 {
|
||||||
|
codesSource += "\n"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
codesSource += `
|
codesSource += `
|
||||||
@@ -175,7 +198,7 @@ const (
|
|||||||
}
|
}
|
||||||
|
|
||||||
// generate messages_LANG.go
|
// generate messages_LANG.go
|
||||||
for langCode, messageMap := range messageMaps {
|
for langCode, messageLang := range langMaps {
|
||||||
var langFile = strings.ReplaceAll("messages/messages_"+langCode+".go", "-", "_")
|
var langFile = strings.ReplaceAll("messages/messages_"+langCode+".go", "-", "_")
|
||||||
|
|
||||||
fmt.Println("generating '" + langFile + "' ...")
|
fmt.Println("generating '" + langFile + "' ...")
|
||||||
@@ -192,7 +215,7 @@ func init() {
|
|||||||
langs.Load("` + langCode + `", map[string]string{
|
langs.Load("` + langCode + `", map[string]string{
|
||||||
`
|
`
|
||||||
|
|
||||||
for code, value := range messageMap {
|
for code, value := range messageLang.GetAll() {
|
||||||
source += strconv.Quote(code) + ": " + strconv.Quote(value) + ",\n"
|
source += strconv.Quote(code) + ": " + strconv.Quote(value) + ",\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -214,8 +237,8 @@ func init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// generate language javascript files for EdgeAdmin
|
// generate language javascript files for EdgeAdmin and EdgeUser (commercial versions)
|
||||||
for lang, messageMap := range messageMaps {
|
for lang, messageLang := range langMaps {
|
||||||
if lang != defaultLang {
|
if lang != defaultLang {
|
||||||
// TODO merge messageMap with default message map
|
// TODO merge messageMap with default message map
|
||||||
}
|
}
|
||||||
@@ -226,7 +249,26 @@ func init() {
|
|||||||
var targetDir = filepath.Dir(targetFile)
|
var targetDir = filepath.Dir(targetFile)
|
||||||
dirStat, _ := os.Stat(targetDir)
|
dirStat, _ := os.Stat(targetDir)
|
||||||
if dirStat != nil {
|
if dirStat != nil {
|
||||||
messageMapJSON, err := json.Marshal(messageMap)
|
|
||||||
|
var prefix = ""
|
||||||
|
switch component {
|
||||||
|
case "EdgeAdmin":
|
||||||
|
prefix = "admin_"
|
||||||
|
case "EdgeUser":
|
||||||
|
prefix = "user_"
|
||||||
|
}
|
||||||
|
if len(prefix) == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
var filteredMessages = map[string]string{}
|
||||||
|
for code, value := range messageLang.GetAll() {
|
||||||
|
if strings.HasPrefix(code, prefix) {
|
||||||
|
filteredMessages[code] = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
messageMapJSON, err := json.Marshal(filteredMessages)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("[ERROR]marshal message map failed: " + err.Error())
|
fmt.Println("[ERROR]marshal message map failed: " + err.Error())
|
||||||
return
|
return
|
||||||
@@ -264,12 +306,16 @@ func upperWord(word string) string {
|
|||||||
|
|
||||||
// special words
|
// special words
|
||||||
switch word {
|
switch word {
|
||||||
case "api", "http", "https", "tcp", "udp", "ip", "dns", "ns", "waf", "acme", "ssh", "toa":
|
case "api", "http", "https", "tcp", "tls", "udp", "ip", "dns", "ns",
|
||||||
|
"waf", "acme", "ssh", "toa", "http2", "http3", "uam", "cc",
|
||||||
|
"db", "isp", "sni", "ui":
|
||||||
return strings.ToUpper(word)
|
return strings.ToUpper(word)
|
||||||
case "ipv6":
|
case "ipv6":
|
||||||
return "IPv6"
|
return "IPv6"
|
||||||
case "ddos":
|
case "ddos":
|
||||||
return "DDoS"
|
return "DDoS"
|
||||||
|
case "webp":
|
||||||
|
return "WebP"
|
||||||
}
|
}
|
||||||
|
|
||||||
return strings.ToUpper(word[:1]) + word[1:]
|
return strings.ToUpper(word[:1]) + word[1:]
|
||||||
|
|||||||
@@ -66,6 +66,18 @@ func ParseVariables(source string, replacer func(varName string) (value string))
|
|||||||
return builder.String()
|
return builder.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ParseVariablesError(source string, replacer func(varName string) (value string, err error)) (string, error) {
|
||||||
|
var resultErr error
|
||||||
|
var result = ParseVariables(source, func(varName string) (value string) {
|
||||||
|
replacedValue, err := replacer(varName)
|
||||||
|
if err != nil {
|
||||||
|
resultErr = err
|
||||||
|
}
|
||||||
|
return replacedValue
|
||||||
|
})
|
||||||
|
return result, resultErr
|
||||||
|
}
|
||||||
|
|
||||||
// ParseVariablesFromHolders 从占位中分析变量
|
// ParseVariablesFromHolders 从占位中分析变量
|
||||||
func ParseVariablesFromHolders(holders VariableHolders, replacer func(varName string) (value string)) string {
|
func ParseVariablesFromHolders(holders VariableHolders, replacer func(varName string) (value string)) string {
|
||||||
// no variables
|
// no variables
|
||||||
|
|||||||
@@ -7,68 +7,187 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
AdminDashboardDNS langs.MessageCode = "admin_dashboard_dns" // DNS
|
AdminClusterMenuSettingBasic langs.MessageCode = "admin_cluster_menu_setting_basic" // 基础设置
|
||||||
AdminDashboardEvents langs.MessageCode = "admin_dashboard_events" // 事件
|
AdminClusterMenuSettingCachePolicy langs.MessageCode = "admin_cluster_menu_setting_cache_policy" // 缓存策略
|
||||||
AdminDashboardOverview langs.MessageCode = "admin_dashboard_overview" // 概况
|
AdminClusterMenuSettingCC langs.MessageCode = "admin_cluster_menu_setting_cc" // CC防护
|
||||||
AdminDashboardUser langs.MessageCode = "admin_dashboard_user" // 用户
|
AdminClusterMenuSettingDDoSProtection langs.MessageCode = "admin_cluster_menu_setting_ddos_protection" // DDoS防护
|
||||||
AdminDashboardWAF langs.MessageCode = "admin_dashboard_waf" // WAF
|
AdminClusterMenuSettingDNS langs.MessageCode = "admin_cluster_menu_setting_dns" // DNS设置
|
||||||
AdminMenuAdminRecipients langs.MessageCode = "admin_menu_admin_recipients" // 通知媒介
|
AdminClusterMenuSettingHealthCheck langs.MessageCode = "admin_cluster_menu_setting_health_check" // 健康检查
|
||||||
AdminMenuAdmins langs.MessageCode = "admin_menu_admins" // 系统用户
|
AdminClusterMenuSettingHTTP3 langs.MessageCode = "admin_cluster_menu_setting_http3" // HTTP/3
|
||||||
AdminMenuDashboard langs.MessageCode = "admin_menu_dashboard" // 数据看板
|
AdminClusterMenuSettingMetrics langs.MessageCode = "admin_cluster_menu_setting_metrics" // 统计指标
|
||||||
AdminMenuDNS langs.MessageCode = "admin_menu_dns" // 域名解析
|
AdminClusterMenuSettingNotification langs.MessageCode = "admin_cluster_menu_setting_notification" // 消息通知
|
||||||
AdminMenuDNSClusters langs.MessageCode = "admin_menu_dns_clusters" // 集群列表
|
AdminClusterMenuSettingPages langs.MessageCode = "admin_cluster_menu_setting_pages" // 自定义页面
|
||||||
AdminMenuDNSIssues langs.MessageCode = "admin_menu_dns_issues" // 问题修复
|
AdminClusterMenuSettingSchedule langs.MessageCode = "admin_cluster_menu_setting_schedule" // 智能调度
|
||||||
AdminMenuDNSProviders langs.MessageCode = "admin_menu_dns_providers" // DNS服务商
|
AdminClusterMenuSettingServiceGlobal langs.MessageCode = "admin_cluster_menu_setting_service_global" // 网站设置
|
||||||
AdminMenuFinance langs.MessageCode = "admin_menu_finance" // 财务管理
|
AdminClusterMenuSettingSystemService langs.MessageCode = "admin_cluster_menu_setting_system_service" // 系统服务
|
||||||
AdminMenuFinanceAccounts langs.MessageCode = "admin_menu_finance_accounts" // 用户账户
|
AdminClusterMenuSettingThresholds langs.MessageCode = "admin_cluster_menu_setting_thresholds" // 阈值设置
|
||||||
AdminMenuFinanceBills langs.MessageCode = "admin_menu_finance_bills" // 费用账单
|
AdminClusterMenuSettingTOA langs.MessageCode = "admin_cluster_menu_setting_toa" // TOA设置
|
||||||
AdminMenuFinanceFee langs.MessageCode = "admin_menu_finance_fee" // 计费设置
|
AdminClusterMenuSettingUAM langs.MessageCode = "admin_cluster_menu_setting_uam" // 5秒盾
|
||||||
AdminMenuFinanceIncome langs.MessageCode = "admin_menu_finance_income" // 统计报表
|
AdminClusterMenuSettingWAFActions langs.MessageCode = "admin_cluster_menu_setting_waf_actions" // WAF动作
|
||||||
AdminMenuFinanceLogs langs.MessageCode = "admin_menu_finance_logs" // 收支明细
|
AdminClusterMenuSettingWAFPolicy langs.MessageCode = "admin_cluster_menu_setting_waf_policy" // WAF策略
|
||||||
AdminMenuFinanceOrders langs.MessageCode = "admin_menu_finance_orders" // 订单管理
|
AdminClusterMenuSettingWebP langs.MessageCode = "admin_cluster_menu_setting_webp" // WebP
|
||||||
AdminMenuFinancePackages langs.MessageCode = "admin_menu_finance_packages" // 流量包
|
AdminClusterMenuTabClusterDashboard langs.MessageCode = "admin_cluster_menu_tab_cluster_dashboard" // 集群看板
|
||||||
AdminMenuLogs langs.MessageCode = "admin_menu_logs" // 日志审计
|
AdminClusterMenuTabClusterDelete langs.MessageCode = "admin_cluster_menu_tab_cluster_delete" // 删除集群
|
||||||
AdminMenuNodeAntiDDoSProducts langs.MessageCode = "admin_menu_node_anti_ddos_products" // 高防IP
|
AdminClusterMenuTabClusterNodes langs.MessageCode = "admin_cluster_menu_tab_cluster_nodes" // 节点列表
|
||||||
AdminMenuNodeClusters langs.MessageCode = "admin_menu_node_clusters" // 集群列表
|
AdminClusterMenuTabClusterSettings langs.MessageCode = "admin_cluster_menu_tab_cluster_settings" // 集群设置
|
||||||
AdminMenuNodeDistributedMonitors langs.MessageCode = "admin_menu_node_distributed_monitors" // 区域监控
|
AdminCommonMenuSettingBasic langs.MessageCode = "admin_common_menu_setting_basic" // 基础设置
|
||||||
AdminMenuNodeIPList langs.MessageCode = "admin_menu_node_ip_list" // 节点IP
|
AdminCommonMenuSettingCache langs.MessageCode = "admin_common_menu_setting_cache" // 缓存设置
|
||||||
AdminMenuNodeLogs langs.MessageCode = "admin_menu_node_logs" // 节点日志
|
AdminCommonMenuSettingCachePolicy langs.MessageCode = "admin_common_menu_setting_cache_policy" // 缓存策略
|
||||||
AdminMenuNodeRegions langs.MessageCode = "admin_menu_node_regions" // 区域设置
|
AdminCommonMenuSettingDDoSProtection langs.MessageCode = "admin_common_menu_setting_ddos_protection" // DDoS防护
|
||||||
AdminMenuNodeSSHGrants langs.MessageCode = "admin_menu_node_ssh_grants" // 节点SSH
|
AdminCommonMenuSettingDNS langs.MessageCode = "admin_common_menu_setting_dns" // DNS设置
|
||||||
AdminMenuNodes langs.MessageCode = "admin_menu_nodes" // 边缘节点
|
AdminCommonMenuSettingHealthCheck langs.MessageCode = "admin_common_menu_setting_health_check" // 健康检查
|
||||||
AdminMenuNS langs.MessageCode = "admin_menu_ns" // 智能DNS
|
AdminCommonMenuSettingMetrics langs.MessageCode = "admin_common_menu_setting_metrics" // 统计指标
|
||||||
AdminMenuNSAccessLogs langs.MessageCode = "admin_menu_ns_access_logs" // 访问日志
|
AdminCommonMenuSettingWAFPolicy langs.MessageCode = "admin_common_menu_setting_waf_policy" // WAF策略
|
||||||
AdminMenuNSClusters langs.MessageCode = "admin_menu_ns_clusters" // 集群管理
|
AdminCommonMenuSettingWebP langs.MessageCode = "admin_common_menu_setting_webp" // WebP
|
||||||
AdminMenuNSDomainBatchOperations langs.MessageCode = "admin_menu_ns_domain_batch_operations" // 批量操作
|
AdminCommonSystem langs.MessageCode = "admin_common_system" // 系统
|
||||||
AdminMenuNSDomainGroups langs.MessageCode = "admin_menu_ns_domain_groups" // 域名分组
|
AdminDashboardDNS langs.MessageCode = "admin_dashboard_dns" // DNS
|
||||||
AdminMenuNSDomains langs.MessageCode = "admin_menu_ns_domains" // 域名管理
|
AdminDashboardEvents langs.MessageCode = "admin_dashboard_events" // 事件
|
||||||
AdminMenuNSNodeLogs langs.MessageCode = "admin_menu_ns_node_logs" // 运行日志
|
AdminDashboardOverview langs.MessageCode = "admin_dashboard_overview" // 概况
|
||||||
AdminMenuNSPlans langs.MessageCode = "admin_menu_ns_plans" // 套餐设置
|
AdminDashboardUser langs.MessageCode = "admin_dashboard_user" // 用户
|
||||||
AdminMenuNSResolveTest langs.MessageCode = "admin_menu_ns_resolve_test" // 解析测试
|
AdminDashboardWAF langs.MessageCode = "admin_dashboard_waf" // WAF
|
||||||
AdminMenuNSRoutes langs.MessageCode = "admin_menu_ns_routes" // 线路管理
|
AdminDBNodeTabNodes langs.MessageCode = "admin_db_node_tab_nodes" // 数据库节点
|
||||||
AdminMenuNSSettings langs.MessageCode = "admin_menu_ns_settings" // 全局配置
|
AdminMenuAdminRecipients langs.MessageCode = "admin_menu_admin_recipients" // 通知媒介
|
||||||
AdminMenuNSUserPlans langs.MessageCode = "admin_menu_ns_user_plans" // 用户套餐
|
AdminMenuAdmins langs.MessageCode = "admin_menu_admins" // 系统用户
|
||||||
AdminMenuPlanUserPlans langs.MessageCode = "admin_menu_plan_user_plans" // 已购套餐
|
AdminMenuDashboard langs.MessageCode = "admin_menu_dashboard" // 数据看板
|
||||||
AdminMenuPlans langs.MessageCode = "admin_menu_plans" // 套餐管理
|
AdminMenuDNS langs.MessageCode = "admin_menu_dns" // 域名解析
|
||||||
AdminMenuServerAccessLogPolicies langs.MessageCode = "admin_menu_server_access_log_policies" // 日志策略
|
AdminMenuDNSClusters langs.MessageCode = "admin_menu_dns_clusters" // 集群列表
|
||||||
AdminMenuServerAccessLogs langs.MessageCode = "admin_menu_server_access_logs" // 访问日志
|
AdminMenuDNSIssues langs.MessageCode = "admin_menu_dns_issues" // 问题修复
|
||||||
AdminMenuServerCachePolicies langs.MessageCode = "admin_menu_server_cache_policies" // 缓存策略
|
AdminMenuDNSProviders langs.MessageCode = "admin_menu_dns_providers" // DNS服务商
|
||||||
AdminMenuServerCerts langs.MessageCode = "admin_menu_server_certs" // 证书管理
|
AdminMenuFinance langs.MessageCode = "admin_menu_finance" // 财务管理
|
||||||
AdminMenuServerGlobalSettings langs.MessageCode = "admin_menu_server_global_settings" // 通用设置
|
AdminMenuFinanceAccounts langs.MessageCode = "admin_menu_finance_accounts" // 用户账户
|
||||||
AdminMenuServerGroups langs.MessageCode = "admin_menu_server_groups" // 网站分组
|
AdminMenuFinanceBills langs.MessageCode = "admin_menu_finance_bills" // 费用账单
|
||||||
AdminMenuServerIPLists langs.MessageCode = "admin_menu_server_ip_lists" // IP名单
|
AdminMenuFinanceFee langs.MessageCode = "admin_menu_finance_fee" // 计费设置
|
||||||
AdminMenuServerMetrics langs.MessageCode = "admin_menu_server_metrics" // 统计指标
|
AdminMenuFinanceIncome langs.MessageCode = "admin_menu_finance_income" // 统计报表
|
||||||
AdminMenuServerPurgeFetchCaches langs.MessageCode = "admin_menu_server_purge_fetch_caches" // 刷新预热
|
AdminMenuFinanceLogs langs.MessageCode = "admin_menu_finance_logs" // 收支明细
|
||||||
AdminMenuServerScripts langs.MessageCode = "admin_menu_server_scripts" // 脚本库
|
AdminMenuFinanceOrders langs.MessageCode = "admin_menu_finance_orders" // 订单管理
|
||||||
AdminMenuServerTrafficStats langs.MessageCode = "admin_menu_server_traffic_stats" // 用量统计
|
AdminMenuFinancePackages langs.MessageCode = "admin_menu_finance_packages" // 流量包
|
||||||
AdminMenuServerWAFPolicies langs.MessageCode = "admin_menu_server_waf_policies" // WAF策略
|
AdminMenuLogs langs.MessageCode = "admin_menu_logs" // 日志审计
|
||||||
AdminMenuServers langs.MessageCode = "admin_menu_servers" // 网站列表
|
AdminMenuNodeAntiDDoSProducts langs.MessageCode = "admin_menu_node_anti_ddos_products" // 高防IP
|
||||||
AdminMenuSettingAdvancedSettings langs.MessageCode = "admin_menu_setting_advanced_settings" // 高级设置
|
AdminMenuNodeClusters langs.MessageCode = "admin_menu_node_clusters" // 集群列表
|
||||||
AdminMenuSettingAuthority langs.MessageCode = "admin_menu_setting_authority" // 商业版本
|
AdminMenuNodeDistributedMonitors langs.MessageCode = "admin_menu_node_distributed_monitors" // 区域监控
|
||||||
AdminMenuSettingBasicSettings langs.MessageCode = "admin_menu_setting_basic_settings" // 基础设置
|
AdminMenuNodeIPList langs.MessageCode = "admin_menu_node_ip_list" // 节点IP
|
||||||
AdminMenuSettings langs.MessageCode = "admin_menu_settings" // 系统设置
|
AdminMenuNodeLogs langs.MessageCode = "admin_menu_node_logs" // 节点日志
|
||||||
AdminMenuTicketCategory langs.MessageCode = "admin_menu_ticket_category" // 分类
|
AdminMenuNodeRegions langs.MessageCode = "admin_menu_node_regions" // 区域设置
|
||||||
AdminMenuTickets langs.MessageCode = "admin_menu_tickets" // 工单系统
|
AdminMenuNodeSSHGrants langs.MessageCode = "admin_menu_node_ssh_grants" // 节点SSH
|
||||||
AdminMenuUsers langs.MessageCode = "admin_menu_users" // 用户设置
|
AdminMenuNodes langs.MessageCode = "admin_menu_nodes" // 边缘节点
|
||||||
|
AdminMenuNS langs.MessageCode = "admin_menu_ns" // 智能DNS
|
||||||
|
AdminMenuNSAccessLogs langs.MessageCode = "admin_menu_ns_access_logs" // 访问日志
|
||||||
|
AdminMenuNSClusters langs.MessageCode = "admin_menu_ns_clusters" // 集群管理
|
||||||
|
AdminMenuNSDomainBatchOperations langs.MessageCode = "admin_menu_ns_domain_batch_operations" // 批量操作
|
||||||
|
AdminMenuNSDomainGroups langs.MessageCode = "admin_menu_ns_domain_groups" // 域名分组
|
||||||
|
AdminMenuNSDomains langs.MessageCode = "admin_menu_ns_domains" // 域名管理
|
||||||
|
AdminMenuNSNodeLogs langs.MessageCode = "admin_menu_ns_node_logs" // 运行日志
|
||||||
|
AdminMenuNSPlans langs.MessageCode = "admin_menu_ns_plans" // 套餐设置
|
||||||
|
AdminMenuNSResolveTest langs.MessageCode = "admin_menu_ns_resolve_test" // 解析测试
|
||||||
|
AdminMenuNSRoutes langs.MessageCode = "admin_menu_ns_routes" // 线路管理
|
||||||
|
AdminMenuNSSettings langs.MessageCode = "admin_menu_ns_settings" // 全局配置
|
||||||
|
AdminMenuNSUserPlans langs.MessageCode = "admin_menu_ns_user_plans" // 用户套餐
|
||||||
|
AdminMenuPlanUserPlans langs.MessageCode = "admin_menu_plan_user_plans" // 已购套餐
|
||||||
|
AdminMenuPlans langs.MessageCode = "admin_menu_plans" // 套餐管理
|
||||||
|
AdminMenuServerAccessLogPolicies langs.MessageCode = "admin_menu_server_access_log_policies" // 日志策略
|
||||||
|
AdminMenuServerAccessLogs langs.MessageCode = "admin_menu_server_access_logs" // 访问日志
|
||||||
|
AdminMenuServerCachePolicies langs.MessageCode = "admin_menu_server_cache_policies" // 缓存策略
|
||||||
|
AdminMenuServerCerts langs.MessageCode = "admin_menu_server_certs" // 证书管理
|
||||||
|
AdminMenuServerGlobalSettings langs.MessageCode = "admin_menu_server_global_settings" // 通用设置
|
||||||
|
AdminMenuServerGroups langs.MessageCode = "admin_menu_server_groups" // 网站分组
|
||||||
|
AdminMenuServerIPLists langs.MessageCode = "admin_menu_server_ip_lists" // IP名单
|
||||||
|
AdminMenuServerMetrics langs.MessageCode = "admin_menu_server_metrics" // 统计指标
|
||||||
|
AdminMenuServerPurgeFetchCaches langs.MessageCode = "admin_menu_server_purge_fetch_caches" // 刷新预热
|
||||||
|
AdminMenuServerScripts langs.MessageCode = "admin_menu_server_scripts" // 脚本库
|
||||||
|
AdminMenuServerTrafficStats langs.MessageCode = "admin_menu_server_traffic_stats" // 用量统计
|
||||||
|
AdminMenuServerWAFPolicies langs.MessageCode = "admin_menu_server_waf_policies" // WAF策略
|
||||||
|
AdminMenuServers langs.MessageCode = "admin_menu_servers" // 网站列表
|
||||||
|
AdminMenuSettingAdvancedSettings langs.MessageCode = "admin_menu_setting_advanced_settings" // 高级设置
|
||||||
|
AdminMenuSettingAuthority langs.MessageCode = "admin_menu_setting_authority" // 商业版本
|
||||||
|
AdminMenuSettingBasicSettings langs.MessageCode = "admin_menu_setting_basic_settings" // 基础设置
|
||||||
|
AdminMenuSettings langs.MessageCode = "admin_menu_settings" // 系统设置
|
||||||
|
AdminMenuTicketCategory langs.MessageCode = "admin_menu_ticket_category" // 分类
|
||||||
|
AdminMenuTickets langs.MessageCode = "admin_menu_tickets" // 工单系统
|
||||||
|
AdminMenuUsers langs.MessageCode = "admin_menu_users" // 用户设置
|
||||||
|
AdminNodeMenuCreateMultipleNodes langs.MessageCode = "admin_node_menu_create_multiple_nodes" // 批量创建
|
||||||
|
AdminNodeMenuCreateSingleNode langs.MessageCode = "admin_node_menu_create_single_node" // 单个创建
|
||||||
|
AdminNodeMenuInstallAutoRegister langs.MessageCode = "admin_node_menu_install_auto_register" // 自动注册
|
||||||
|
AdminNodeMenuInstallManually langs.MessageCode = "admin_node_menu_install_manually" // 手动安装
|
||||||
|
AdminNodeMenuInstallRemote langs.MessageCode = "admin_node_menu_install_remote" // 远程安装(%d)
|
||||||
|
AdminNodeMenuInstallRemoteUpgrade langs.MessageCode = "admin_node_menu_install_remote_upgrade" // 远程升级(%d)
|
||||||
|
AdminNodeMenuSettingBasic langs.MessageCode = "admin_node_menu_setting_basic" // 基础设置
|
||||||
|
AdminNodeMenuSettingCache langs.MessageCode = "admin_node_menu_setting_cache" // 缓存设置
|
||||||
|
AdminNodeMenuSettingDDoSProtection langs.MessageCode = "admin_node_menu_setting_ddos_protection" // DDoS防护
|
||||||
|
AdminNodeMenuSettingDNS langs.MessageCode = "admin_node_menu_setting_dns" // DNS设置
|
||||||
|
AdminNodeMenuSettingSchedule langs.MessageCode = "admin_node_menu_setting_schedule" // 智能调度
|
||||||
|
AdminNodeMenuSettingSSH langs.MessageCode = "admin_node_menu_setting_ssh" // SSH设置
|
||||||
|
AdminNodeMenuSettingSystem langs.MessageCode = "admin_node_menu_setting_system" // 系统设置
|
||||||
|
AdminNodeMenuSettingThresholds langs.MessageCode = "admin_node_menu_setting_thresholds" // 阈值设置
|
||||||
|
AdminNodeUngroupedLabel langs.MessageCode = "admin_node_ungrouped_label" // 未分组
|
||||||
|
AdminNSClusterTabDelete langs.MessageCode = "admin_ns_cluster_tab_delete" // 删除集群
|
||||||
|
AdminNSClusterTabNodes langs.MessageCode = "admin_ns_cluster_tab_nodes" // 节点列表
|
||||||
|
AdminNSClusterTabSetting langs.MessageCode = "admin_ns_cluster_tab_setting" // 集群设置
|
||||||
|
AdminServerMenuAccesslogHistory langs.MessageCode = "admin_server_menu_accesslog_history" // 历史
|
||||||
|
AdminServerMenuAccesslogRealtime langs.MessageCode = "admin_server_menu_accesslog_realtime" // 实时
|
||||||
|
AdminServerMenuAccesslogToday langs.MessageCode = "admin_server_menu_accesslog_today" // 今天
|
||||||
|
AdminServerMenuDashboard langs.MessageCode = "admin_server_menu_dashboard" // 看板
|
||||||
|
AdminServerMenuSettingAccessLog langs.MessageCode = "admin_server_menu_setting_access_log" // 访问日志
|
||||||
|
AdminServerMenuSettingAuth langs.MessageCode = "admin_server_menu_setting_auth" // 访问鉴权
|
||||||
|
AdminServerMenuSettingBasic langs.MessageCode = "admin_server_menu_setting_basic" // 基本信息
|
||||||
|
AdminServerMenuSettingCache langs.MessageCode = "admin_server_menu_setting_cache" // 缓存
|
||||||
|
AdminServerMenuSettingCC langs.MessageCode = "admin_server_menu_setting_cc" // CC防护
|
||||||
|
AdminServerMenuSettingCharset langs.MessageCode = "admin_server_menu_setting_charset" // 字符编码
|
||||||
|
AdminServerMenuSettingClientIP langs.MessageCode = "admin_server_menu_setting_client_ip" // 访客IP地址
|
||||||
|
AdminServerMenuSettingCompress langs.MessageCode = "admin_server_menu_setting_compress" // 内容压缩
|
||||||
|
AdminServerMenuSettingDelete langs.MessageCode = "admin_server_menu_setting_delete" // 删除
|
||||||
|
AdminServerMenuSettingDNS langs.MessageCode = "admin_server_menu_setting_dns" // DNS
|
||||||
|
AdminServerMenuSettingDomains langs.MessageCode = "admin_server_menu_setting_domains" // 域名
|
||||||
|
AdminServerMenuSettingFastcgi langs.MessageCode = "admin_server_menu_setting_fastcgi" // Fastcgi
|
||||||
|
AdminServerMenuSettingHTTP langs.MessageCode = "admin_server_menu_setting_http" // HTTP
|
||||||
|
AdminServerMenuSettingHTTPHeaders langs.MessageCode = "admin_server_menu_setting_http_headers" // HTTP Header
|
||||||
|
AdminServerMenuSettingHTTPS langs.MessageCode = "admin_server_menu_setting_https" // HTTPS
|
||||||
|
AdminServerMenuSettingLocations langs.MessageCode = "admin_server_menu_setting_locations" // 路由规则
|
||||||
|
AdminServerMenuSettingOrigins langs.MessageCode = "admin_server_menu_setting_origins" // 源站
|
||||||
|
AdminServerMenuSettingOthers langs.MessageCode = "admin_server_menu_setting_others" // 其他设置
|
||||||
|
AdminServerMenuSettingPages langs.MessageCode = "admin_server_menu_setting_pages" // 自定义页面
|
||||||
|
AdminServerMenuSettingRedirects langs.MessageCode = "admin_server_menu_setting_redirects" // URL跳转
|
||||||
|
AdminServerMenuSettingReferers langs.MessageCode = "admin_server_menu_setting_referers" // 防盗链
|
||||||
|
AdminServerMenuSettingRequestLimit langs.MessageCode = "admin_server_menu_setting_request_limit" // 请求限制
|
||||||
|
AdminServerMenuSettingRewriteRules langs.MessageCode = "admin_server_menu_setting_rewrite_rules" // 重写规则
|
||||||
|
AdminServerMenuSettingRoot langs.MessageCode = "admin_server_menu_setting_root" // 静态分发
|
||||||
|
AdminServerMenuSettingScripts langs.MessageCode = "admin_server_menu_setting_scripts" // 边缘脚本
|
||||||
|
AdminServerMenuSettingStat langs.MessageCode = "admin_server_menu_setting_stat" // 统计
|
||||||
|
AdminServerMenuSettingTCP langs.MessageCode = "admin_server_menu_setting_tcp" // TCP
|
||||||
|
AdminServerMenuSettingTLS langs.MessageCode = "admin_server_menu_setting_tls" // TLS
|
||||||
|
AdminServerMenuSettingTrafficLimit langs.MessageCode = "admin_server_menu_setting_traffic_limit" // 流量限制
|
||||||
|
AdminServerMenuSettingUAM langs.MessageCode = "admin_server_menu_setting_uam" // 5秒盾
|
||||||
|
AdminServerMenuSettingUDP langs.MessageCode = "admin_server_menu_setting_udp" // UDP
|
||||||
|
AdminServerMenuSettingUnix langs.MessageCode = "admin_server_menu_setting_unix" // Unix
|
||||||
|
AdminServerMenuSettingUserAgents langs.MessageCode = "admin_server_menu_setting_user_agents" // UA名单
|
||||||
|
AdminServerMenuSettingWAF langs.MessageCode = "admin_server_menu_setting_waf" // WAF
|
||||||
|
AdminServerMenuSettingWebP langs.MessageCode = "admin_server_menu_setting_webp" // WebP
|
||||||
|
AdminServerMenuSettingWebsocket langs.MessageCode = "admin_server_menu_setting_websocket" // Websocket
|
||||||
|
AdminServerMenuStatClients langs.MessageCode = "admin_server_menu_stat_clients" // 终端
|
||||||
|
AdminServerMenuStatProviders langs.MessageCode = "admin_server_menu_stat_providers" // 运营商
|
||||||
|
AdminServerMenuStatRegions langs.MessageCode = "admin_server_menu_stat_regions" // 地域分布
|
||||||
|
AdminServerMenuStatTraffic langs.MessageCode = "admin_server_menu_stat_traffic" // 流量统计
|
||||||
|
AdminServerMenuStatWAF langs.MessageCode = "admin_server_menu_stat_waf" // WAF
|
||||||
|
AdminServerTabAccessLogs langs.MessageCode = "admin_server_tab_access_logs" // 日志
|
||||||
|
AdminServerTabDashboard langs.MessageCode = "admin_server_tab_dashboard" // 看板
|
||||||
|
AdminServerTabDelete langs.MessageCode = "admin_server_tab_delete" // 删除
|
||||||
|
AdminServerTabSettings langs.MessageCode = "admin_server_tab_settings" // 设置
|
||||||
|
AdminServerTabStat langs.MessageCode = "admin_server_tab_stat" // 统计
|
||||||
|
AdminSettingsTabAccessLogDatabases langs.MessageCode = "admin_settings_tab_access_log_databases" // 日志数据库
|
||||||
|
AdminSettingsTabAdminSecuritySettings langs.MessageCode = "admin_settings_tab_admin_security_settings" // 安全设置
|
||||||
|
AdminSettingsTabAdminServer langs.MessageCode = "admin_settings_tab_admin_server" // Web服务
|
||||||
|
AdminSettingsTabAdminUI langs.MessageCode = "admin_settings_tab_admin_ui" // 管理界面设置
|
||||||
|
AdminSettingsTabAPINodes langs.MessageCode = "admin_settings_tab_api_nodes" // API节点
|
||||||
|
AdminSettingsTabAuthority langs.MessageCode = "admin_settings_tab_authority" // 商业版认证
|
||||||
|
AdminSettingsTabBackup langs.MessageCode = "admin_settings_tab_backup" // 备份
|
||||||
|
AdminSettingsTabClientBrowsers langs.MessageCode = "admin_settings_tab_client_browsers" // 浏览器库
|
||||||
|
AdminSettingsTabClientOperationSystems langs.MessageCode = "admin_settings_tab_client_operation_systems" // 操作系统库
|
||||||
|
AdminSettingsTabDatabase langs.MessageCode = "admin_settings_tab_database" // 数据库
|
||||||
|
AdminSettingsTabIPLibrary langs.MessageCode = "admin_settings_tab_ip_library" // IP库
|
||||||
|
AdminSettingsTabLogin langs.MessageCode = "admin_settings_tab_login" // 登录设置
|
||||||
|
AdminSettingsTabMonitorNodes langs.MessageCode = "admin_settings_tab_monitor_nodes" // 监控节点
|
||||||
|
AdminSettingsTabProfile langs.MessageCode = "admin_settings_tab_profile" // 个人资料
|
||||||
|
AdminSettingsTabTransfer langs.MessageCode = "admin_settings_tab_transfer" // 迁移
|
||||||
|
AdminSettingsTabUpdates langs.MessageCode = "admin_settings_tab_updates" // 检查更新
|
||||||
|
AdminSettingsTabUserNodes langs.MessageCode = "admin_settings_tab_user_nodes" // 用户节点
|
||||||
|
AdminSettingsTabUserUI langs.MessageCode = "admin_settings_tab_user_ui" // 用户界面设置
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -2,6 +2,16 @@
|
|||||||
|
|
||||||
package langs
|
package langs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"github.com/TeaOSLab/EdgeCommon/pkg/configutils"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
const varPrefix = "lang."
|
||||||
|
|
||||||
|
type LangCode = string
|
||||||
|
|
||||||
type Lang struct {
|
type Lang struct {
|
||||||
code string
|
code string
|
||||||
|
|
||||||
@@ -30,3 +40,39 @@ func (this *Lang) Get(messageCode string) string {
|
|||||||
func (this *Lang) GetAll() map[string]string {
|
func (this *Lang) GetAll() map[string]string {
|
||||||
return this.messageMap
|
return this.messageMap
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Compile variable to literal strings
|
||||||
|
func (this *Lang) Compile() error {
|
||||||
|
for code, oldMessage := range this.messageMap {
|
||||||
|
message, err := this.get(code, 0)
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("compile '" + code + "': '" + oldMessage + "' failed: " + err.Error())
|
||||||
|
}
|
||||||
|
this.messageMap[code] = message
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Lang) get(messageCode string, loopIndex int) (string, error) {
|
||||||
|
if loopIndex >= 8 /** max recurse **/ {
|
||||||
|
return "", errors.New("too many recurse")
|
||||||
|
}
|
||||||
|
loopIndex++
|
||||||
|
|
||||||
|
message, ok := this.messageMap[messageCode]
|
||||||
|
if len(message) == 0 {
|
||||||
|
if !ok && loopIndex > 1 {
|
||||||
|
// recover as variable
|
||||||
|
return "${" + varPrefix + messageCode + "}", errors.New("can not find message for code '" + messageCode + "'")
|
||||||
|
}
|
||||||
|
return "", nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return configutils.ParseVariablesError(message, func(varName string) (value string, err error) {
|
||||||
|
if !strings.HasPrefix(varName, varPrefix) {
|
||||||
|
return "${" + varName + "}", nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.get(varName[len(varPrefix):], loopIndex)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -8,68 +8,188 @@ import (
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
langs.Load("zh-cn", map[string]string{
|
langs.Load("zh-cn", map[string]string{
|
||||||
"admin_menu_finance_fee": "计费设置",
|
"admin_server_menu_setting_webp": "WebP",
|
||||||
"admin_menu_server_traffic_stats": "用量统计",
|
"admin_cluster_menu_setting_uam": "5秒盾",
|
||||||
"admin_menu_ns_node_logs": "运行日志",
|
"admin_common_menu_setting_webp": "WebP",
|
||||||
"admin_menu_servers": "网站列表",
|
"admin_dashboard_events": "事件",
|
||||||
"admin_menu_finance_logs": "收支明细",
|
"admin_server_menu_setting_unix": "Unix",
|
||||||
"admin_menu_plan_user_plans": "已购套餐",
|
"admin_server_menu_setting_root": "静态分发",
|
||||||
"admin_menu_server_ip_lists": "IP名单",
|
"admin_server_menu_accesslog_realtime": "实时",
|
||||||
"admin_menu_users": "用户设置",
|
"admin_server_menu_accesslog_history": "历史",
|
||||||
"admin_menu_ns_access_logs": "访问日志",
|
"admin_settings_tab_access_log_databases": "日志数据库",
|
||||||
"admin_menu_server_purge_fetch_caches": "刷新预热",
|
"admin_menu_server_traffic_stats": "用量统计",
|
||||||
"admin_menu_node_distributed_monitors": "区域监控",
|
"admin_menu_ticket_category": "分类",
|
||||||
"admin_menu_finance_packages": "流量包",
|
"admin_menu_server_ip_lists": "IP名单",
|
||||||
"admin_menu_settings": "系统设置",
|
"admin_menu_plans": "套餐管理",
|
||||||
"admin_menu_ns_plans": "套餐设置",
|
"admin_node_menu_install_remote_upgrade": "远程升级(%d)",
|
||||||
"admin_dashboard_user": "用户",
|
"admin_server_menu_setting_auth": "访问鉴权",
|
||||||
"admin_dashboard_waf": "WAF",
|
"admin_server_menu_setting_websocket": "Websocket",
|
||||||
"admin_menu_setting_advanced_settings": "高级设置",
|
"admin_common_menu_setting_metrics": "统计指标",
|
||||||
"admin_menu_server_global_settings": "通用设置",
|
"admin_common_menu_setting_waf_policy": "WAF策略",
|
||||||
"admin_menu_node_logs": "节点日志",
|
"admin_menu_server_global_settings": "通用设置",
|
||||||
"admin_menu_ns_clusters": "集群管理",
|
"admin_menu_node_clusters": "集群列表",
|
||||||
"admin_menu_server_cache_policies": "缓存策略",
|
"admin_node_menu_install_manually": "手动安装",
|
||||||
"admin_menu_ns_resolve_test": "解析测试",
|
"admin_server_tab_settings": "设置",
|
||||||
"admin_menu_finance_income": "统计报表",
|
"admin_server_menu_setting_http_headers": "HTTP Header",
|
||||||
"admin_menu_finance_accounts": "用户账户",
|
"admin_cluster_menu_setting_service_global": "网站设置",
|
||||||
"admin_menu_server_certs": "证书管理",
|
"admin_cluster_menu_setting_thresholds": "阈值设置",
|
||||||
"admin_menu_dashboard": "数据看板",
|
"admin_node_menu_create_multiple_nodes": "批量创建",
|
||||||
"admin_dashboard_events": "事件",
|
"admin_server_menu_setting_https": "HTTPS",
|
||||||
"admin_menu_node_ip_list": "节点IP",
|
"admin_server_menu_setting_others": "其他设置",
|
||||||
"admin_dashboard_overview": "概况",
|
"admin_server_tab_delete": "删除",
|
||||||
"admin_menu_server_access_logs": "访问日志",
|
"admin_server_menu_setting_pages": "自定义页面",
|
||||||
"admin_menu_dns_providers": "DNS服务商",
|
"admin_settings_tab_client_operation_systems": "操作系统库",
|
||||||
"admin_menu_admins": "系统用户",
|
"admin_cluster_menu_tab_cluster_settings": "集群设置",
|
||||||
"admin_menu_setting_authority": "商业版本",
|
"admin_cluster_menu_tab_cluster_nodes": "节点列表",
|
||||||
"admin_menu_dns_issues": "问题修复",
|
"admin_node_menu_setting_thresholds": "阈值设置",
|
||||||
"admin_menu_server_metrics": "统计指标",
|
"admin_server_menu_stat_traffic": "流量统计",
|
||||||
"admin_menu_node_ssh_grants": "节点SSH",
|
"admin_server_menu_setting_user_agents": "UA名单",
|
||||||
"admin_menu_server_waf_policies": "WAF策略",
|
"admin_server_menu_setting_basic": "基本信息",
|
||||||
"admin_menu_ns_domains": "域名管理",
|
"admin_settings_tab_updates": "检查更新",
|
||||||
"admin_menu_nodes": "边缘节点",
|
"admin_menu_node_anti_ddos_products": "高防IP",
|
||||||
"admin_dashboard_dns": "DNS",
|
"admin_menu_setting_advanced_settings": "高级设置",
|
||||||
"admin_menu_logs": "日志审计",
|
"admin_menu_node_distributed_monitors": "区域监控",
|
||||||
"admin_menu_ns_user_plans": "用户套餐",
|
"admin_menu_ns_node_logs": "运行日志",
|
||||||
"admin_menu_ns_domain_groups": "域名分组",
|
"admin_menu_setting_authority": "商业版本",
|
||||||
"admin_menu_tickets": "工单系统",
|
"admin_server_menu_setting_cc": "CC防护",
|
||||||
"admin_menu_node_regions": "区域设置",
|
"admin_server_menu_stat_clients": "终端",
|
||||||
"admin_menu_ns_domain_batch_operations": "批量操作",
|
"admin_server_menu_accesslog_today": "今天",
|
||||||
"admin_menu_plans": "套餐管理",
|
"admin_cluster_menu_setting_waf_policy": "WAF策略",
|
||||||
"admin_menu_finance_bills": "费用账单",
|
"admin_menu_dashboard": "数据看板",
|
||||||
"admin_menu_ticket_category": "分类",
|
"admin_menu_node_ssh_grants": "节点SSH",
|
||||||
"admin_menu_finance": "财务管理",
|
"admin_menu_servers": "网站列表",
|
||||||
"admin_menu_node_anti_ddos_products": "高防IP",
|
"admin_menu_ns_user_plans": "用户套餐",
|
||||||
"admin_menu_ns": "智能DNS",
|
"admin_node_menu_setting_ssh": "SSH设置",
|
||||||
"admin_menu_dns": "域名解析",
|
"admin_server_menu_dashboard": "看板",
|
||||||
"admin_menu_server_groups": "网站分组",
|
"admin_server_menu_setting_dns": "DNS",
|
||||||
"admin_menu_server_scripts": "脚本库",
|
"admin_settings_tab_authority": "商业版认证",
|
||||||
"admin_menu_ns_settings": "全局配置",
|
"admin_settings_tab_user_nodes": "用户节点",
|
||||||
"admin_menu_ns_routes": "线路管理",
|
"admin_cluster_menu_setting_health_check": "健康检查",
|
||||||
"admin_menu_server_access_log_policies": "日志策略",
|
"admin_menu_ns_resolve_test": "解析测试",
|
||||||
"admin_menu_finance_orders": "订单管理",
|
"admin_menu_finance_orders": "订单管理",
|
||||||
"admin_menu_dns_clusters": "集群列表",
|
"admin_ns_cluster_tab_setting": "集群设置",
|
||||||
"admin_menu_admin_recipients": "通知媒介",
|
"admin_server_menu_setting_referers": "防盗链",
|
||||||
"admin_menu_setting_basic_settings": "基础设置",
|
"admin_server_menu_setting_tls": "TLS",
|
||||||
"admin_menu_node_clusters": "集群列表",
|
"admin_settings_tab_admin_server": "Web服务",
|
||||||
|
"admin_settings_tab_ip_library": "IP库",
|
||||||
|
"admin_cluster_menu_setting_schedule": "智能调度",
|
||||||
|
"admin_menu_ns_routes": "线路管理",
|
||||||
|
"admin_menu_finance_income": "统计报表",
|
||||||
|
"admin_menu_finance": "财务管理",
|
||||||
|
"admin_ns_cluster_tab_nodes": "节点列表",
|
||||||
|
"admin_server_menu_setting_charset": "字符编码",
|
||||||
|
"admin_server_menu_setting_access_log": "访问日志",
|
||||||
|
"admin_cluster_menu_setting_dns": "DNS设置",
|
||||||
|
"admin_dashboard_waf": "WAF",
|
||||||
|
"admin_menu_dns_issues": "问题修复",
|
||||||
|
"admin_menu_node_logs": "节点日志",
|
||||||
|
"admin_server_menu_stat_waf": "WAF",
|
||||||
|
"admin_server_menu_setting_domains": "域名",
|
||||||
|
"admin_settings_tab_api_nodes": "API节点",
|
||||||
|
"admin_cluster_menu_setting_webp": "WebP",
|
||||||
|
"admin_common_menu_setting_cache": "缓存设置",
|
||||||
|
"admin_common_system": "系统",
|
||||||
|
"admin_dashboard_dns": "DNS",
|
||||||
|
"admin_node_menu_install_remote": "远程安装(%d)",
|
||||||
|
"admin_menu_ns_plans": "套餐设置",
|
||||||
|
"admin_menu_server_access_logs": "访问日志",
|
||||||
|
"admin_server_menu_setting_uam": "5秒盾",
|
||||||
|
"admin_cluster_menu_setting_basic": "基础设置",
|
||||||
|
"admin_node_menu_setting_schedule": "智能调度",
|
||||||
|
"admin_settings_tab_client_browsers": "浏览器库",
|
||||||
|
"admin_menu_ns_domains": "域名管理",
|
||||||
|
"admin_menu_server_metrics": "统计指标",
|
||||||
|
"admin_server_menu_setting_rewrite_rules": "重写规则",
|
||||||
|
"admin_server_menu_setting_waf": "WAF",
|
||||||
|
"admin_settings_tab_login": "登录设置",
|
||||||
|
"admin_cluster_menu_setting_notification": "消息通知",
|
||||||
|
"admin_db_node_tab_nodes": "数据库节点",
|
||||||
|
"admin_menu_finance_bills": "费用账单",
|
||||||
|
"admin_menu_ns_domain_batch_operations": "批量操作",
|
||||||
|
"admin_menu_finance_accounts": "用户账户",
|
||||||
|
"admin_server_menu_setting_tcp": "TCP",
|
||||||
|
"admin_settings_tab_profile": "个人资料",
|
||||||
|
"admin_settings_tab_backup": "备份",
|
||||||
|
"admin_cluster_menu_setting_pages": "自定义页面",
|
||||||
|
"admin_menu_admins": "系统用户",
|
||||||
|
"admin_menu_ns_settings": "全局配置",
|
||||||
|
"admin_menu_node_ip_list": "节点IP",
|
||||||
|
"admin_menu_ns_access_logs": "访问日志",
|
||||||
|
"admin_node_menu_create_single_node": "单个创建",
|
||||||
|
"admin_server_menu_setting_cache": "缓存",
|
||||||
|
"admin_menu_dns_clusters": "集群列表",
|
||||||
|
"admin_server_menu_setting_redirects": "URL跳转",
|
||||||
|
"admin_menu_tickets": "工单系统",
|
||||||
|
"admin_menu_server_certs": "证书管理",
|
||||||
|
"admin_node_menu_setting_system": "系统设置",
|
||||||
|
"admin_server_menu_setting_stat": "统计",
|
||||||
|
"admin_server_menu_setting_scripts": "边缘脚本",
|
||||||
|
"admin_common_menu_setting_cache_policy": "缓存策略",
|
||||||
|
"admin_menu_users": "用户设置",
|
||||||
|
"admin_server_tab_stat": "统计",
|
||||||
|
"admin_server_menu_setting_http": "HTTP",
|
||||||
|
"admin_server_menu_setting_client_ip": "访客IP地址",
|
||||||
|
"admin_settings_tab_database": "数据库",
|
||||||
|
"admin_settings_tab_user_ui": "用户界面设置",
|
||||||
|
"admin_menu_server_scripts": "脚本库",
|
||||||
|
"admin_menu_ns": "智能DNS",
|
||||||
|
"admin_server_menu_stat_providers": "运营商",
|
||||||
|
"admin_menu_ns_domain_groups": "域名分组",
|
||||||
|
"admin_menu_finance_packages": "流量包",
|
||||||
|
"admin_node_menu_setting_basic": "基础设置",
|
||||||
|
"admin_ns_cluster_tab_delete": "删除集群",
|
||||||
|
"admin_server_menu_setting_delete": "删除",
|
||||||
|
"admin_server_menu_setting_compress": "内容压缩",
|
||||||
|
"admin_cluster_menu_setting_ddos_protection": "DDoS防护",
|
||||||
|
"admin_server_menu_setting_request_limit": "请求限制",
|
||||||
|
"admin_server_tab_access_logs": "日志",
|
||||||
|
"admin_settings_tab_transfer": "迁移",
|
||||||
|
"admin_cluster_menu_setting_metrics": "统计指标",
|
||||||
|
"admin_menu_setting_basic_settings": "基础设置",
|
||||||
|
"admin_server_menu_setting_udp": "UDP",
|
||||||
|
"admin_settings_tab_admin_ui": "管理界面设置",
|
||||||
|
"admin_cluster_menu_setting_toa": "TOA设置",
|
||||||
|
"admin_common_menu_setting_ddos_protection": "DDoS防护",
|
||||||
|
"admin_menu_dns_providers": "DNS服务商",
|
||||||
|
"admin_menu_server_access_log_policies": "日志策略",
|
||||||
|
"admin_node_ungrouped_label": "未分组",
|
||||||
|
"admin_server_menu_stat_regions": "地域分布",
|
||||||
|
"admin_settings_tab_monitor_nodes": "监控节点",
|
||||||
|
"admin_cluster_menu_tab_cluster_dashboard": "集群看板",
|
||||||
|
"admin_menu_server_cache_policies": "缓存策略",
|
||||||
|
"admin_menu_settings": "系统设置",
|
||||||
|
"admin_menu_logs": "日志审计",
|
||||||
|
"admin_menu_nodes": "边缘节点",
|
||||||
|
"admin_common_menu_setting_dns": "DNS设置",
|
||||||
|
"admin_menu_plan_user_plans": "已购套餐",
|
||||||
|
"admin_node_menu_setting_dns": "DNS设置",
|
||||||
|
"admin_cluster_menu_tab_cluster_delete": "删除集群",
|
||||||
|
"admin_cluster_menu_setting_cache_policy": "缓存策略",
|
||||||
|
"admin_menu_finance_fee": "计费设置",
|
||||||
|
"admin_node_menu_setting_cache": "缓存设置",
|
||||||
|
"admin_server_menu_setting_locations": "路由规则",
|
||||||
|
"admin_cluster_menu_setting_http3": "HTTP/3",
|
||||||
|
"admin_menu_node_regions": "区域设置",
|
||||||
|
"admin_menu_ns_clusters": "集群管理",
|
||||||
|
"admin_menu_dns": "域名解析",
|
||||||
|
"admin_node_menu_install_auto_register": "自动注册",
|
||||||
|
"admin_server_menu_setting_origins": "源站",
|
||||||
|
"admin_cluster_menu_setting_system_service": "系统服务",
|
||||||
|
"admin_dashboard_overview": "概况",
|
||||||
|
"admin_server_tab_dashboard": "看板",
|
||||||
|
"admin_common_menu_setting_health_check": "健康检查",
|
||||||
|
"admin_common_menu_setting_basic": "基础设置",
|
||||||
|
"admin_dashboard_user": "用户",
|
||||||
|
"admin_menu_server_purge_fetch_caches": "刷新预热",
|
||||||
|
"admin_menu_server_groups": "网站分组",
|
||||||
|
"admin_server_menu_setting_traffic_limit": "流量限制",
|
||||||
|
"admin_settings_tab_admin_security_settings": "安全设置",
|
||||||
|
"admin_cluster_menu_setting_waf_actions": "WAF动作",
|
||||||
|
"admin_cluster_menu_setting_cc": "CC防护",
|
||||||
|
"admin_menu_finance_logs": "收支明细",
|
||||||
|
"admin_menu_server_waf_policies": "WAF策略",
|
||||||
|
"admin_menu_admin_recipients": "通知媒介",
|
||||||
|
"admin_node_menu_setting_ddos_protection": "DDoS防护",
|
||||||
|
"admin_server_menu_setting_fastcgi": "Fastcgi",
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
1
pkg/langs/protos/zh-cn/README.md
Normal file
1
pkg/langs/protos/zh-cn/README.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
After change the messages, remember to run 'langs generate' to generate Go codes.
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
26
pkg/langs/protos/zh-cn/admin_cluster_menu.json
Normal file
26
pkg/langs/protos/zh-cn/admin_cluster_menu.json
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"setting_basic": "${lang.admin_common_menu_setting_basic}",
|
||||||
|
"setting_dns": "${lang.admin_common_menu_setting_dns}",
|
||||||
|
"setting_health_check": "${lang.admin_common_menu_setting_health_check}",
|
||||||
|
"setting_service_global": "网站设置",
|
||||||
|
"setting_cache_policy": "${lang.admin_common_menu_setting_cache_policy}",
|
||||||
|
"setting_waf_policy": "${lang.admin_common_menu_setting_waf_policy}",
|
||||||
|
"setting_waf_actions": "WAF动作",
|
||||||
|
"setting_webp": "${lang.admin_common_menu_setting_webp}",
|
||||||
|
"setting_metrics": "${lang.admin_common_menu_setting_metrics}",
|
||||||
|
"setting_ddos_protection": "${lang.admin_common_menu_setting_ddos_protection}",
|
||||||
|
"setting_uam": "5秒盾",
|
||||||
|
"setting_cc": "CC防护",
|
||||||
|
"setting_pages": "自定义页面",
|
||||||
|
"setting_http3": "HTTP/3",
|
||||||
|
"setting_schedule": "智能调度",
|
||||||
|
"setting_thresholds": "阈值设置",
|
||||||
|
"setting_notification": "消息通知",
|
||||||
|
"setting_system_service": "系统服务",
|
||||||
|
"setting_toa": "TOA设置",
|
||||||
|
|
||||||
|
"tab_cluster_dashboard": "集群看板",
|
||||||
|
"tab_cluster_nodes": "节点列表",
|
||||||
|
"tab_cluster_settings": "集群设置",
|
||||||
|
"tab_cluster_delete": "删除集群"
|
||||||
|
}
|
||||||
@@ -1,3 +1,12 @@
|
|||||||
{
|
{
|
||||||
|
"menu_setting_basic": "基础设置",
|
||||||
|
"menu_setting_dns": "DNS设置",
|
||||||
|
"menu_setting_health_check": "健康检查",
|
||||||
|
"menu_setting_cache_policy": "缓存策略",
|
||||||
|
"menu_setting_waf_policy": "WAF策略",
|
||||||
|
"menu_setting_webp": "WebP",
|
||||||
|
"menu_setting_metrics": "统计指标",
|
||||||
|
"menu_setting_ddos_protection": "DDoS防护",
|
||||||
|
"menu_setting_cache": "缓存设置",
|
||||||
|
"system": "系统"
|
||||||
}
|
}
|
||||||
3
pkg/langs/protos/zh-cn/admin_db_node.json
Normal file
3
pkg/langs/protos/zh-cn/admin_db_node.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"tab_nodes": "数据库节点"
|
||||||
|
}
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
{
|
{
|
||||||
|
"ungrouped_label": "未分组"
|
||||||
}
|
}
|
||||||
18
pkg/langs/protos/zh-cn/admin_node_menu.json
Normal file
18
pkg/langs/protos/zh-cn/admin_node_menu.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"create_single_node": "单个创建",
|
||||||
|
"create_multiple_nodes": "批量创建",
|
||||||
|
"install_manually": "手动安装",
|
||||||
|
"install_auto_register": "自动注册",
|
||||||
|
"install_remote": "远程安装(%d)", // 参数:节点数量
|
||||||
|
"install_remote_upgrade": "远程升级(%d)", // 参数:节点数量,
|
||||||
|
|
||||||
|
"setting_basic": "${lang.admin_common_menu_setting_basic}",
|
||||||
|
"setting_dns": "${lang.admin_common_menu_setting_dns}",
|
||||||
|
"setting_cache": "${lang.admin_common_menu_setting_cache}",
|
||||||
|
"setting_ddos_protection": "${lang.admin_common_menu_setting_ddos_protection}",
|
||||||
|
"setting_ssh": "SSH设置",
|
||||||
|
"setting_system": "系统设置",
|
||||||
|
|
||||||
|
"setting_schedule": "智能调度",
|
||||||
|
"setting_thresholds": "阈值设置"
|
||||||
|
}
|
||||||
5
pkg/langs/protos/zh-cn/admin_ns_cluster.json
Normal file
5
pkg/langs/protos/zh-cn/admin_ns_cluster.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"tab_nodes": "节点列表",
|
||||||
|
"tab_setting": "集群设置",
|
||||||
|
"tab_delete": "删除集群"
|
||||||
|
}
|
||||||
@@ -1,3 +1,57 @@
|
|||||||
{
|
{
|
||||||
|
"tab_dashboard": "看板",
|
||||||
|
"tab_stat": "统计",
|
||||||
|
"tab_access_logs": "日志",
|
||||||
|
"tab_settings": "设置",
|
||||||
|
"tab_delete": "删除",
|
||||||
|
|
||||||
|
"menu_dashboard": "看板",
|
||||||
|
|
||||||
|
"menu_accesslog_realtime": "实时",
|
||||||
|
"menu_accesslog_today": "今天",
|
||||||
|
"menu_accesslog_history": "历史",
|
||||||
|
|
||||||
|
"menu_stat_traffic": "流量统计",
|
||||||
|
"menu_stat_regions": "地域分布",
|
||||||
|
"menu_stat_providers": "运营商",
|
||||||
|
"menu_stat_clients": "终端",
|
||||||
|
"menu_stat_waf": "WAF",
|
||||||
|
|
||||||
|
"menu_setting_basic": "基本信息",
|
||||||
|
"menu_setting_dns": "DNS",
|
||||||
|
"menu_setting_domains": "域名",
|
||||||
|
"menu_setting_http": "HTTP",
|
||||||
|
"menu_setting_https": "HTTPS",
|
||||||
|
"menu_setting_origins": "源站",
|
||||||
|
"menu_setting_redirects": "URL跳转",
|
||||||
|
"menu_setting_locations": "路由规则",
|
||||||
|
"menu_setting_rewrite_rules": "重写规则",
|
||||||
|
"menu_setting_waf": "WAF",
|
||||||
|
"menu_setting_cache": "缓存",
|
||||||
|
"menu_setting_auth": "访问鉴权",
|
||||||
|
"menu_setting_referers": "防盗链",
|
||||||
|
"menu_setting_user_agents": "UA名单",
|
||||||
|
"menu_setting_charset": "字符编码",
|
||||||
|
"menu_setting_access_log": "访问日志",
|
||||||
|
"menu_setting_stat": "统计",
|
||||||
|
"menu_setting_compress": "内容压缩",
|
||||||
|
"menu_setting_pages": "自定义页面",
|
||||||
|
"menu_setting_http_headers": "HTTP Header", // TODO 中文应该改成"HTTP报头"?
|
||||||
|
"menu_setting_websocket": "Websocket",
|
||||||
|
"menu_setting_webp": "WebP",
|
||||||
|
"menu_setting_root": "静态分发",
|
||||||
|
"menu_setting_fastcgi": "Fastcgi",
|
||||||
|
"menu_setting_client_ip": "访客IP地址",
|
||||||
|
"menu_setting_request_limit": "请求限制",
|
||||||
|
"menu_setting_others": "其他设置",
|
||||||
|
"menu_setting_tcp": "TCP",
|
||||||
|
"menu_setting_tls": "TLS",
|
||||||
|
"menu_setting_unix": "Unix",
|
||||||
|
"menu_setting_udp": "UDP",
|
||||||
|
"menu_setting_delete": "删除",
|
||||||
|
|
||||||
|
"menu_setting_uam": "5秒盾",
|
||||||
|
"menu_setting_cc": "CC防护",
|
||||||
|
"menu_setting_traffic_limit": "流量限制",
|
||||||
|
"menu_setting_scripts": "边缘脚本"
|
||||||
}
|
}
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
20
pkg/langs/protos/zh-cn/admin_settings.json
Normal file
20
pkg/langs/protos/zh-cn/admin_settings.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"tab_admin_server": "Web服务",
|
||||||
|
"tab_admin_ui": "管理界面设置",
|
||||||
|
"tab_user_ui": "用户界面设置",
|
||||||
|
"tab_admin_security_settings": "安全设置",
|
||||||
|
"tab_updates": "检查更新",
|
||||||
|
"tab_profile": "个人资料",
|
||||||
|
"tab_login": "登录设置",
|
||||||
|
"tab_database": "数据库",
|
||||||
|
"tab_api_nodes": "API节点",
|
||||||
|
"tab_user_nodes": "用户节点",
|
||||||
|
"tab_monitor_nodes": "监控节点",
|
||||||
|
"tab_ip_library": "IP库",
|
||||||
|
"tab_client_operation_systems": "操作系统库",
|
||||||
|
"tab_client_browsers": "浏览器库",
|
||||||
|
"tab_authority": "商业版认证",
|
||||||
|
"tab_access_log_databases": "日志数据库",
|
||||||
|
"tab_transfer": "迁移",
|
||||||
|
"tab_backup": "备份"
|
||||||
|
}
|
||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
|
|
||||||
// Message 读取消息
|
// Message 读取消息
|
||||||
// Read message
|
// Read message
|
||||||
func Message(langCode string, messageCode MessageCode, args ...any) string {
|
func Message(langCode LangCode, messageCode MessageCode, args ...any) string {
|
||||||
return defaultManager.GetMessage(langCode, messageCode, args...)
|
return defaultManager.GetMessage(langCode, messageCode, args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,19 +51,18 @@ func ParseLangFromAction(action actions.ActionWrapper) (langCode string) {
|
|||||||
// Format string that contains message variables, such as ${lang.MESSAGE_CODE}
|
// Format string that contains message variables, such as ${lang.MESSAGE_CODE}
|
||||||
//
|
//
|
||||||
// 暂时不支持变量中加参数
|
// 暂时不支持变量中加参数
|
||||||
func Format(langCode string, varString string) string {
|
func Format(langCode LangCode, varString string) string {
|
||||||
return configutils.ParseVariables(varString, func(varName string) (value string) {
|
return configutils.ParseVariables(varString, func(varName string) (value string) {
|
||||||
const prefix = "lang."
|
if !strings.HasPrefix(varName, varPrefix) {
|
||||||
if !strings.HasPrefix(varName, prefix) {
|
|
||||||
return "${" + varName + "}" // keep origin variable
|
return "${" + varName + "}" // keep origin variable
|
||||||
}
|
}
|
||||||
return Message(langCode, varName[len(prefix):])
|
return Message(langCode, varName[len(varPrefix):])
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load 加载消息定义
|
// Load 加载消息定义
|
||||||
// Load message definitions from map
|
// Load message definitions from map
|
||||||
func Load(langCode string, messageMap map[string]string) {
|
func Load(langCode LangCode, messageMap map[string]string) {
|
||||||
lang, ok := defaultManager.GetLang(langCode)
|
lang, ok := defaultManager.GetLang(langCode)
|
||||||
if !ok {
|
if !ok {
|
||||||
lang = defaultManager.AddLang(langCode)
|
lang = defaultManager.AddLang(langCode)
|
||||||
|
|||||||
@@ -13,6 +13,26 @@ func TestMessage(t *testing.T) {
|
|||||||
t.Log(langs.Message("en-us", "user_description", "Lily"))
|
t.Log(langs.Message("en-us", "user_description", "Lily"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMessageVariable(t *testing.T) {
|
||||||
|
var lang = langs.DefaultManager().AddLang("en-us")
|
||||||
|
lang.Set("user", "Lily")
|
||||||
|
lang.Set("user2", "${lang.user}")
|
||||||
|
lang.Set("user_name", "Name: ${lang.user}")
|
||||||
|
lang.Set("user_name3", "Name: ${lang.user3}, ${user4}")
|
||||||
|
//lang.Set("user3", "")
|
||||||
|
|
||||||
|
err := lang.Compile()
|
||||||
|
if err != nil {
|
||||||
|
t.Log("ERROR(ignore):", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Log("user:", lang.Get("user"))
|
||||||
|
t.Log("user2:", lang.Get("user2"))
|
||||||
|
t.Log("user_name:", lang.Get("user_name"))
|
||||||
|
t.Log("user_name3:", lang.Get("user_name3"))
|
||||||
|
t.Log("user_name3_2:", lang.Get("name3"))
|
||||||
|
}
|
||||||
|
|
||||||
func TestMessageDefault(t *testing.T) {
|
func TestMessageDefault(t *testing.T) {
|
||||||
var lang = langs.DefaultManager().AddLang("zh-cn")
|
var lang = langs.DefaultManager().AddLang("zh-cn")
|
||||||
lang.Set("user_description", "user: %s")
|
lang.Set("user_description", "user: %s")
|
||||||
@@ -31,6 +51,6 @@ func TestFormat(t *testing.T) {
|
|||||||
lang.Set("book_name", "Go语言")
|
lang.Set("book_name", "Go语言")
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Log(langs.Format("en-US", "this is ${lang.book_name} book"))
|
t.Log(langs.Format("en-US", "this is ${lang:book_name} book"))
|
||||||
t.Log(langs.Format("zh-CN", "this is ${lang.book_name} book"))
|
t.Log(langs.Format("zh-CN", "this is ${lang:book_name} book"))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user