mirror of
https://github.com/TeaOSLab/EdgeCommon.git
synced 2025-11-03 04:10:25 +08:00
部分中文转换为多语言代号
This commit is contained in:
@@ -51,9 +51,10 @@ func runGenerate() {
|
||||
var dirRegexp = regexp.MustCompile(`^[a-z]+-[a-z]+$`)
|
||||
var jsonFileNameRegexp = regexp.MustCompile(`^([a-zA-Z0-9]+)(_([a-zA-Z0-9]+))+\.json$`)
|
||||
var messageCodeRegexp = regexp.MustCompile(`^[a-zA-Z0-9_]+$`)
|
||||
var jsonCommentRegexp = regexp.MustCompile(`//.+`)
|
||||
|
||||
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()
|
||||
|
||||
for _, file := range files {
|
||||
@@ -65,11 +66,11 @@ func runGenerate() {
|
||||
var langCode = dirName
|
||||
var isBaseLang = langCode == defaultLang
|
||||
|
||||
func() {
|
||||
var processOk = func() bool {
|
||||
jsonFiles, err := filepath.Glob(rootDir + "/" + dirName + "/*.json")
|
||||
if err != nil {
|
||||
fmt.Println("[ERROR]list json files failed: " + err.Error())
|
||||
return
|
||||
return false
|
||||
}
|
||||
|
||||
for _, jsonFile := range jsonFiles {
|
||||
@@ -82,21 +83,24 @@ func runGenerate() {
|
||||
data, err := os.ReadFile(jsonFile)
|
||||
if err != nil {
|
||||
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
|
||||
err = json.Unmarshal(data, &m)
|
||||
if err != nil {
|
||||
fmt.Println("[ERROR]decode json file '" + jsonFile + "' failed: " + err.Error())
|
||||
return
|
||||
return false
|
||||
}
|
||||
|
||||
var newM = map[string]string{}
|
||||
for code, value := range m {
|
||||
if !messageCodeRegexp.MatchString(code) {
|
||||
fmt.Println("[ERROR]invalid message code '" + code + "'")
|
||||
return
|
||||
return false
|
||||
}
|
||||
|
||||
var fullCode = module + "_" + code
|
||||
@@ -106,28 +110,42 @@ func runGenerate() {
|
||||
newM[fullCode] = value
|
||||
}
|
||||
|
||||
finalMap, ok := messageMaps[langCode]
|
||||
finalLang, ok := langMaps[langCode]
|
||||
if !ok {
|
||||
finalMap = map[string]string{}
|
||||
messageMaps[langCode] = finalMap
|
||||
finalLang = langs.NewLang(langCode)
|
||||
langMaps[langCode] = finalLang
|
||||
}
|
||||
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
|
||||
fmt.Println("checking message codes ...")
|
||||
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'
|
||||
defaultMessageMap = messageMap
|
||||
defaultMessageMap = messageLang.GetAll()
|
||||
continue
|
||||
}
|
||||
|
||||
for messageCode := range messageMap {
|
||||
for messageCode := range messageLang.GetAll() {
|
||||
if !lists.ContainsString(messageCodes, messageCode) {
|
||||
fmt.Println("[ERROR]message code '" + messageCode + "' in lang '" + langCode + "' not exist in default lang file ('" + defaultLang + "')")
|
||||
return
|
||||
@@ -150,11 +168,16 @@ import(
|
||||
const (
|
||||
`
|
||||
|
||||
for _, messageCode := range messageCodes {
|
||||
for index, messageCode := range messageCodes {
|
||||
// add comment to message code
|
||||
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 += `
|
||||
@@ -175,7 +198,7 @@ const (
|
||||
}
|
||||
|
||||
// generate messages_LANG.go
|
||||
for langCode, messageMap := range messageMaps {
|
||||
for langCode, messageLang := range langMaps {
|
||||
var langFile = strings.ReplaceAll("messages/messages_"+langCode+".go", "-", "_")
|
||||
|
||||
fmt.Println("generating '" + langFile + "' ...")
|
||||
@@ -192,7 +215,7 @@ func init() {
|
||||
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"
|
||||
}
|
||||
|
||||
@@ -214,8 +237,8 @@ func init() {
|
||||
}
|
||||
}
|
||||
|
||||
// generate language javascript files for EdgeAdmin
|
||||
for lang, messageMap := range messageMaps {
|
||||
// generate language javascript files for EdgeAdmin and EdgeUser (commercial versions)
|
||||
for lang, messageLang := range langMaps {
|
||||
if lang != defaultLang {
|
||||
// TODO merge messageMap with default message map
|
||||
}
|
||||
@@ -226,7 +249,26 @@ func init() {
|
||||
var targetDir = filepath.Dir(targetFile)
|
||||
dirStat, _ := os.Stat(targetDir)
|
||||
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 {
|
||||
fmt.Println("[ERROR]marshal message map failed: " + err.Error())
|
||||
return
|
||||
@@ -264,12 +306,16 @@ func upperWord(word string) string {
|
||||
|
||||
// special words
|
||||
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)
|
||||
case "ipv6":
|
||||
return "IPv6"
|
||||
case "ddos":
|
||||
return "DDoS"
|
||||
case "webp":
|
||||
return "WebP"
|
||||
}
|
||||
|
||||
return strings.ToUpper(word[:1]) + word[1:]
|
||||
|
||||
@@ -66,6 +66,18 @@ func ParseVariables(source string, replacer func(varName string) (value 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 从占位中分析变量
|
||||
func ParseVariablesFromHolders(holders VariableHolders, replacer func(varName string) (value string)) string {
|
||||
// no variables
|
||||
|
||||
@@ -7,68 +7,187 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
AdminDashboardDNS langs.MessageCode = "admin_dashboard_dns" // DNS
|
||||
AdminDashboardEvents langs.MessageCode = "admin_dashboard_events" // 事件
|
||||
AdminDashboardOverview langs.MessageCode = "admin_dashboard_overview" // 概况
|
||||
AdminDashboardUser langs.MessageCode = "admin_dashboard_user" // 用户
|
||||
AdminDashboardWAF langs.MessageCode = "admin_dashboard_waf" // WAF
|
||||
AdminMenuAdminRecipients langs.MessageCode = "admin_menu_admin_recipients" // 通知媒介
|
||||
AdminMenuAdmins langs.MessageCode = "admin_menu_admins" // 系统用户
|
||||
AdminMenuDashboard langs.MessageCode = "admin_menu_dashboard" // 数据看板
|
||||
AdminMenuDNS langs.MessageCode = "admin_menu_dns" // 域名解析
|
||||
AdminMenuDNSClusters langs.MessageCode = "admin_menu_dns_clusters" // 集群列表
|
||||
AdminMenuDNSIssues langs.MessageCode = "admin_menu_dns_issues" // 问题修复
|
||||
AdminMenuDNSProviders langs.MessageCode = "admin_menu_dns_providers" // DNS服务商
|
||||
AdminMenuFinance langs.MessageCode = "admin_menu_finance" // 财务管理
|
||||
AdminMenuFinanceAccounts langs.MessageCode = "admin_menu_finance_accounts" // 用户账户
|
||||
AdminMenuFinanceBills langs.MessageCode = "admin_menu_finance_bills" // 费用账单
|
||||
AdminMenuFinanceFee langs.MessageCode = "admin_menu_finance_fee" // 计费设置
|
||||
AdminMenuFinanceIncome langs.MessageCode = "admin_menu_finance_income" // 统计报表
|
||||
AdminMenuFinanceLogs langs.MessageCode = "admin_menu_finance_logs" // 收支明细
|
||||
AdminMenuFinanceOrders langs.MessageCode = "admin_menu_finance_orders" // 订单管理
|
||||
AdminMenuFinancePackages langs.MessageCode = "admin_menu_finance_packages" // 流量包
|
||||
AdminMenuLogs langs.MessageCode = "admin_menu_logs" // 日志审计
|
||||
AdminMenuNodeAntiDDoSProducts langs.MessageCode = "admin_menu_node_anti_ddos_products" // 高防IP
|
||||
AdminMenuNodeClusters langs.MessageCode = "admin_menu_node_clusters" // 集群列表
|
||||
AdminMenuNodeDistributedMonitors langs.MessageCode = "admin_menu_node_distributed_monitors" // 区域监控
|
||||
AdminMenuNodeIPList langs.MessageCode = "admin_menu_node_ip_list" // 节点IP
|
||||
AdminMenuNodeLogs langs.MessageCode = "admin_menu_node_logs" // 节点日志
|
||||
AdminMenuNodeRegions langs.MessageCode = "admin_menu_node_regions" // 区域设置
|
||||
AdminMenuNodeSSHGrants langs.MessageCode = "admin_menu_node_ssh_grants" // 节点SSH
|
||||
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" // 用户设置
|
||||
|
||||
AdminClusterMenuSettingBasic langs.MessageCode = "admin_cluster_menu_setting_basic" // 基础设置
|
||||
AdminClusterMenuSettingCachePolicy langs.MessageCode = "admin_cluster_menu_setting_cache_policy" // 缓存策略
|
||||
AdminClusterMenuSettingCC langs.MessageCode = "admin_cluster_menu_setting_cc" // CC防护
|
||||
AdminClusterMenuSettingDDoSProtection langs.MessageCode = "admin_cluster_menu_setting_ddos_protection" // DDoS防护
|
||||
AdminClusterMenuSettingDNS langs.MessageCode = "admin_cluster_menu_setting_dns" // DNS设置
|
||||
AdminClusterMenuSettingHealthCheck langs.MessageCode = "admin_cluster_menu_setting_health_check" // 健康检查
|
||||
AdminClusterMenuSettingHTTP3 langs.MessageCode = "admin_cluster_menu_setting_http3" // HTTP/3
|
||||
AdminClusterMenuSettingMetrics langs.MessageCode = "admin_cluster_menu_setting_metrics" // 统计指标
|
||||
AdminClusterMenuSettingNotification langs.MessageCode = "admin_cluster_menu_setting_notification" // 消息通知
|
||||
AdminClusterMenuSettingPages langs.MessageCode = "admin_cluster_menu_setting_pages" // 自定义页面
|
||||
AdminClusterMenuSettingSchedule langs.MessageCode = "admin_cluster_menu_setting_schedule" // 智能调度
|
||||
AdminClusterMenuSettingServiceGlobal langs.MessageCode = "admin_cluster_menu_setting_service_global" // 网站设置
|
||||
AdminClusterMenuSettingSystemService langs.MessageCode = "admin_cluster_menu_setting_system_service" // 系统服务
|
||||
AdminClusterMenuSettingThresholds langs.MessageCode = "admin_cluster_menu_setting_thresholds" // 阈值设置
|
||||
AdminClusterMenuSettingTOA langs.MessageCode = "admin_cluster_menu_setting_toa" // TOA设置
|
||||
AdminClusterMenuSettingUAM langs.MessageCode = "admin_cluster_menu_setting_uam" // 5秒盾
|
||||
AdminClusterMenuSettingWAFActions langs.MessageCode = "admin_cluster_menu_setting_waf_actions" // WAF动作
|
||||
AdminClusterMenuSettingWAFPolicy langs.MessageCode = "admin_cluster_menu_setting_waf_policy" // WAF策略
|
||||
AdminClusterMenuSettingWebP langs.MessageCode = "admin_cluster_menu_setting_webp" // WebP
|
||||
AdminClusterMenuTabClusterDashboard langs.MessageCode = "admin_cluster_menu_tab_cluster_dashboard" // 集群看板
|
||||
AdminClusterMenuTabClusterDelete langs.MessageCode = "admin_cluster_menu_tab_cluster_delete" // 删除集群
|
||||
AdminClusterMenuTabClusterNodes langs.MessageCode = "admin_cluster_menu_tab_cluster_nodes" // 节点列表
|
||||
AdminClusterMenuTabClusterSettings langs.MessageCode = "admin_cluster_menu_tab_cluster_settings" // 集群设置
|
||||
AdminCommonMenuSettingBasic langs.MessageCode = "admin_common_menu_setting_basic" // 基础设置
|
||||
AdminCommonMenuSettingCache langs.MessageCode = "admin_common_menu_setting_cache" // 缓存设置
|
||||
AdminCommonMenuSettingCachePolicy langs.MessageCode = "admin_common_menu_setting_cache_policy" // 缓存策略
|
||||
AdminCommonMenuSettingDDoSProtection langs.MessageCode = "admin_common_menu_setting_ddos_protection" // DDoS防护
|
||||
AdminCommonMenuSettingDNS langs.MessageCode = "admin_common_menu_setting_dns" // DNS设置
|
||||
AdminCommonMenuSettingHealthCheck langs.MessageCode = "admin_common_menu_setting_health_check" // 健康检查
|
||||
AdminCommonMenuSettingMetrics langs.MessageCode = "admin_common_menu_setting_metrics" // 统计指标
|
||||
AdminCommonMenuSettingWAFPolicy langs.MessageCode = "admin_common_menu_setting_waf_policy" // WAF策略
|
||||
AdminCommonMenuSettingWebP langs.MessageCode = "admin_common_menu_setting_webp" // WebP
|
||||
AdminCommonSystem langs.MessageCode = "admin_common_system" // 系统
|
||||
AdminDashboardDNS langs.MessageCode = "admin_dashboard_dns" // DNS
|
||||
AdminDashboardEvents langs.MessageCode = "admin_dashboard_events" // 事件
|
||||
AdminDashboardOverview langs.MessageCode = "admin_dashboard_overview" // 概况
|
||||
AdminDashboardUser langs.MessageCode = "admin_dashboard_user" // 用户
|
||||
AdminDashboardWAF langs.MessageCode = "admin_dashboard_waf" // WAF
|
||||
AdminDBNodeTabNodes langs.MessageCode = "admin_db_node_tab_nodes" // 数据库节点
|
||||
AdminMenuAdminRecipients langs.MessageCode = "admin_menu_admin_recipients" // 通知媒介
|
||||
AdminMenuAdmins langs.MessageCode = "admin_menu_admins" // 系统用户
|
||||
AdminMenuDashboard langs.MessageCode = "admin_menu_dashboard" // 数据看板
|
||||
AdminMenuDNS langs.MessageCode = "admin_menu_dns" // 域名解析
|
||||
AdminMenuDNSClusters langs.MessageCode = "admin_menu_dns_clusters" // 集群列表
|
||||
AdminMenuDNSIssues langs.MessageCode = "admin_menu_dns_issues" // 问题修复
|
||||
AdminMenuDNSProviders langs.MessageCode = "admin_menu_dns_providers" // DNS服务商
|
||||
AdminMenuFinance langs.MessageCode = "admin_menu_finance" // 财务管理
|
||||
AdminMenuFinanceAccounts langs.MessageCode = "admin_menu_finance_accounts" // 用户账户
|
||||
AdminMenuFinanceBills langs.MessageCode = "admin_menu_finance_bills" // 费用账单
|
||||
AdminMenuFinanceFee langs.MessageCode = "admin_menu_finance_fee" // 计费设置
|
||||
AdminMenuFinanceIncome langs.MessageCode = "admin_menu_finance_income" // 统计报表
|
||||
AdminMenuFinanceLogs langs.MessageCode = "admin_menu_finance_logs" // 收支明细
|
||||
AdminMenuFinanceOrders langs.MessageCode = "admin_menu_finance_orders" // 订单管理
|
||||
AdminMenuFinancePackages langs.MessageCode = "admin_menu_finance_packages" // 流量包
|
||||
AdminMenuLogs langs.MessageCode = "admin_menu_logs" // 日志审计
|
||||
AdminMenuNodeAntiDDoSProducts langs.MessageCode = "admin_menu_node_anti_ddos_products" // 高防IP
|
||||
AdminMenuNodeClusters langs.MessageCode = "admin_menu_node_clusters" // 集群列表
|
||||
AdminMenuNodeDistributedMonitors langs.MessageCode = "admin_menu_node_distributed_monitors" // 区域监控
|
||||
AdminMenuNodeIPList langs.MessageCode = "admin_menu_node_ip_list" // 节点IP
|
||||
AdminMenuNodeLogs langs.MessageCode = "admin_menu_node_logs" // 节点日志
|
||||
AdminMenuNodeRegions langs.MessageCode = "admin_menu_node_regions" // 区域设置
|
||||
AdminMenuNodeSSHGrants langs.MessageCode = "admin_menu_node_ssh_grants" // 节点SSH
|
||||
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
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/configutils"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const varPrefix = "lang."
|
||||
|
||||
type LangCode = string
|
||||
|
||||
type Lang struct {
|
||||
code string
|
||||
|
||||
@@ -30,3 +40,39 @@ func (this *Lang) Get(messageCode string) string {
|
||||
func (this *Lang) GetAll() map[string]string {
|
||||
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() {
|
||||
langs.Load("zh-cn", map[string]string{
|
||||
"admin_menu_finance_fee": "计费设置",
|
||||
"admin_menu_server_traffic_stats": "用量统计",
|
||||
"admin_menu_ns_node_logs": "运行日志",
|
||||
"admin_menu_servers": "网站列表",
|
||||
"admin_menu_finance_logs": "收支明细",
|
||||
"admin_menu_plan_user_plans": "已购套餐",
|
||||
"admin_menu_server_ip_lists": "IP名单",
|
||||
"admin_menu_users": "用户设置",
|
||||
"admin_menu_ns_access_logs": "访问日志",
|
||||
"admin_menu_server_purge_fetch_caches": "刷新预热",
|
||||
"admin_menu_node_distributed_monitors": "区域监控",
|
||||
"admin_menu_finance_packages": "流量包",
|
||||
"admin_menu_settings": "系统设置",
|
||||
"admin_menu_ns_plans": "套餐设置",
|
||||
"admin_dashboard_user": "用户",
|
||||
"admin_dashboard_waf": "WAF",
|
||||
"admin_menu_setting_advanced_settings": "高级设置",
|
||||
"admin_menu_server_global_settings": "通用设置",
|
||||
"admin_menu_node_logs": "节点日志",
|
||||
"admin_menu_ns_clusters": "集群管理",
|
||||
"admin_menu_server_cache_policies": "缓存策略",
|
||||
"admin_menu_ns_resolve_test": "解析测试",
|
||||
"admin_menu_finance_income": "统计报表",
|
||||
"admin_menu_finance_accounts": "用户账户",
|
||||
"admin_menu_server_certs": "证书管理",
|
||||
"admin_menu_dashboard": "数据看板",
|
||||
"admin_dashboard_events": "事件",
|
||||
"admin_menu_node_ip_list": "节点IP",
|
||||
"admin_dashboard_overview": "概况",
|
||||
"admin_menu_server_access_logs": "访问日志",
|
||||
"admin_menu_dns_providers": "DNS服务商",
|
||||
"admin_menu_admins": "系统用户",
|
||||
"admin_menu_setting_authority": "商业版本",
|
||||
"admin_menu_dns_issues": "问题修复",
|
||||
"admin_menu_server_metrics": "统计指标",
|
||||
"admin_menu_node_ssh_grants": "节点SSH",
|
||||
"admin_menu_server_waf_policies": "WAF策略",
|
||||
"admin_menu_ns_domains": "域名管理",
|
||||
"admin_menu_nodes": "边缘节点",
|
||||
"admin_dashboard_dns": "DNS",
|
||||
"admin_menu_logs": "日志审计",
|
||||
"admin_menu_ns_user_plans": "用户套餐",
|
||||
"admin_menu_ns_domain_groups": "域名分组",
|
||||
"admin_menu_tickets": "工单系统",
|
||||
"admin_menu_node_regions": "区域设置",
|
||||
"admin_menu_ns_domain_batch_operations": "批量操作",
|
||||
"admin_menu_plans": "套餐管理",
|
||||
"admin_menu_finance_bills": "费用账单",
|
||||
"admin_menu_ticket_category": "分类",
|
||||
"admin_menu_finance": "财务管理",
|
||||
"admin_menu_node_anti_ddos_products": "高防IP",
|
||||
"admin_menu_ns": "智能DNS",
|
||||
"admin_menu_dns": "域名解析",
|
||||
"admin_menu_server_groups": "网站分组",
|
||||
"admin_menu_server_scripts": "脚本库",
|
||||
"admin_menu_ns_settings": "全局配置",
|
||||
"admin_menu_ns_routes": "线路管理",
|
||||
"admin_menu_server_access_log_policies": "日志策略",
|
||||
"admin_menu_finance_orders": "订单管理",
|
||||
"admin_menu_dns_clusters": "集群列表",
|
||||
"admin_menu_admin_recipients": "通知媒介",
|
||||
"admin_menu_setting_basic_settings": "基础设置",
|
||||
"admin_menu_node_clusters": "集群列表",
|
||||
"admin_server_menu_setting_webp": "WebP",
|
||||
"admin_cluster_menu_setting_uam": "5秒盾",
|
||||
"admin_common_menu_setting_webp": "WebP",
|
||||
"admin_dashboard_events": "事件",
|
||||
"admin_server_menu_setting_unix": "Unix",
|
||||
"admin_server_menu_setting_root": "静态分发",
|
||||
"admin_server_menu_accesslog_realtime": "实时",
|
||||
"admin_server_menu_accesslog_history": "历史",
|
||||
"admin_settings_tab_access_log_databases": "日志数据库",
|
||||
"admin_menu_server_traffic_stats": "用量统计",
|
||||
"admin_menu_ticket_category": "分类",
|
||||
"admin_menu_server_ip_lists": "IP名单",
|
||||
"admin_menu_plans": "套餐管理",
|
||||
"admin_node_menu_install_remote_upgrade": "远程升级(%d)",
|
||||
"admin_server_menu_setting_auth": "访问鉴权",
|
||||
"admin_server_menu_setting_websocket": "Websocket",
|
||||
"admin_common_menu_setting_metrics": "统计指标",
|
||||
"admin_common_menu_setting_waf_policy": "WAF策略",
|
||||
"admin_menu_server_global_settings": "通用设置",
|
||||
"admin_menu_node_clusters": "集群列表",
|
||||
"admin_node_menu_install_manually": "手动安装",
|
||||
"admin_server_tab_settings": "设置",
|
||||
"admin_server_menu_setting_http_headers": "HTTP Header",
|
||||
"admin_cluster_menu_setting_service_global": "网站设置",
|
||||
"admin_cluster_menu_setting_thresholds": "阈值设置",
|
||||
"admin_node_menu_create_multiple_nodes": "批量创建",
|
||||
"admin_server_menu_setting_https": "HTTPS",
|
||||
"admin_server_menu_setting_others": "其他设置",
|
||||
"admin_server_tab_delete": "删除",
|
||||
"admin_server_menu_setting_pages": "自定义页面",
|
||||
"admin_settings_tab_client_operation_systems": "操作系统库",
|
||||
"admin_cluster_menu_tab_cluster_settings": "集群设置",
|
||||
"admin_cluster_menu_tab_cluster_nodes": "节点列表",
|
||||
"admin_node_menu_setting_thresholds": "阈值设置",
|
||||
"admin_server_menu_stat_traffic": "流量统计",
|
||||
"admin_server_menu_setting_user_agents": "UA名单",
|
||||
"admin_server_menu_setting_basic": "基本信息",
|
||||
"admin_settings_tab_updates": "检查更新",
|
||||
"admin_menu_node_anti_ddos_products": "高防IP",
|
||||
"admin_menu_setting_advanced_settings": "高级设置",
|
||||
"admin_menu_node_distributed_monitors": "区域监控",
|
||||
"admin_menu_ns_node_logs": "运行日志",
|
||||
"admin_menu_setting_authority": "商业版本",
|
||||
"admin_server_menu_setting_cc": "CC防护",
|
||||
"admin_server_menu_stat_clients": "终端",
|
||||
"admin_server_menu_accesslog_today": "今天",
|
||||
"admin_cluster_menu_setting_waf_policy": "WAF策略",
|
||||
"admin_menu_dashboard": "数据看板",
|
||||
"admin_menu_node_ssh_grants": "节点SSH",
|
||||
"admin_menu_servers": "网站列表",
|
||||
"admin_menu_ns_user_plans": "用户套餐",
|
||||
"admin_node_menu_setting_ssh": "SSH设置",
|
||||
"admin_server_menu_dashboard": "看板",
|
||||
"admin_server_menu_setting_dns": "DNS",
|
||||
"admin_settings_tab_authority": "商业版认证",
|
||||
"admin_settings_tab_user_nodes": "用户节点",
|
||||
"admin_cluster_menu_setting_health_check": "健康检查",
|
||||
"admin_menu_ns_resolve_test": "解析测试",
|
||||
"admin_menu_finance_orders": "订单管理",
|
||||
"admin_ns_cluster_tab_setting": "集群设置",
|
||||
"admin_server_menu_setting_referers": "防盗链",
|
||||
"admin_server_menu_setting_tls": "TLS",
|
||||
"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 读取消息
|
||||
// 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...)
|
||||
}
|
||||
|
||||
@@ -51,19 +51,18 @@ func ParseLangFromAction(action actions.ActionWrapper) (langCode string) {
|
||||
// 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) {
|
||||
const prefix = "lang."
|
||||
if !strings.HasPrefix(varName, prefix) {
|
||||
if !strings.HasPrefix(varName, varPrefix) {
|
||||
return "${" + varName + "}" // keep origin variable
|
||||
}
|
||||
return Message(langCode, varName[len(prefix):])
|
||||
return Message(langCode, varName[len(varPrefix):])
|
||||
})
|
||||
}
|
||||
|
||||
// Load 加载消息定义
|
||||
// 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)
|
||||
if !ok {
|
||||
lang = defaultManager.AddLang(langCode)
|
||||
|
||||
@@ -13,6 +13,26 @@ func TestMessage(t *testing.T) {
|
||||
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) {
|
||||
var lang = langs.DefaultManager().AddLang("zh-cn")
|
||||
lang.Set("user_description", "user: %s")
|
||||
@@ -31,6 +51,6 @@ func TestFormat(t *testing.T) {
|
||||
lang.Set("book_name", "Go语言")
|
||||
}
|
||||
|
||||
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("en-US", "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