diff --git a/go.mod b/go.mod index 4bc92d51..ba1f9dfa 100644 --- a/go.mod +++ b/go.mod @@ -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 diff --git a/go.sum b/go.sum index 01f76851..8ed516ee 100644 --- a/go.sum +++ b/go.sum @@ -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= diff --git a/resources/access/access.yaml b/resources/access/access.yaml index 4ba49f1b..1ff6ba0b 100644 --- a/resources/access/access.yaml +++ b/resources/access/access.yaml @@ -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" diff --git a/resources/access/access_test.go b/resources/access/access_test.go index 95d216e7..afd896ca 100644 --- a/resources/access/access_test.go +++ b/resources/access/access_test.go @@ -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) + } + } + } + } +} diff --git a/resources/access/permit.yaml b/resources/access/permit.yaml index 664c25bd..8a296c8f 100644 --- a/resources/access/permit.yaml +++ b/resources/access/permit.yaml @@ -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 diff --git a/resources/access/role.yaml b/resources/access/role.yaml index 8cc1f5b3..30054bb5 100644 --- a/resources/access/role.yaml +++ b/resources/access/role.yaml @@ -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 diff --git a/resources/locale/i18n/en-US.json b/resources/locale/i18n/en-US.json new file mode 100644 index 00000000..4d865e69 --- /dev/null +++ b/resources/locale/i18n/en-US.json @@ -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" +} diff --git a/resources/locale/i18n/ja-JP.json b/resources/locale/i18n/ja-JP.json new file mode 100644 index 00000000..894c899c --- /dev/null +++ b/resources/locale/i18n/ja-JP.json @@ -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": "ワークスペース" +} diff --git a/resources/locale/i18n/zh-CN.json b/resources/locale/i18n/zh-CN.json new file mode 100644 index 00000000..ea248a81 --- /dev/null +++ b/resources/locale/i18n/zh-CN.json @@ -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": "工作空间" +} \ No newline at end of file diff --git a/resources/locale/i18n/zh-TW.json b/resources/locale/i18n/zh-TW.json new file mode 100644 index 00000000..44c6075f --- /dev/null +++ b/resources/locale/i18n/zh-TW.json @@ -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": "工作空間" +} diff --git a/resources/locale/locale.go b/resources/locale/locale.go new file mode 100644 index 00000000..7b75955b --- /dev/null +++ b/resources/locale/locale.go @@ -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 +}