diff --git a/internal/route/cli.go b/internal/route/cli.go index 4a565f90..e0f5a32a 100644 --- a/internal/route/cli.go +++ b/internal/route/cli.go @@ -1,17 +1,20 @@ package route import ( + "github.com/leonelquinteros/gotext" "github.com/urfave/cli/v3" "github.com/tnb-labs/panel/internal/service" ) type Cli struct { + t *gotext.Locale cli *service.CliService } -func NewCli(cli *service.CliService) *Cli { +func NewCli(t *gotext.Locale, cli *service.CliService) *Cli { return &Cli{ + t: t, cli: cli, } } @@ -20,147 +23,147 @@ func (route *Cli) Commands() []*cli.Command { return []*cli.Command{ { Name: "restart", - Usage: "重启面板服务", + Usage: route.t.Get("Restart panel service"), Action: route.cli.Restart, }, { Name: "stop", - Usage: "停止面板服务", + Usage: route.t.Get("Stop panel service"), Action: route.cli.Stop, }, { Name: "start", - Usage: "启动面板服务", + Usage: route.t.Get("Start panel service"), Action: route.cli.Start, }, { Name: "update", - Usage: "更新面板", + Usage: route.t.Get("Update panel"), Action: route.cli.Update, }, { Name: "sync", - Usage: "同步数据", + Usage: route.t.Get("Sync panel data"), Action: route.cli.Sync, }, { Name: "fix", - Usage: "修复面板", + Usage: route.t.Get("Fix panel"), Action: route.cli.Fix, }, { Name: "info", - Usage: "输出面板基本信息", + Usage: route.t.Get("Output panel basic information and generate new password"), Action: route.cli.Info, }, { Name: "user", - Usage: "操作面板用户", + Usage: route.t.Get("Operate panel users"), Commands: []*cli.Command{ { Name: "list", - Usage: "列出所有用户", + Usage: route.t.Get("List all users"), Action: route.cli.UserList, }, { Name: "username", - Usage: "修改用户名", + Usage: route.t.Get("Change username"), Action: route.cli.UserName, }, { Name: "password", - Usage: "修改用户密码", + Usage: route.t.Get("Change user password"), Action: route.cli.UserPassword, }, }, }, { Name: "https", - Usage: "操作面板HTTPS", + Usage: route.t.Get("Operate panel HTTPS"), Commands: []*cli.Command{ { Name: "on", - Usage: "开启HTTPS", + Usage: route.t.Get("Enable HTTPS"), Action: route.cli.HTTPSOn, }, { Name: "off", - Usage: "关闭HTTPS", + Usage: route.t.Get("Disable HTTPS"), Action: route.cli.HTTPSOff, }, { Name: "generate", - Usage: "生成HTTPS证书", + Usage: route.t.Get("Generate HTTPS certificate"), Action: route.cli.HTTPSGenerate, }, }, }, { Name: "entrance", - Usage: "操作面板访问入口", + Usage: route.t.Get("Operate panel access entrance"), Commands: []*cli.Command{ { Name: "on", - Usage: "开启访问入口", + Usage: route.t.Get("Enable access entrance"), Action: route.cli.EntranceOn, }, { Name: "off", - Usage: "关闭访问入口", + Usage: route.t.Get("Disable access entrance"), Action: route.cli.EntranceOff, }, }, }, { Name: "port", - Usage: "修改面板端口", + Usage: route.t.Get("Change panel port"), Action: route.cli.Port, }, { Name: "website", - Usage: "网站管理", + Usage: route.t.Get("Website management"), Commands: []*cli.Command{ { Name: "create", - Usage: "创建新网站", + Usage: route.t.Get("Create new website"), Action: route.cli.WebsiteCreate, Flags: []cli.Flag{ &cli.StringFlag{ Name: "name", - Usage: "网站名称", + Usage: route.t.Get("Website name"), Aliases: []string{"n"}, Required: true, }, &cli.StringSliceFlag{ Name: "domains", - Usage: "与网站关联的域名列表", + Usage: route.t.Get("List of domains associated with the website"), Aliases: []string{"d"}, Required: true, }, &cli.StringSliceFlag{ Name: "listens", - Usage: "与网站关联的监听地址列表", + Usage: route.t.Get("List of listening addresses associated with the website"), Aliases: []string{"l"}, Required: true, }, &cli.StringFlag{ Name: "path", - Usage: "网站托管的路径(不填则默认路径)", + Usage: route.t.Get("Path where the website is hosted (default path if not filled)"), }, &cli.IntFlag{ Name: "php", - Usage: "网站使用的 PHP 版本(不填不使用)", + Usage: route.t.Get("PHP version used by the website (not used if not filled)"), }, }, }, { Name: "remove", - Usage: "移除网站", + Usage: route.t.Get("Remove website"), Action: route.cli.WebsiteRemove, Flags: []cli.Flag{ &cli.StringFlag{ Name: "name", - Usage: "网站名称", + Usage: route.t.Get("Website name"), Aliases: []string{"n"}, Required: true, }, @@ -168,12 +171,12 @@ func (route *Cli) Commands() []*cli.Command { }, { Name: "delete", - Usage: "删除网站(包括网站目录、同名数据库)", + Usage: route.t.Get("Delete website (including website directory, database with the same name)"), Action: route.cli.WebsiteDelete, Flags: []cli.Flag{ &cli.StringFlag{ Name: "name", - Usage: "网站名称", + Usage: route.t.Get("Website name"), Aliases: []string{"n"}, Required: true, }, @@ -181,7 +184,7 @@ func (route *Cli) Commands() []*cli.Command { }, { Name: "write", - Usage: "写入网站数据(仅限指导下使用)", + Usage: route.t.Get("Write website data (use only under guidance)"), Hidden: true, Action: route.cli.WebsiteWrite, }, @@ -189,55 +192,55 @@ func (route *Cli) Commands() []*cli.Command { }, { Name: "database", - Usage: "数据库管理", + Usage: route.t.Get("Database management"), Commands: []*cli.Command{ { Name: "add-server", - Usage: "添加数据库服务器", + Usage: route.t.Get("Add database server"), Action: route.cli.DatabaseAddServer, Flags: []cli.Flag{ &cli.StringFlag{ Name: "type", - Usage: "服务器类型", + Usage: route.t.Get("Server type"), Required: true, }, &cli.StringFlag{ Name: "name", - Usage: "服务器名称", + Usage: route.t.Get("Server name"), Required: true, }, &cli.StringFlag{ Name: "host", - Usage: "服务器地址", + Usage: route.t.Get("Server address"), Required: true, }, &cli.UintFlag{ Name: "port", - Usage: "服务器端口", + Usage: route.t.Get("Server port"), Required: true, }, &cli.StringFlag{ Name: "username", - Usage: "服务器用户名", + Usage: route.t.Get("Server username"), }, &cli.StringFlag{ Name: "password", - Usage: "服务器密码", + Usage: route.t.Get("Server password"), }, &cli.StringFlag{ Name: "remark", - Usage: "服务器备注", + Usage: route.t.Get("Server remark"), }, }, }, { Name: "delete-server", - Usage: "删除数据库服务器", + Usage: route.t.Get("Delete database server"), Action: route.cli.DatabaseDeleteServer, Flags: []cli.Flag{ &cli.StringFlag{ Name: "name", - Usage: "服务器名称", + Usage: route.t.Get("Server name"), Aliases: []string{"n"}, Required: true, }, @@ -247,89 +250,89 @@ func (route *Cli) Commands() []*cli.Command { }, { Name: "backup", - Usage: "数据备份", + Usage: route.t.Get("Data backup"), Commands: []*cli.Command{ { Name: "website", - Usage: "备份网站", + Usage: route.t.Get("Backup website"), Action: route.cli.BackupWebsite, Flags: []cli.Flag{ &cli.StringFlag{ Name: "name", Aliases: []string{"n"}, - Usage: "网站名称", + Usage: route.t.Get("Website name"), Required: true, }, &cli.StringFlag{ Name: "path", Aliases: []string{"p"}, - Usage: "保存目录(不填则默认路径)", + Usage: route.t.Get("Save directory (default path if not filled)"), }, }, }, { Name: "database", - Usage: "备份数据库", + Usage: route.t.Get("Backup database"), Action: route.cli.BackupDatabase, Flags: []cli.Flag{ &cli.StringFlag{ Name: "type", Aliases: []string{"t"}, - Usage: "数据库类型", + Usage: route.t.Get("Database type"), Required: true, }, &cli.StringFlag{ Name: "name", Aliases: []string{"n"}, - Usage: "数据库名称", + Usage: route.t.Get("Database name"), Required: true, }, &cli.StringFlag{ Name: "path", Aliases: []string{"p"}, - Usage: "保存目录(不填则默认路径)", + Usage: route.t.Get("Save directory (default path if not filled)"), }, }, }, { Name: "panel", - Usage: "备份面板", + Usage: route.t.Get("Backup panel"), Action: route.cli.BackupPanel, Flags: []cli.Flag{ &cli.StringFlag{ Name: "path", Aliases: []string{"p"}, - Usage: "保存目录(不填则默认路径)", + Usage: route.t.Get("Save directory (default path if not filled)"), }, }, }, { Name: "clear", - Usage: "清理备份", + Usage: route.t.Get("Clear backups"), Action: route.cli.BackupClear, Flags: []cli.Flag{ &cli.StringFlag{ Name: "type", Aliases: []string{"t"}, - Usage: "备份类型", + Usage: route.t.Get("Backup type"), Required: true, }, &cli.StringFlag{ Name: "file", Aliases: []string{"f"}, - Usage: "备份文件", + Usage: route.t.Get("Backup file"), Required: true, }, &cli.IntFlag{ Name: "save", Aliases: []string{"s"}, - Usage: "保存份数", + Usage: route.t.Get("Number of backups to keep"), Required: true, }, &cli.StringFlag{ Name: "path", Aliases: []string{"p"}, - Usage: "备份目录(不填则默认路径)", + Usage: route.t.Get("Backup directory (default path if not filled)"), }, }, }, @@ -337,54 +340,54 @@ func (route *Cli) Commands() []*cli.Command { }, { Name: "cutoff", - Usage: "日志切割", + Usage: route.t.Get("Log rotation"), Commands: []*cli.Command{ { Name: "website", - Usage: "网站", + Usage: route.t.Get("Website"), Action: route.cli.CutoffWebsite, Flags: []cli.Flag{ &cli.StringFlag{ Name: "name", Aliases: []string{"n"}, - Usage: "网站名称", + Usage: route.t.Get("Website name"), Required: true, }, &cli.StringFlag{ Name: "path", Aliases: []string{"p"}, - Usage: "保存目录(不填则默认路径)", + Usage: route.t.Get("Save directory (default path if not filled)"), }, }, }, { Name: "clear", - Usage: "清理切割的日志", + Usage: route.t.Get("Clear rotated logs"), Action: route.cli.CutoffClear, Flags: []cli.Flag{ &cli.StringFlag{ Name: "type", Aliases: []string{"t"}, - Usage: "切割类型", + Usage: route.t.Get("Rotation type"), Required: true, }, &cli.StringFlag{ Name: "file", Aliases: []string{"f"}, - Usage: "切割文件", + Usage: route.t.Get("Rotation file"), Required: true, }, &cli.IntFlag{ Name: "save", Aliases: []string{"s"}, - Usage: "保存份数", + Usage: route.t.Get("Number of logs to keep"), Required: true, }, &cli.StringFlag{ Name: "path", Aliases: []string{"p"}, - Usage: "切割目录(不填则默认路径)", + Usage: route.t.Get("Rotation directory (default path if not filled)"), }, }, }, @@ -392,32 +395,32 @@ func (route *Cli) Commands() []*cli.Command { }, { Name: "app", - Usage: "应用管理", + Usage: route.t.Get("Application management"), Commands: []*cli.Command{ { Name: "install", - Usage: "安装应用", + Usage: route.t.Get("Install application"), Action: route.cli.AppInstall, }, { Name: "uninstall", - Usage: "卸载应用", + Usage: route.t.Get("Uninstall application"), Action: route.cli.AppUnInstall, }, { Name: "update", - Usage: "更新应用", + Usage: route.t.Get("Update application"), Action: route.cli.AppUpdate, }, { Name: "write", - Usage: "添加面板应用标记(仅限指导下使用)", + Usage: route.t.Get("Add panel application mark (use only under guidance)"), Hidden: true, Action: route.cli.AppWrite, }, { Name: "remove", - Usage: "移除面板应用标记(仅限指导下使用)", + Usage: route.t.Get("Remove panel application mark (use only under guidance)"), Hidden: true, Action: route.cli.AppRemove, }, @@ -425,24 +428,24 @@ func (route *Cli) Commands() []*cli.Command { }, { Name: "setting", - Usage: "设置管理", + Usage: route.t.Get("Setting management"), Hidden: true, Commands: []*cli.Command{ { Name: "get", - Usage: "获取面板设置(仅限指导下使用)", + Usage: route.t.Get("Get panel setting (use only under guidance)"), Hidden: true, Action: route.cli.GetSetting, }, { Name: "write", - Usage: "写入面板设置(仅限指导下使用)", + Usage: route.t.Get("Write panel setting (use only under guidance)"), Hidden: true, Action: route.cli.WriteSetting, }, { Name: "remove", - Usage: "移除面板设置(仅限指导下使用)", + Usage: route.t.Get("Remove panel setting (use only under guidance)"), Hidden: true, Action: route.cli.RemoveSetting, }, @@ -450,18 +453,18 @@ func (route *Cli) Commands() []*cli.Command { }, { Name: "sync-time", - Usage: "同步系统时间", + Usage: route.t.Get("Sync system time"), Action: route.cli.SyncTime, }, { Name: "clear-task", - Usage: "清理面板任务队列(仅限指导下使用)", + Usage: route.t.Get("Clear panel task queue (use only under guidance)"), Hidden: true, Action: route.cli.ClearTask, }, { Name: "init", - Usage: "初始化面板(仅限指导下使用)", + Usage: route.t.Get("Initialize panel (use only under guidance)"), Hidden: true, Action: route.cli.Init, },