新增i18n操作

This commit is contained in:
Liujian
2024-10-18 19:50:20 +08:00
parent 76172d49c3
commit ee703df2f3
11 changed files with 418 additions and 135 deletions
+2 -5
View File
@@ -7,13 +7,12 @@ go 1.21
require (
github.com/eolinker/ap-account v1.0.11
github.com/eolinker/eosc v0.17.3
github.com/eolinker/go-common v1.0.4
github.com/eolinker/go-common v1.1.0
github.com/gabriel-vasile/mimetype v1.4.4
github.com/getkin/kin-openapi v0.127.0
github.com/gin-gonic/gin v1.10.0
github.com/google/uuid v1.6.0
github.com/influxdata/influxdb-client-go/v2 v2.14.0
github.com/mitchellh/mapstructure v1.5.0
github.com/urfave/cli/v2 v2.27.2
golang.org/x/crypto v0.24.0
gopkg.in/yaml.v3 v3.0.1
@@ -77,6 +76,4 @@ require (
gorm.io/driver/mysql v1.5.2 // indirect
)
//replace github.com/eolinker/ap-account => ../../eolinker/ap-account
//
//replace github.com/eolinker/go-common => ../../eolinker/go-common
replace github.com/eolinker/ap-account => ../../eolinker/ap-account
+2 -6
View File
@@ -27,12 +27,10 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/r
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/eolinker/ap-account v1.0.11 h1:/TagC53BXu1mfdcIT16FoiSmbNJLL+YXaLpFgL/8AHw=
github.com/eolinker/ap-account v1.0.11/go.mod h1:5lsZwkQfnHO5YJ3Cu6X1PZwZ0gbmJBUcix0hxG8aEsY=
github.com/eolinker/eosc v0.17.3 h1:sr2yT+v/AsqEdciRaaZZj0zL9pTufR5RvDW6+65hraQ=
github.com/eolinker/eosc v0.17.3/go.mod h1:xgq816hpanlMXFtZw7Ztdctb1eEk9UPHchY4NfFO6Cw=
github.com/eolinker/go-common v1.0.4 h1:F0akjnzJfIFOVmK30fD0SsCLU7DAKPXuY21MeyMmQ7w=
github.com/eolinker/go-common v1.0.4/go.mod h1:Kb/jENMN1mApnodvRgV4YwO9FJby1Jkt2EUjrBjvSX4=
github.com/eolinker/go-common v1.1.0 h1:n/XXK7yVRen3jhNG/SfZGXJA+KNnaYf0XTDfMeviaBw=
github.com/eolinker/go-common v1.1.0/go.mod h1:Kb/jENMN1mApnodvRgV4YwO9FJby1Jkt2EUjrBjvSX4=
github.com/gabriel-vasile/mimetype v1.4.4 h1:QjV6pZ7/XZ7ryI2KuyeEDE8wnh7fHP9YnQy+R0LnH8I=
github.com/gabriel-vasile/mimetype v1.4.4/go.mod h1:JwLei5XPtWdGiMFB5Pjle1oEeoSeEuJfJE+TtfvdB/s=
github.com/getkin/kin-openapi v0.127.0 h1:Mghqi3Dhryf3F8vR370nN67pAERW+3a95vomb3MAREY=
@@ -99,8 +97,6 @@ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+74 -76
View File
@@ -1,23 +1,21 @@
system:
- name: organization
cname: '组织管理'
i18n:
zh_CN: 组织管理
# cname: '组织管理'
value: 'organization'
children:
- name: member
cname: '成员'
# cname: '成员'
value: 'member'
children:
- name: view
cname: '查看'
# cname: '查看'
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/user/accounts"
- "GET:/api/v1/user/departments"
- name: manager
cname: '管理'
# cname: '管理'
value: 'manager'
apis:
- "POST:/api/v1/user/account"
@@ -39,14 +37,14 @@ system:
value: 'team'
children:
- name: view
cname: '查看'
# cname: '查看'
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/manager/teams"
- "GET:/api/v1/manager/team"
- name: manager
cname: '管理'
# cname: '管理'
value: 'manager'
apis:
- "POST:/api/v1/manager/team"
@@ -55,7 +53,7 @@ system:
dependents:
- system.organization.team.view
- name: role
cname: '角色'
# cname: '角色'
value: 'role'
children:
- name: view system role
@@ -73,21 +71,21 @@ system:
- "GET:/api/v1/team/roles"
- "GET:/api/v1/team/role"
- name: System Settings
cname: '系统设置'
# cname: '系统设置'
value: 'settings'
children:
- name: service classification
cname: '服务分类'
# cname: '服务分类'
value: 'service_classification'
children:
- name: view
cname: '查看'
# cname: '查看'
value: 'view'
guest_allow: true
# apis:
# - "GET:/api/v1/catalogues"
- name: manager
cname: '管理'
# cname: '管理'
value: 'manager'
apis:
- "POST:/api/v1/catalogue"
@@ -97,24 +95,24 @@ system:
dependents:
- system.settings.service_classification.view
- name: General
cname: 常规设置
# cname: 常规设置
value: 'general'
children:
- name: view
cname: 查看
# cname: 查看
value: 'view'
guest_allow: true
apis:
# - "GET:/api/v1/setting"
- name: manager
cname: 管理
# cname: 管理
value: 'manager'
apis:
# - "PUT:/api/v1/setting"
dependents:
- system.settings.general.view
- name: Devops
cname: 运维
# cname: 运维
value: 'devops'
children:
- name: cluster
@@ -128,7 +126,7 @@ system:
apis:
- "GET:/api/v1/cluster/nodes"
- name: manager
cname: 管理
# cname: 管理
value: 'manager'
apis:
- "PUT:/api/v1/cluster/reset"
@@ -138,14 +136,14 @@ system:
value: 'ssl_certificate'
children:
- name: view
cname: 查看
# cname: 查看
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/certificates"
- "GET:/api/v1/certificate"
- name: manager
cname: 管理
# cname: 管理
value: 'manager'
apis:
- "POST:/api/v1/certificate"
@@ -154,27 +152,27 @@ system:
dependents:
- system.devops.ssl_certificate.view
- name: Data Source
cname: '数据源'
# cname: '数据源'
value: 'data_source'
children:
- name: view
cname: '查看'
# cname: '查看'
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/monitor/config"
- name: manager
cname: '管理'
# cname: '管理'
value: 'manager'
apis:
- "POST:/api/v1/monitor/config"
- "PUT:/api/v1/monitor/config"
- name: log configuration
cname: 日志
# cname: 日志
value: 'log_configuration'
children:
- name: view
cname: 查看
# cname: 查看
value: 'view'
guest_allow: true
apis:
@@ -182,7 +180,7 @@ system:
- "GET:/api/v1/dynamic/{name}/list"
- "GET:/api/v1/dynamic/{name}/render"
- name: manager
cname: 管理
# cname: 管理
value: 'manager'
apis:
- "POST:/api/v1/dynamic/{name}"
@@ -192,19 +190,19 @@ system:
- "PUT:/api/v1/dynamic/{name}/offline"
dependents:
- system.devops.log_configuration.view
- name: ai_provider
cname: AI 模型供应商
- name: ai provider
# cname: AI 模型供应商
value: 'ai_provider'
children:
- name: view
cname: 查看
# cname: 查看
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/ai/providers"
- "GET:/api/v1/ai/provider/config"
- name: manager
cname: 管理
# cname: 管理
value: 'manager'
apis:
- "PUT:/api/v1/ai/provider/config"
@@ -213,15 +211,15 @@ system:
- system.devops.ai_provider.view
- name: dashboard
cname: 仪表盘
# cname: 仪表盘
value: 'dashboard'
children:
- name: run view
cname: 运行视图
# cname: 运行视图
value: 'run_view'
children:
- name: view
cname: 查看
# cname: 查看
value: 'view'
guest_allow: true
apis:
@@ -230,45 +228,45 @@ system:
- "GET:/api/v1/monitor/overview/top10"
- "GET:/api/v1/monitor/overview/summary"
- name: workspace
cname: 工作空间
# cname: 工作空间
value: 'workspace'
children:
- name: application
cname: 应用
# cname: 应用
value: 'application'
children:
- name: view all
cname: 查看所有应用
- name: view all application
# cname: 查看所有应用
value: 'view_all'
guest_allow: true
apis:
- "GET:/api/v1/apps"
- name: service
cname: 服务
# cname: 服务
value: 'service'
children:
- name: view all
cname: 查看所有服务
- name: view all service
# cname: 查看所有服务
value: 'view_all'
guest_allow: true
apis:
- "GET:/api/v1/services"
- name: team
cname: 团队
# cname: 团队
value: 'team'
children:
- name: view all
cname: 查看所有团队
- name: view all team
# cname: 查看所有团队
value: 'view_all'
guest_allow: true
apis:
- "GET:/api/v1/manager/teams"
- name: api market
cname: API市场
# cname: API市场
value: 'api_market'
children:
- name: view
cname: 查看
# cname: 查看
value: 'view'
guest_allow: true
apis:
@@ -276,15 +274,15 @@ system:
- "GET:/api/v1/catalogue/service"
team:
- name: service
cname: 服务
# cname: 服务
value: 'service'
children:
- name: router
cname: 路由
# cname: 路由
value: 'router'
children:
- name: view
cname: 查看
# cname: 查看
value: 'view'
guest_allow: true
apis:
@@ -293,24 +291,24 @@ team:
- "GET:/api/v1/service/router/detail/simple"
- "GET:/api/v1/service/router/define"
- name: manager
cname: 管理
# cname: 管理
value: 'manager'
apis:
- "POST:/api/v1/service/router"
- "PUT:/api/v1/service/router"
- "DELETE:/api/v1/service/router"
- name: api_doc
- name: api doc
cname: API文档
value: 'api_doc'
children:
- name: view
cname: 查看
# cname: 查看
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/service/api_doc"
- name: manager
cname: 管理
# cname: 管理
value: 'manager'
apis:
- "PUT:/api/v1/service/api_doc"
@@ -320,22 +318,22 @@ team:
value: 'upstream'
children:
- name: view
cname: 查看
# cname: 查看
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/service/upstream"
- name: manager
cname: 管理
# cname: 管理
value: 'manager'
apis:
- "PUT:/api/v1/service/upstream"
- name: release
cname: 发布
# cname: 发布
value: 'release'
children:
- name: view
cname: 查看
# cname: 查看
value: 'view'
guest_allow: true
apis:
@@ -346,18 +344,18 @@ team:
- "GET:/api/v1/service/release/preview"
- "GET:/api/v1/service/publish/status"
- name: manager
cname: 管理
# cname: 管理
value: 'manager'
apis:
- "POST:/api/v1/service/publish/release/do"
# - "PUT:/api/v1/service/publish/execute"
- "DELETE:/api/v1/service/release"
- name: subscription management
cname: 订阅方管理
# cname: 订阅方管理
value: 'subscription'
children:
- name: view
cname: 查看
# cname: 查看
value: 'view'
guest_allow: true
apis:
@@ -365,18 +363,18 @@ team:
- "GET:/api/v1/service/approval/subscribe"
- "GET:/api/v1/service/subscribers"
- name: manager
cname: 管理
# cname: 管理
value: 'manager'
apis:
- "POST:/api/v1/service/approval/subscribe"
- "POST:/api/v1/service/subscriber"
- "DELETE:/api/v1/service/subscriber"
- name: service
cname: 服务管理
# cname: 服务管理
value: 'service'
children:
- name: manager
cname: 管理
# cname: 管理
value: 'manager'
apis:
- "PUT:/api/v1/service/info"
@@ -391,24 +389,24 @@ team:
value: 'subscription'
children:
- name: view
cname: 查看
# cname: 查看
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/application/subscriptions"
- name: manager
cname: 管理
# cname: 管理
value: 'manager'
apis:
- "POST:/api/v1/catalogue/service/subscribe"
- "POST:/api/v1/application/subscription/cancel"
- "POST:/api/v1/application/subscription/cancel_apply"
- name: authorization
cname: 访问授权
# cname: 访问授权
value: 'authorization'
children:
- name: view
cname: 查看
# cname: 查看
value: 'view'
guest_allow: true
apis:
@@ -416,58 +414,58 @@ team:
- "GET:/api/v1/app/authorizations"
- "GET:/api/v1/app/authorization/details"
- name: manager
cname: 管理
# cname: 管理
value: 'manager'
apis:
- "POST:/api/v1/app/authorization"
- "PUT:/api/v1/app/authorization"
- "DELETE:/api/v1/app/authorization"
- name: application
cname: 应用
# cname: 应用
value: 'application'
children:
- name: manager
cname: 管理
# cname: 管理
value: 'manager'
apis:
- "PUT:/api/v1/app/info"
- "POST:/api/v1/team/app"
- "DELETE:/api/v1/app"
- name: team
cname: 团队
# cname: 团队
value: 'team'
children:
- name: member
cname: 成员
# cname: 成员
value: 'member'
children:
- name: view
cname: 查看
# cname: 查看
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/team/members"
- "GET:/api/v1/team/members/toadd"
- name: manager
cname: 管理
# cname: 管理
value: 'manager'
apis:
- "POST:/api/v1/team/member"
- "DELETE:/api/v1/team/member"
- "PUT:/api/v1/team/member/role"
- name: team
cname: 团队管理
# cname: 团队管理
value: 'team'
children:
- name: view
cname: '查看'
# cname: '查看'
value: 'view'
guest_allow: true
apis:
- "GET:/api/v1/manager/teams"
- "GET:/api/v1/manager/team"
- name: manager
cname: '管理'
# cname: '管理'
value: 'manager'
apis:
- "POST:/api/v1/manager/team"
+55
View File
@@ -1,12 +1,15 @@
package access
import (
"encoding/json"
"fmt"
"os"
"sort"
"strings"
"testing"
yaml "gopkg.in/yaml.v3"
"github.com/eolinker/go-common/access"
)
@@ -55,3 +58,55 @@ func printAccesses(group string, builder *strings.Builder) {
}
return
}
func TestPrintName(t *testing.T) {
result := make(map[string]string)
data, err := os.ReadFile("access.yaml")
if err != nil {
t.Fatal(err)
}
tmp := make(map[string]interface{})
err = yaml.Unmarshal(data, &tmp)
if err != nil {
t.Fatal(err)
}
recursionReadKey("name", tmp, result)
data, err = os.ReadFile("role.yaml")
if err != nil {
t.Fatal(err)
}
tmp = make(map[string]interface{})
err = yaml.Unmarshal(data, &tmp)
if err != nil {
t.Fatal(err)
}
recursionReadKey("name", tmp, result)
r, err := json.MarshalIndent(result, "", " ")
if err != nil {
t.Fatal(err)
}
fmt.Println(string(r))
}
// 递归读取文件中name字段
func recursionReadKey(key string, data map[string]interface{}, result map[string]string) {
for k, v := range data {
switch t := v.(type) {
case string:
if k == key {
result[strings.ToLower(t)] = ""
}
case map[string]interface{}:
recursionReadKey(key, t, result)
case []interface{}:
for _, n := range t {
switch tt := n.(type) {
case map[string]interface{}:
recursionReadKey(key, tt, result)
}
}
}
}
}
+37 -28
View File
@@ -1,23 +1,25 @@
system:
system.api_market.service_classification.manager:
- POST:/api/v1/catalogue
- PUT:/api/v1/catalogue
- DELETE:/api/v1/catalogue
- PUT:/api/v1/catalogue/sort
system.api_market.service_classification.view:
- GET:/api/v1/catalogues
system.dashboard.run_view.view:
- GET:/api/v1/monitor/overview/invoke
- GET:/api/v1/monitor/overview/message
- GET:/api/v1/monitor/overview/top10
- GET:/api/v1/monitor/overview/summary
system.devops.ai_provider.manager:
- PUT:/api/v1/ai/provider/config
- PUT:/api/v1/ai/provider/default-llm
system.devops.ai_provider.view:
- GET:/api/v1/ai/providers
- GET:/api/v1/ai/provider
- POST:/api/v1/ai/provider
- PUT:/api/v1/ai/provider
system.devops.ai_provider.manager:
- DELETE:/api/v1/ai/provider
- GET:/api/v1/ai/provider/config
system.devops.cluster.manager:
- PUT:/api/v1/cluster/reset
- POST:/api/v1/cluster/check
system.devops.cluster.view:
- GET:/api/v1/cluster/nodes
system.devops.data_source.manager:
- POST:/api/v1/monitor/config
- PUT:/api/v1/monitor/config
system.devops.data_source.view:
- GET:/api/v1/monitor/config
system.devops.log_configuration.manager:
- POST:/api/v1/dynamic/{name}
- PUT:/api/v1/dynamic/{name}/config
@@ -64,6 +66,14 @@ system:
system.organization.team.view:
- GET:/api/v1/manager/teams
- GET:/api/v1/manager/team
system.settings.general.manager:
system.settings.general.view:
system.settings.service_classification.manager:
- POST:/api/v1/catalogue
- PUT:/api/v1/catalogue
- DELETE:/api/v1/catalogue
- PUT:/api/v1/catalogue/sort
system.settings.service_classification.view:
system.workspace.api_market.view:
- GET:/api/v1/catalogue/services
- GET:/api/v1/catalogue/service
@@ -72,10 +82,9 @@ system:
system.workspace.service.view_all:
- GET:/api/v1/services
system.workspace.team.view_all:
- GET:/api/v1/teams
- GET:/api/v1/manager/teams
team:
team.application.application.manager:
- GET:/api/v1/app/info
- PUT:/api/v1/app/info
- POST:/api/v1/team/app
- DELETE:/api/v1/app
@@ -93,20 +102,13 @@ team:
- POST:/api/v1/application/subscription/cancel_apply
team.application.subscription.view:
- GET:/api/v1/application/subscriptions
team.service.api.manager:
- POST:/api/v1/service/api
- PUT:/api/v1/service/api
- DELETE:/api/v1/service/api
- POST:/api/v1/service/api/copy
team.service.api.view:
- GET:/api/v1/service/apis
- GET:/api/v1/service/api/detail
- GET:/api/v1/service/api/detail/simple
- GET:/api/v1/service/api/define
- GET:/api/v1/service/apis/simple
team.service.api_doc.manager:
- PUT:/api/v1/service/api_doc
- POST:/api/v1/service/api_doc/upload
team.service.api_doc.view:
- GET:/api/v1/service/api_doc
team.service.release.manager:
- POST:/api/v1/service/publish/release/do
- PUT:/api/v1/service/publish/execute
- DELETE:/api/v1/service/release
team.service.release.view:
- GET:/api/v1/service/releases
@@ -115,8 +117,16 @@ team:
- GET:/api/v1/service/publish/check
- GET:/api/v1/service/release/preview
- GET:/api/v1/service/publish/status
team.service.router.manager:
- POST:/api/v1/service/router
- PUT:/api/v1/service/router
- DELETE:/api/v1/service/router
team.service.router.view:
- GET:/api/v1/service/routers
- GET:/api/v1/service/router/detail
- GET:/api/v1/service/router/detail/simple
- GET:/api/v1/service/router/define
team.service.service.manager:
- GET:/api/v1/service/info
- PUT:/api/v1/service/info
- POST:/api/v1/team/service
- DELETE:/api/v1/team/service
@@ -138,7 +148,6 @@ team:
- PUT:/api/v1/team/member/role
team.team.member.view:
- GET:/api/v1/team/members
- GET:/api/v1/team/members/simple
- GET:/api/v1/team/members/toadd
team.team.team.manager:
- POST:/api/v1/manager/team
+20 -20
View File
@@ -1,6 +1,6 @@
system:
- name: supper_admin
cname: 超级管理员
- name: supper admin
value: supper_admin
permits:
- system.dashboard.run_view.view
- system.devops.ai_provider.manager
@@ -28,8 +28,8 @@ system:
- system.workspace.service.view_all
- system.workspace.team.view_all
supper: true
- name: team_admin
cname: 团队管理员
- name: team admin
value: team_admin
permits:
- system.organization.role.view_team_role
- system.organization.team.manager
@@ -38,8 +38,8 @@ system:
- system.workspace.application.view_all
- system.workspace.service.view_all
- system.workspace.team.view_all
- name: devops_admin
cname: 运维管理员
- name: devops admin
value: devops_admin
permits:
- system.dashboard.run_view.view
- system.devops.ai_provider.manager
@@ -60,13 +60,13 @@ system:
- system.settings.general.view
- system.settings.service_classification.manager
- system.settings.service_classification.view
- name: member
cname: 普通成员
- name: general member
value: member
permits:
- system.workspace.api_market.view
default: true
- name: guest
cname: 只读成员
value: guest
permits:
- system.settings.service_classification.view
- system.devops.cluster.view
@@ -83,8 +83,8 @@ system:
- system.workspace.team.view_all
- system.dashboard.run_view.view
team:
- name: team_admin
cname: 团队管理员
- name: team admin
value: team_admin
permits:
- team.application.application.manager
- team.application.authorization.manager
@@ -107,8 +107,8 @@ team:
- team.team.team.manager
- team.team.team.view
supper: true
- name: service_admin
cname: 服务管理员
- name: service admin
value: service_admin
permits:
- team.service.service.manager
- team.service.upstream.manager
@@ -122,8 +122,8 @@ team:
- team.service.release.manager
- team.service.release.view
- team.team.member.view
- name: service_developer
cname: 服务开发者
- name: service developer
value: service_developer
permits:
- team.service.upstream.manager
- team.service.upstream.view
@@ -134,8 +134,8 @@ team:
- team.service.release.manager
- team.service.release.view
- team.team.member.view
- name: application_admin
cname: 应用管理员
- name: application admin
value: application_admin
permits:
- team.application.application.manager
- team.application.authorization.manager
@@ -143,8 +143,8 @@ team:
- team.application.subscription.manager
- team.application.subscription.view
- team.team.member.view
- name: application_developer
cname: 应用开发者
- name: application developer
value: application_developer
permits:
- team.application.authorization.view
- team.application.subscription.manager
@@ -152,7 +152,7 @@ team:
- team.team.member.view
default: true
- name: guest
cname: 只读成员
value: guest
permits:
- team.application.authorization.view
- team.application.subscription.view
+44
View File
@@ -0,0 +1,44 @@
{
"ai provider": "AI Provider",
"api market": "API Market",
"api doc": "API Documentation",
"application": "Application",
"application admin": "Application Administrator",
"application developer": "Application Developer",
"authorization": "Authorization",
"cluster": "Cluster",
"dashboard": "Dashboard",
"data source": "Data Source",
"devops": "DevOps",
"devops admin": "DevOps Administrator",
"general": "General Settings",
"general member": "General Member",
"guest": "Guest",
"log configuration": "Log Configuration",
"manager": "Manager",
"member": "Member",
"organization": "Organization Management",
"release": "Release",
"role": "Role",
"router": "Router",
"run view": "Run View",
"service": "Service",
"service admin": "Service Administrator",
"service classification": "Service Directory",
"service developer": "Service Developer",
"ssl certificate": "SSL Certificate",
"subscription management": "Subscription Management",
"subscription service": "Subscription Service",
"supper admin": "Super Administrator",
"system settings": "System Settings",
"team": "Team",
"team admin": "Team Administrator",
"upstream": "Upstream",
"view": "View",
"view all application": "View All Applications",
"view all service": "View All Services",
"view all team": "View All Teams",
"view system role": "View System Roles",
"view team role": "View Team Roles",
"workspace": "Workspace"
}
+44
View File
@@ -0,0 +1,44 @@
{
"ai provider": "AIプロバイダー",
"api market": "APIマーケット",
"api doc": "APIドキュメント",
"application": "アプリケーション",
"application admin": "アプリケーション管理者",
"application developer": "アプリケーション開発者",
"authorization": "認証",
"cluster": "クラスター",
"dashboard": "ダッシュボード",
"data source": "データソース",
"devops": "DevOps",
"devops admin": "DevOps管理者",
"general": "一般設定",
"general member": "一般メンバー",
"guest": "ゲスト",
"log configuration": "ログ設定",
"manager": "管理者",
"member": "メンバー",
"organization": "組織管理",
"release": "リリース",
"role": "役割",
"router": "ルーター",
"run view": "実行ビュー",
"service": "サービス",
"service admin": "サービス管理者",
"service classification": "サービスディレクトリ",
"service developer": "サービス開発者",
"ssl certificate": "SSL証明書",
"subscription management": "サブスクリプション管理",
"subscription service": "サブスクリプションサービス",
"supper admin": "スーパ管理者",
"system settings": "システム設定",
"team": "チーム",
"team admin": "チーム管理者",
"upstream": "アップストリーム",
"view": "表示",
"view all application": "すべてのアプリケーションを表示",
"view all service": "すべてのサービスを表示",
"view all team": "すべてのチームを表示",
"view system role": "システム役割を表示",
"view team role": "チーム役割を表示",
"workspace": "ワークスペース"
}
+44
View File
@@ -0,0 +1,44 @@
{
"ai provider": "AI供应商",
"api market": "API市场",
"api doc": "API文档",
"application": "应用",
"application admin": "应用管理员",
"application developer": "应用开发者",
"authorization": "鉴权",
"cluster": "集群",
"dashboard": "仪表盘",
"data source": "数据源",
"devops": "运维",
"devops admin": "运维管理员",
"general": "常规设置",
"general member": "普通成员",
"guest": "访客",
"log configuration": "日志配置",
"manager": "管理",
"member": "成员",
"organization": "组织管理",
"release": "发布",
"role": "角色",
"router": "路由",
"run view": "运行视图",
"service": "服务",
"service admin": "服务管理员",
"service classification": "服务目录",
"service developer": "服务开发者",
"ssl certificate": "SSL证书",
"subscription management": "订阅方管理",
"subscription service": "订阅服务",
"supper admin": "超级管理员",
"system settings": "系统设置",
"team": "团队",
"team admin": "团队管理员",
"upstream": "上游",
"view": "查看",
"view all application": "查看所有应用",
"view all service": "查看所有服务",
"view all team": "查看所有团队",
"view system role": "查看系统角色",
"view team role": "查看团队角色",
"workspace": "工作空间"
}
+44
View File
@@ -0,0 +1,44 @@
{
"ai provider": "AI供應商",
"api market": "API市場",
"api doc": "API文檔",
"application": "應用",
"application admin": "應用管理員",
"application developer": "應用開發者",
"authorization": "授權",
"cluster": "集群",
"dashboard": "儀表盤",
"data source": "數據源",
"devops": "運維",
"devops admin": "運維管理員",
"general": "常規設置",
"general member": "普通成員",
"guest": "訪客",
"log configuration": "日誌配置",
"manager": "管理",
"member": "成員",
"organization": "組織管理",
"release": "發布",
"role": "角色",
"router": "路由",
"run view": "運行視圖",
"service": "服務",
"service admin": "服務管理員",
"service classification": "服務目錄",
"service developer": "服務開發者",
"ssl certificate": "SSL證書",
"subscription management": "訂閱方管理",
"subscription service": "訂閱服務",
"supper admin": "超級管理員",
"system settings": "系統設置",
"team": "團隊",
"team admin": "團隊管理員",
"upstream": "上游",
"view": "查看",
"view all application": "查看所有應用",
"view all service": "查看所有服務",
"view all team": "查看所有團隊",
"view system role": "查看系統角色",
"view team role": "查看團隊角色",
"workspace": "工作空間"
}
+52
View File
@@ -0,0 +1,52 @@
package locale
import (
"embed"
"encoding/json"
"strings"
"github.com/eolinker/eosc"
)
var (
//go:embed i18n/*
i18nDirs embed.FS
i18nData eosc.Untyped[string, map[string]string]
defaultI18n = "zh-CN"
)
func init() {
i18nData = eosc.BuildUntyped[string, map[string]string]()
files, err := i18nDirs.ReadDir("i18n")
if err != nil {
panic(err)
}
var data []byte
for _, f := range files {
data, err = i18nDirs.ReadFile("i18n/" + f.Name())
if err != nil {
panic(err)
}
tmp := make(map[string]string)
err = json.Unmarshal(data, &tmp)
if err != nil {
panic(err)
}
key := strings.TrimSuffix(f.Name(), ".json")
i18nData.Set(key, tmp)
}
}
func Get(i18n string) map[string]string {
result, has := i18nData.Get(i18n)
if has {
return result
}
result, has = i18nData.Get(defaultI18n)
if !has {
return make(map[string]string)
}
return result
}