mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2025-05-11 02:15:48 +02:00
compile pofile in backend
This commit is contained in:
parent
35d144c678
commit
9940c0ad36
18 changed files with 99 additions and 183 deletions
|
@ -1,6 +1,26 @@
|
|||
package frontend
|
||||
|
||||
import "embed"
|
||||
import (
|
||||
"embed"
|
||||
"github.com/0xJacky/pofile"
|
||||
"log"
|
||||
"path"
|
||||
)
|
||||
|
||||
//go:embed dist
|
||||
var DistFS embed.FS
|
||||
|
||||
var Translations pofile.Dict
|
||||
|
||||
func InitTranslations() {
|
||||
lang := []string{"zh_CN", "zh_TW", "en"}
|
||||
Translations = make(pofile.Dict)
|
||||
for _, v := range lang {
|
||||
p, err := pofile.Parse(path.Join("frontend", "src", "locale", v, "LC_MESSAGES", "app.po"))
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
Translations[p.Header.Language] = make(pofile.Dict)
|
||||
Translations[p.Header.Language] = p.ToDict()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,17 +1,24 @@
|
|||
export const settings = {
|
||||
namespace: true,
|
||||
state: {
|
||||
language: ''
|
||||
language: '',
|
||||
translations: {},
|
||||
},
|
||||
mutations: {
|
||||
set_language(state, payload) {
|
||||
state.language = payload
|
||||
},
|
||||
update_translations(state, payload) {
|
||||
state.translations = payload
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
set_language({commit}, data) {
|
||||
commit('set_language', data)
|
||||
},
|
||||
update_translations({commit}, data) {
|
||||
commit('update_translations', data)
|
||||
}
|
||||
},
|
||||
getters: {
|
||||
current_language(state) {
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import {translate} from 'vue-gettext'
|
||||
import store from '@/lib/store'
|
||||
import {availableLanguages} from '@/lib/translate/index'
|
||||
import translations from '@/translations.json'
|
||||
|
||||
let lang = window.navigator.language
|
||||
if (!lang.includes('zh')) {
|
||||
|
@ -24,6 +23,6 @@ const {
|
|||
gettext: $gettext,
|
||||
} = translate
|
||||
|
||||
translate.initTranslations(translations, config)
|
||||
translate.initTranslations(store.state.settings.translations, config)
|
||||
|
||||
export default $gettext
|
||||
|
|
|
@ -110,11 +110,7 @@ msgstr ""
|
|||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/DashBoard.vue:94
|
||||
msgid "Used:"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/DashBoard.vue:123
|
||||
#: src/views/dashboard/DashBoard.vue:94 src/views/dashboard/DashBoard.vue:123
|
||||
msgid "Used:"
|
||||
msgstr ""
|
||||
|
||||
|
|
Binary file not shown.
|
@ -112,11 +112,7 @@ msgstr "总共: "
|
|||
msgid "Uptime"
|
||||
msgstr "运行时间"
|
||||
|
||||
#: src/views/dashboard/DashBoard.vue:94
|
||||
msgid "Used:"
|
||||
msgstr "已使用:"
|
||||
|
||||
#: src/views/dashboard/DashBoard.vue:123
|
||||
#: src/views/dashboard/DashBoard.vue:94 src/views/dashboard/DashBoard.vue:123
|
||||
msgid "Used:"
|
||||
msgstr "已使用:"
|
||||
|
||||
|
|
|
@ -1,125 +0,0 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: zh_CN\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: easygettext\n"
|
||||
"X-Generator: Poedit 3.0.1\n"
|
||||
|
||||
#: src/router/index.js:98
|
||||
msgid "404 Not Found"
|
||||
msgstr "404 找不到页面"
|
||||
|
||||
#: src/router/index.js:76
|
||||
msgid "About"
|
||||
msgstr "关于"
|
||||
|
||||
#: src/router/index.js:47
|
||||
msgid "Add Sites"
|
||||
msgstr "添加站点"
|
||||
|
||||
#: src/views/dashboard/DashBoard.vue:94
|
||||
msgid "Cached: "
|
||||
msgstr "缓存: "
|
||||
|
||||
#: src/router/index.js:60
|
||||
msgid "Config"
|
||||
msgstr "配置"
|
||||
|
||||
#: src/router/index.js:19
|
||||
msgid "Dashboard"
|
||||
msgstr "仪表盘"
|
||||
|
||||
#: src/router/index.js:124
|
||||
msgid "Detected version update, this page will automatically refresh."
|
||||
msgstr "检测到版本更新,页面将会自动刷新。"
|
||||
|
||||
#: src/views/dashboard/DashBoard.vue:95
|
||||
msgid "Free:"
|
||||
msgstr "空闲:"
|
||||
|
||||
#: src/router/index.js:12
|
||||
msgid "Home"
|
||||
msgstr "首页"
|
||||
|
||||
#: src/router/index.js:86
|
||||
msgid "Install"
|
||||
msgstr "安装"
|
||||
|
||||
#: src/views/dashboard/DashBoard.vue:13
|
||||
msgid "Load averages"
|
||||
msgstr "系统负载"
|
||||
|
||||
#: src/router/index.js:92
|
||||
msgid "Login"
|
||||
msgstr "登录"
|
||||
|
||||
#: src/views/dashboard/DashBoard.vue:23
|
||||
msgid "Memory"
|
||||
msgstr "内存"
|
||||
|
||||
#: src/router/index.js:68
|
||||
msgid "Modify Config"
|
||||
msgstr "配置修改"
|
||||
|
||||
#: src/router/index.js:51
|
||||
msgid "Modify Sites"
|
||||
msgstr "站点修改"
|
||||
|
||||
#: src/router/index.js:104
|
||||
msgid "Not Found"
|
||||
msgstr "找不到页面"
|
||||
|
||||
#: src/router/index.js:128
|
||||
msgid "OK"
|
||||
msgstr "好的"
|
||||
|
||||
#: src/views/dashboard/DashBoard.vue:96
|
||||
msgid "Physical memory:"
|
||||
msgstr "物理内存:"
|
||||
|
||||
#: src/views/dashboard/DashBoard.vue:38
|
||||
msgid "Server status"
|
||||
msgstr "服务器状态"
|
||||
|
||||
#: src/router/index.js:35
|
||||
msgid "Sites"
|
||||
msgstr "站点"
|
||||
|
||||
#: src/router/index.js:43
|
||||
msgid "Sites List"
|
||||
msgstr "站点列表"
|
||||
|
||||
#: src/views/dashboard/DashBoard.vue:32
|
||||
msgid "Storage"
|
||||
msgstr "存储"
|
||||
|
||||
#: src/router/index.js:123
|
||||
msgid "System message"
|
||||
msgstr "系统消息"
|
||||
|
||||
#: src/views/dashboard/DashBoard.vue:124
|
||||
msgid "Total: "
|
||||
msgstr "总共: "
|
||||
|
||||
#: src/views/dashboard/DashBoard.vue:12
|
||||
msgid "Uptime"
|
||||
msgstr "运行时间"
|
||||
|
||||
#: src/views/dashboard/DashBoard.vue:94
|
||||
msgid "Used:"
|
||||
msgstr "已使用:"
|
||||
|
||||
#: src/views/dashboard/DashBoard.vue:123
|
||||
msgid "Used: "
|
||||
msgstr "已使用: "
|
||||
|
||||
#: src/router/index.js:27
|
||||
msgid "Users"
|
||||
msgstr "用户"
|
|
@ -109,11 +109,7 @@ msgstr ""
|
|||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/DashBoard.vue:94
|
||||
msgid "Used:"
|
||||
msgstr ""
|
||||
|
||||
#: src/views/dashboard/DashBoard.vue:123
|
||||
#: src/views/dashboard/DashBoard.vue:94 src/views/dashboard/DashBoard.vue:123
|
||||
msgid "Used:"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ import utils from '@/lib/utils'
|
|||
import api from '@/api'
|
||||
import GetTextPlugin from 'vue-gettext'
|
||||
import {availableLanguages} from '@/lib/translate'
|
||||
import translations from '@/translations.json'
|
||||
import http from '@/lib/http'
|
||||
|
||||
Vue.use(utils)
|
||||
|
||||
|
@ -23,10 +23,14 @@ Vue.prototype.$api = api
|
|||
Vue.use(GetTextPlugin, {
|
||||
availableLanguages,
|
||||
defaultLanguage: store.getters.current_language,
|
||||
translations: translations,
|
||||
translations: store.state.settings.translations,
|
||||
silent: true
|
||||
})
|
||||
|
||||
http.get('/translations.json').then(r => {
|
||||
store.commit('update_translations', r)
|
||||
})
|
||||
|
||||
NProgress.configure({
|
||||
easing: 'ease',
|
||||
speed: 500,
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
{"en":{},"zh_CN":{"404 Not Found":"404 找不到页面","About":"关于","Add Sites":"添加站点","Cached:":"缓存:","Config":"配置","Dashboard":"仪表盘","Detected version update, this page will automatically refresh.":"检测到版本更新,页面将会自动刷新。","Free:":"空闲:","Home":"首页","Install":"安装","Load averages":"系统负载","Login":"登录","Memory":"内存","Modify Config":"配置修改","Modify Sites":"站点修改","Not Found":"找不到页面","OK":"好的","Physical memory:":"物理内存:","Server status":"服务器状态","Sites":"站点","Sites List":"站点列表","Storage":"存储","System message":"系统消息","Total: ":"总共: ","Uptime":"运行时间","Used:":"已使用:","Used: ":"已使用: ","Users":"用户"},"zh_TW":{}}
|
3
go.mod
3
go.mod
|
@ -23,11 +23,13 @@ require (
|
|||
)
|
||||
|
||||
require (
|
||||
github.com/0xJacky/pofile v0.0.0-20220219022008-df96416310e5 // indirect
|
||||
github.com/StackExchange/wmi v1.2.1 // indirect
|
||||
github.com/cenkalti/backoff/v4 v4.1.0 // indirect
|
||||
github.com/gin-contrib/sse v0.1.0 // indirect
|
||||
github.com/go-ole/go-ole v1.2.5 // indirect
|
||||
github.com/golang/protobuf v1.3.4 // indirect
|
||||
github.com/itchyny/timefmt-go v0.1.3 // indirect
|
||||
github.com/jinzhu/inflection v1.0.0 // indirect
|
||||
github.com/jinzhu/now v1.1.2 // indirect
|
||||
github.com/json-iterator/go v1.1.9 // indirect
|
||||
|
@ -37,6 +39,7 @@ require (
|
|||
github.com/miekg/dns v1.1.40 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||
github.com/modern-go/reflect2 v1.0.1 // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/tklauser/go-sysconf v0.3.7 // indirect
|
||||
github.com/tklauser/numcpus v0.2.3 // indirect
|
||||
github.com/ugorji/go/codec v1.1.7 // indirect
|
||||
|
|
7
go.sum
7
go.sum
|
@ -23,6 +23,10 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo
|
|||
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
|
||||
contrib.go.opencensus.io/exporter/ocagent v0.4.12/go.mod h1:450APlNTSR6FrvC3CTRqYosuDstRB9un7SOx2k/9ckA=
|
||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||
github.com/0xJacky/pofile v0.0.0-20220216140954-bc565a3feb80 h1:qKPxkbGoP/vVxN1Vgd964oJBlhGwhrCAKiheoieOPhc=
|
||||
github.com/0xJacky/pofile v0.0.0-20220216140954-bc565a3feb80/go.mod h1:gSDWobvodMtvwh7FE/F999AQoCwBoXgzyGffYFX9nKA=
|
||||
github.com/0xJacky/pofile v0.0.0-20220219022008-df96416310e5 h1:NEsbh2Wez8+0Y72hbVQPPhyIkmc1RAgWOWbcISRUxEs=
|
||||
github.com/0xJacky/pofile v0.0.0-20220219022008-df96416310e5/go.mod h1:gSDWobvodMtvwh7FE/F999AQoCwBoXgzyGffYFX9nKA=
|
||||
github.com/Azure/azure-sdk-for-go v32.4.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
|
||||
github.com/Azure/go-autorest/autorest v0.1.0/go.mod h1:AKyIcETwSUFxIcs/Wnq/C+kwCtlEYGUVd7FPNb2slmg=
|
||||
github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
|
||||
|
@ -225,6 +229,8 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:
|
|||
github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4=
|
||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||
github.com/infobloxopen/infoblox-go-client v1.1.1/go.mod h1:BXiw7S2b9qJoM8MS40vfgCNB2NLHGusk1DtO16BD9zI=
|
||||
github.com/itchyny/timefmt-go v0.1.3 h1:7M3LGVDsqcd0VZH2U+x393obrzZisp7C0uEe921iRkU=
|
||||
github.com/itchyny/timefmt-go v0.1.3/go.mod h1:0osSSCQSASBJMsIZnhAaF1C2fCBTJZXrnj37mG8/c+A=
|
||||
github.com/jarcoal/httpmock v1.0.6/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik=
|
||||
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
|
||||
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
|
||||
|
@ -335,6 +341,7 @@ github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrap
|
|||
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
|
||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
|
||||
github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw=
|
||||
|
|
2
main.go
2
main.go
|
@ -3,6 +3,7 @@ package main
|
|||
import (
|
||||
"context"
|
||||
"flag"
|
||||
"github.com/0xJacky/Nginx-UI/frontend"
|
||||
"github.com/0xJacky/Nginx-UI/server/model"
|
||||
"github.com/0xJacky/Nginx-UI/server/router"
|
||||
"github.com/0xJacky/Nginx-UI/server/settings"
|
||||
|
@ -32,6 +33,7 @@ func main() {
|
|||
log.Printf("nginx config dir path: %s", tool2.GetNginxConfPath(""))
|
||||
if "" != settings.ServerSettings.JwtSecret {
|
||||
model.Init()
|
||||
frontend.InitTranslations()
|
||||
go tool2.AutoCert()
|
||||
}
|
||||
|
||||
|
|
11
server/api/translations.go
Normal file
11
server/api/translations.go
Normal file
|
@ -0,0 +1,11 @@
|
|||
package api
|
||||
|
||||
import (
|
||||
"github.com/0xJacky/Nginx-UI/frontend"
|
||||
"github.com/gin-gonic/gin"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func GetTranslations(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, frontend.Translations)
|
||||
}
|
|
@ -2,7 +2,7 @@ package router
|
|||
|
||||
import (
|
||||
"bufio"
|
||||
api2 "github.com/0xJacky/Nginx-UI/server/api"
|
||||
"github.com/0xJacky/Nginx-UI/server/api"
|
||||
"github.com/gin-contrib/static"
|
||||
"github.com/gin-gonic/gin"
|
||||
"net/http"
|
||||
|
@ -29,46 +29,47 @@ func InitRouter() *gin.Engine {
|
|||
|
||||
g := r.Group("/api")
|
||||
{
|
||||
g.GET("install", api2.InstallLockCheck)
|
||||
g.POST("install", api2.InstallNginxUI)
|
||||
g.GET("translations.json", api.GetTranslations)
|
||||
g.GET("install", api.InstallLockCheck)
|
||||
g.POST("install", api.InstallNginxUI)
|
||||
|
||||
g.POST("/login", api2.Login)
|
||||
g.DELETE("/logout", api2.Logout)
|
||||
g.POST("/login", api.Login)
|
||||
g.DELETE("/logout", api.Logout)
|
||||
|
||||
g := g.Group("/", authRequired())
|
||||
{
|
||||
g.GET("/analytic", api2.Analytic)
|
||||
g.GET("/analytic", api.Analytic)
|
||||
|
||||
g.GET("/users", api2.GetUsers)
|
||||
g.GET("/user/:id", api2.GetUser)
|
||||
g.POST("/user", api2.AddUser)
|
||||
g.POST("/user/:id", api2.EditUser)
|
||||
g.DELETE("/user/:id", api2.DeleteUser)
|
||||
g.GET("/users", api.GetUsers)
|
||||
g.GET("/user/:id", api.GetUser)
|
||||
g.POST("/user", api.AddUser)
|
||||
g.POST("/user/:id", api.EditUser)
|
||||
g.DELETE("/user/:id", api.DeleteUser)
|
||||
|
||||
g.GET("domains", api2.GetDomains)
|
||||
g.GET("domain/:name", api2.GetDomain)
|
||||
g.POST("domain/:name", api2.EditDomain)
|
||||
g.POST("domain/:name/enable", api2.EnableDomain)
|
||||
g.POST("domain/:name/disable", api2.DisableDomain)
|
||||
g.DELETE("domain/:name", api2.DeleteDomain)
|
||||
g.GET("domains", api.GetDomains)
|
||||
g.GET("domain/:name", api.GetDomain)
|
||||
g.POST("domain/:name", api.EditDomain)
|
||||
g.POST("domain/:name/enable", api.EnableDomain)
|
||||
g.POST("domain/:name/disable", api.DisableDomain)
|
||||
g.DELETE("domain/:name", api.DeleteDomain)
|
||||
|
||||
g.GET("configs", api2.GetConfigs)
|
||||
g.GET("config/:name", api2.GetConfig)
|
||||
g.POST("config", api2.AddConfig)
|
||||
g.POST("config/:name", api2.EditConfig)
|
||||
g.GET("configs", api.GetConfigs)
|
||||
g.GET("config/:name", api.GetConfig)
|
||||
g.POST("config", api.AddConfig)
|
||||
g.POST("config/:name", api.EditConfig)
|
||||
|
||||
g.GET("backups", api2.GetFileBackupList)
|
||||
g.GET("backup/:id", api2.GetFileBackup)
|
||||
g.GET("backups", api.GetFileBackupList)
|
||||
g.GET("backup/:id", api.GetFileBackup)
|
||||
|
||||
g.GET("template/:name", api2.GetTemplate)
|
||||
g.GET("template/:name", api.GetTemplate)
|
||||
|
||||
g.GET("cert/issue/:domain", api2.IssueCert)
|
||||
g.GET("cert/:domain/info", api2.CertInfo)
|
||||
g.GET("cert/issue/:domain", api.IssueCert)
|
||||
g.GET("cert/:domain/info", api.CertInfo)
|
||||
|
||||
// 添加域名到自动续期列表
|
||||
g.POST("cert/:domain", api2.AddDomainToAutoCert)
|
||||
g.POST("cert/:domain", api.AddDomainToAutoCert)
|
||||
// 从自动续期列表中删除域名
|
||||
g.DELETE("cert/:domain", api2.RemoveDomainFromAutoCert)
|
||||
g.DELETE("cert/:domain", api.RemoveDomainFromAutoCert)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue