From b6b75415247f23fda5c91db2d8065e045c97b625 Mon Sep 17 00:00:00 2001 From: "Sean E. Russell" Date: Thu, 18 Jun 2020 19:51:01 -0500 Subject: [PATCH] Expand translations --- cmd/gotop/main.go | 3 +- go.mod | 2 +- go.sum | 2 + translations/de_DE.toml | 95 +++++++++++++++++++++++++++- translations/en_US.toml | 61 ++++++++++++++---- translations/tt_TT.toml | 137 ++++++++++++++++++++++++++++++++++++++++ translations/zh_CN.toml | 121 +++++++++++++++++++++++++++++++---- widgets/battery.go | 4 +- widgets/batterygauge.go | 2 +- widgets/cpu.go | 2 +- widgets/disk.go | 2 +- widgets/mem.go | 2 +- widgets/net.go | 14 ++-- widgets/proc.go | 17 +++-- widgets/proc_linux.go | 8 +-- widgets/proc_other.go | 8 +-- widgets/proc_windows.go | 8 +-- widgets/temp.go | 2 +- 18 files changed, 428 insertions(+), 62 deletions(-) create mode 100644 translations/tt_TT.toml diff --git a/cmd/gotop/main.go b/cmd/gotop/main.go index da4ee41..5feb075 100644 --- a/cmd/gotop/main.go +++ b/cmd/gotop/main.go @@ -346,7 +346,8 @@ func main() { if ec < 2 { logpath := filepath.Join(conf.ConfigDir.QueryCacheFolder().Path, logging.LOGFILE) fmt.Println(tr.Value("error.checklog", logpath)) - fmt.Println(ioutil.ReadFile(logpath)) + bs, _ := ioutil.ReadFile(logpath) + fmt.Println(string(bs)) } } os.Exit(ec) diff --git a/go.mod b/go.mod index e708845..a8433f9 100644 --- a/go.mod +++ b/go.mod @@ -1,9 +1,9 @@ module github.com/xxxserxxx/gotop/v4 require ( - github.com/cloudfoundry-attic/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect github.com/VictoriaMetrics/metrics v1.11.2 + github.com/cloudfoundry-attic/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 github.com/distatus/battery v0.9.0 github.com/gizak/termui/v3 v3.1.0 github.com/go-ole/go-ole v1.2.4 // indirect diff --git a/go.sum b/go.sum index d92f6cc..17ea783 100644 --- a/go.sum +++ b/go.sum @@ -43,6 +43,8 @@ github.com/xxxserxxx/opflag v1.0.5 h1:2H4Qtl1qe+dSkEcGt+fBe2mQ8z14MgkWPqcLaoa6k9 github.com/xxxserxxx/opflag v1.0.5/go.mod h1:GWZtb3/tGGj5W1GE/JTyJAuqgxDxl1+jqDGAGM+P/p4= golang.org/x/sys v0.0.0-20200316230553-a7d97aace0b0 h1:4Khi5GeNOkZS5DqSBRn4Sy7BE6GuxwOqARPqfurkdNk= golang.org/x/sys v0.0.0-20200316230553-a7d97aace0b0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1 h1:ogLJMz+qpzav7lGMh10LMvAkM/fAoGlaiiHYiFYdm80= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/translations/de_DE.toml b/translations/de_DE.toml index 4633352..06fac94 100644 --- a/translations/de_DE.toml +++ b/translations/de_DE.toml @@ -1,5 +1,6 @@ configfile="Config file" usage="Usage: {0} [options]\n\nOptions:\n" +total="Total" [help] @@ -35,10 +36,102 @@ List write="Write out a default config file." -[errors] +[error] configparse="failed to parse config file: {0}" cliparse="parsing CLI args: {0}" logsetup="failed to setup log file: {0}" unknownopt="Unknown option \"{0}\"; try layouts, colorschemes, keys, paths, or devices\n" writefail="Failed to write configuration file: {0}" checklog="errors encountered; from {0}:" +metricsetup="error setting up {0} metrics: {1}" +nometrics="no metrics for {0} {0}" +fatalfetch="fatal error fetching {0} info: {1}" +recovfetch="recoverable error fetching {0} info; skipping {0}: {0}" +nodevfound="no usable {0} found" +setuperr="error setting up {0}: {1}" + + +[widget.label] +disk=" Disk Usage " +cpu=" CPU Usage " +gauge=" Power Level " +battery=" Battery Status " +batt=" Battery " +temp=" Temperatures " +net=" Network Usage " +netint=" Network Usage: {0} " +mem=" Memory Usage " +help=""" +Quit: q or + +Process navigation: + - k and : up + - j and : down + - : half page up + - : half page down + - : full page up + - : full page down + - gg and : jump to top + - G and : jump to bottom + +Process actions: + - : toggle process grouping + - dd: kill selected process or group of processes with SIGTERM (15) + - d3: kill selected process or group of processes with SIGQUIT (3) + - d9: kill selected process or group of processes with SIGKILL (9) + +Process sorting: + - c: CPU + - m: Mem + - p: PID + +Process filtering: + - /: start editing filter + - (while editing): + - : accept filter + - and : clear filter + +CPU and Mem graph scaling: + - h: scale in + - l: scale out + +Network: + - b: toggle between mbps and scaled bytes per second +""" + + +[widget.net.err] +netactivity="failed to get network activity from gopsutil: {0}" +negvalrecv="error: negative value for recently received network data from gopsutil. recentBytesRecv: {0}" +negvalsent="error: negative value for recently sent network data from gopsutil. recentBytesSent: {0}" + + +[widget.disk] +disk="Disk" +mount="Mount" +used="Used" +free="Free" +rs="R/s" +ws="W/s" + + +[widget.proc] +filter=" Filter: " +label=" Processes " +[widget.proc.header] +count="Count" +command="Command" +cpu="CPU%" +mem="Mem%" +pid="PID" +[widget.proc.err] +count="failed to get CPU count from gopsutil: {0}" +retrieve="failed to retrieve processes: {0}" +ps="failed to execute 'ps' command: {0}" +gopsutil="failed to get processes from gopsutil: {0}" +pidconv="failed to convert PID to int: {0}. line: {1}" +cpuconv="failed to convert CPU usage to float: {0}. line: {1}" +memconv="failed to convert Mem usage to float: {0}. line: {1}" +getcmd="failed to get process command from gopsutil: {0}. psProc: {1}. i: {2}. pid: {3}" +cpupercent="failed to get process cpu usage from gopsutil: {0}. psProc: {1}. i: {2}. pid: {3}" +mempercent="failed to get process memeory usage from gopsutil: {0}. psProc: {1}. i: {2}. pid: {3}" diff --git a/translations/en_US.toml b/translations/en_US.toml index bd66458..4b56c84 100644 --- a/translations/en_US.toml +++ b/translations/en_US.toml @@ -1,5 +1,6 @@ configfile="Config file" usage="Usage: {0} [options]\n\nOptions:\n" +total="Total" [help] @@ -36,26 +37,30 @@ write="Write out a default config file." [error] -configparse="0: failed to parse config file: {0}" -cliparse="1: parsing CLI args: {0}" -logsetup="2: failed to setup log file: {0}" -unknownopt="3: Unknown option \"{0}\"; try layouts, colorschemes, keys, paths, or devices\n" -writefail="4: Failed to write configuration file: {0}" -checklog="5: errors encountered; from {0}:" -metricsetup="6: error setting up {0} metrics: {1}" -nometrics="7: no metrics for {0} {0}" -fatalfetch="8: fatal error fetching {0} info: {1}" -recovfetch="9: recoverable error fetching {0} info; skipping {0}: {0}" -nodevfound="10: no usable {0} found" -setuperr="11: error setting up {0}: {1}" +configparse="failed to parse config file: {0}" +cliparse="parsing CLI args: {0}" +logsetup="failed to setup log file: {0}" +unknownopt="Unknown option \"{0}\"; try layouts, colorschemes, keys, paths, or devices\n" +writefail="Failed to write configuration file: {0}" +checklog="errors encountered; from {0}:" +metricsetup="error setting up {0} metrics: {1}" +nometrics="no metrics for {0} {0}" +fatalfetch="fatal error fetching {0} info: {1}" +recovfetch="recoverable error fetching {0} info; skipping {0}: {0}" +nodevfound="no usable {0} found" +setuperr="error setting up {0}: {1}" -[widget] +[widget.label] disk=" Disk Usage " cpu=" CPU Usage " gauge=" Power Level " battery=" Battery Status " -batt= +batt=" Battery " +temp=" Temperatures " +net=" Network Usage " +netint=" Network Usage: {0} " +mem=" Memory Usage " help=""" Quit: q or @@ -95,6 +100,12 @@ Network: """ +[widget.net.err] +netactivity="failed to get network activity from gopsutil: {0}" +negvalrecv="error: negative value for recently received network data from gopsutil. recentBytesRecv: {0}" +negvalsent="error: negative value for recently sent network data from gopsutil. recentBytesSent: {0}" + + [widget.disk] disk="Disk" mount="Mount" @@ -102,3 +113,25 @@ used="Used" free="Free" rs="R/s" ws="W/s" + + +[widget.proc] +filter=" Filter: " +label=" Processes " +[widget.proc.header] +count="Count" +command="Command" +cpu="CPU%" +mem="Mem%" +pid="PID" +[widget.proc.err] +count="failed to get CPU count from gopsutil: {0}" +retrieve="failed to retrieve processes: {0}" +ps="failed to execute 'ps' command: {0}" +gopsutil="failed to get processes from gopsutil: {0}" +pidconv="failed to convert PID to int: {0}. line: {1}" +cpuconv="failed to convert CPU usage to float: {0}. line: {1}" +memconv="failed to convert Mem usage to float: {0}. line: {1}" +getcmd="failed to get process command from gopsutil: {0}. psProc: {1}. i: {2}. pid: {3}" +cpupercent="failed to get process cpu usage from gopsutil: {0}. psProc: {1}. i: {2}. pid: {3}" +mempercent="failed to get process memeory usage from gopsutil: {0}. psProc: {1}. i: {2}. pid: {3}" diff --git a/translations/tt_TT.toml b/translations/tt_TT.toml new file mode 100644 index 0000000..dc5c737 --- /dev/null +++ b/translations/tt_TT.toml @@ -0,0 +1,137 @@ +configfile="CFG FLE" +usage="egasU: {0} [snoitpo]\n\nsnoitpO:\n" +total="latoT" + + +[help] +paths="redro ni ,rof dehcraes era ,elif gifnoc eht dna ,stuoyal & semehcsroloc elbadaoL:" +log="ni si elif gol ehT {0}" +written="ot nettirw gifnoC {0}" + + +[args] +help=".neercs siht wohS" +color=".emehcsroloc a teS" +scale="0> ,rotcaf elacs hparG" +version=".tixe dna noisrev tnirP" +percpu=".tegdiw UPC eht ni UPC hcae wohS" +cpuavg=".tegdiw UPC eht ni UPC egareva wohS" +temp=".tiehnerhaf ni serutarepmet wohS.tiehnerhaf ni serutarepmet wohS" +statusbar=".emit eht htiw rabsutats a wohS" +rate=".sm001 yreve hserfer = \"sm001\" .etunim yreve hserfer = \"m1\" .detpecca stinu emit tsoM .ycneuqerf hserfeR" +layout="Name of layout spec file for the UI. Use \"-\" to pipe." +net="gnisu derongi eb osla nac secafretnI .seulav detarapes ammoc gnisu denifed eb nac secafretni lareveS .ecafretni krowten tceleS \"!\"" +export=".trop deificeps eht no tropxe rof scirtem elbanE" +mbps=".spbm sa etar krowten wohS" +test=".edoc eruliaf/sseccus htiw stixe dna stset snuR" +conffile=")TNEMUGRA TSRIF EB TSUM( tluafed fo daetsni esu ot elif gifnoC" +list=""" +>syek|shtap|semehcsroloc|stuoyal|secived< tsiL +stegdiw elbaretlif rof seman ecived tuo stnirP :secived +stuoyal ni-dliub stsiL :stuoyal +semehcsroloc ni-tliub stsiL :semehcsroloc +shtap hcraes elif noitarugifnoc tuo tsiL :shtap +tuoyal a ni desu eb nac taht stegdiW :stegdiw +.sgnidnib draobyek eht wohS :syek """ +write=".elif gifnoc tluafed a tuo etirW" + + +[error] +configparse="elif gifnoc esrap ot deliaf: {0}" +cliparse="sgra ILC gnisrap: {0}" +logsetup="elif gol putes ot deliaf: {0}" +unknownopt="noitpo nwonknU \"{0}\"; secived ro ,shtap ,syek ,semehcsroloc ,stuoyal yrt\n" +writefail="elif noitarugifnoc etirw ot deliaF: {0}" +checklog="morf ;deretnuocne srorre {0}:" +metricsetup="pu gnittes rorre {0} scirtem: {1}" +nometrics="rof scirtem on {0} {0}" +fatalfetch="gnihctef rorre lataf {0} ofni: {1}" +recovfetch="gnihctef rorre elbarevocer {0} gnippiks ;ofni {0}: {0}" +nodevfound="elbasu on {0} dnuof" +setuperr="pu gnittes rorre {0}: {1}" + + +[widget.label] +disk=" egasU ksiD " +cpu=" egasU UPC " +gauge=" leveL rewoP " +battery=" sutatS yrettaB " +batt=" yrettaB " +temp=" serutarepmeT " +net=" egasU krowteN " +netint=" egasU krowteN: {0} " +mem=" egasU yromeM " +help=""" +>c-C< ro q :tiuQ + +:noitagivan ssecorP +pu :>pU< dna k - +nwod :>nwoD< dna j - +pu egap flah :>u-C< - +nwod egap flah :>d-C< - +pu egap lluf :>b-C< - +nwod egap lluf :>f-C< - +pot ot pmuj :>emoH< dna gg - +mottob ot pmuj :>dnE< dna G - + +:snoitca ssecorP +gnipuorg ssecorp elggot :>baT< - +)51( MRETGIS htiw sessecorp fo puorg ro ssecorp detceles llik :dd - +)3( TIUQGIS htiw sessecorp fo puorg ro ssecorp detceles llik :3d - +)9( LLIKGIS htiw sessecorp fo puorg ro ssecorp detceles llik :9d - + +:gnitros ssecorP +UPC :c - +meM :m - +DIP :p - + +:gniretlif ssecorP +retlif gnitide trats :/ - +:)gnitide elihw( - +retlif tpecca :>retnE< - +retlif raelc :>epacsE< dna >c-C< - + +:gnilacs hparg meM dna UPC +ni elacs :h - +tuo elacs :l - + +:krowteN +dnoces rep setyb delacs dna spbm neewteb elggot :b - +""" + + +[widget.net.err] +netactivity="lituspog morf ytivitca krowten teg ot deliaf: {0}" +negvalrecv=":vceRsetyBtnecer .lituspog morf atad krowten deviecer yltnecer rof eulav evitagen :rorre {0}" +negvalsent=":tneSsetyBtnecer .lituspog morf atad krowten tnes yltnecer rof eulav evitagen :rorre {0}" + + +[widget.disk] +disk="ksiD" +mount="tnuoM" +used="desU" +free="eerF" +rs="s/R" +ws="s/W" + + +[widget.proc] +filter=" :retliF " +label=" sessecorP " +[widget.proc.header] +count="tnuoC" +command="dnammoC" +cpu="%UPC" +mem="%meM" +pid="DIP" +[widget.proc.err] +count=":lituspog morf tnuoc UPC teg ot deliaf {0}" +retrieve=":sessecorp eveirter ot deliaf {0}" +ps=":dnammoc 'sp' etucexe ot deliaf {0}" +gopsutil=":lituspog morf sessecorp teg ot deliaf {0}" +pidconv=":tni ot DIP trevnoc ot deliaf {0}. enil: {1}" +cpuconv=":taolf ot egasu UPC trevnoc ot deliaf {0}. :enil {1}" +memconv=":taolf ot egasu meM trevnoc ot deliaf {0}. :enil {1}" +getcmd=":lituspog morf dnammoc ssecorp teg ot deliaf {0}. corPsp: {1}. i: {2}. dip: {3}" +cpupercent="lituspog morf egasu upc ssecorp teg ot deliaf: {0}. corPsp: {1}. i: {2}. dip: {3}" +mempercent="spog morf egasu yroemem ssecorp teg ot deliafutil: {0}. corPsp: {1}. i: {2}. dip: {3}" diff --git a/translations/zh_CN.toml b/translations/zh_CN.toml index 141df26..aa20367 100644 --- a/translations/zh_CN.toml +++ b/translations/zh_CN.toml @@ -1,5 +1,6 @@ configfile="配置文件" usage="使用方法: {0} [选项]\n\n选项:\n" +total="Total" [help] @@ -26,19 +27,111 @@ test="执行测试并返回成功或失败码。" conffile="用于替代缺省参数的配置文件(必须是第一个参数)" list=""" List - devices: 显示可用于过滤的设备名 - layouts: 列出所有内置布局方案 - colorschemes: 列出所有内置配色方案 - paths: 列出配置文件的搜索路径 - widgets: 所有可被用于布局的组件 - keys: 显示所有热键。""" -write="将当前配置写入缺省配置文件。" + devices: Prints out device names for filterable widgets + layouts: Lists build-in layouts + colorschemes: Lists built-in colorschemes + paths: List out configuration file search paths + widgets: Widgets that can be used in a layout + keys: Show the keyboard bindings.""" +write="Write out a default config file." -[errors] -configparse="无法解析配置文件: {0}" -cliparse="解析命令行参数: {0}" -logsetup="无法创建日志文件: {0}" -unknownopt="不认识 \"{0}\"; 请使用 layouts, colorschemes, keys, paths, 或 devices\n" -writefail="无法写入配置文件: {0}" -checklog="出错了; 位于 {0}:" +[error] +configparse="failed to parse config file: {0}" +cliparse="parsing CLI args: {0}" +logsetup="failed to setup log file: {0}" +unknownopt="Unknown option \"{0}\"; try layouts, colorschemes, keys, paths, or devices\n" +writefail="Failed to write configuration file: {0}" +checklog="errors encountered; from {0}:" +metricsetup="error setting up {0} metrics: {1}" +nometrics="no metrics for {0} {0}" +fatalfetch="fatal error fetching {0} info: {1}" +recovfetch="recoverable error fetching {0} info; skipping {0}: {0}" +nodevfound="no usable {0} found" +setuperr="error setting up {0}: {1}" + + +[widget.label] +disk=" Disk Usage " +cpu=" CPU Usage " +gauge=" Power Level " +battery=" Battery Status " +batt=" Battery " +temp=" Temperatures " +net=" Network Usage " +netint=" Network Usage: {0} " +mem=" Memory Usage " +help=""" +Quit: q or + +Process navigation: + - k and : up + - j and : down + - : half page up + - : half page down + - : full page up + - : full page down + - gg and : jump to top + - G and : jump to bottom + +Process actions: + - : toggle process grouping + - dd: kill selected process or group of processes with SIGTERM (15) + - d3: kill selected process or group of processes with SIGQUIT (3) + - d9: kill selected process or group of processes with SIGKILL (9) + +Process sorting: + - c: CPU + - m: Mem + - p: PID + +Process filtering: + - /: start editing filter + - (while editing): + - : accept filter + - and : clear filter + +CPU and Mem graph scaling: + - h: scale in + - l: scale out + +Network: + - b: toggle between mbps and scaled bytes per second +""" + + +[widget.net.err] +netactivity="failed to get network activity from gopsutil: {0}" +negvalrecv="error: negative value for recently received network data from gopsutil. recentBytesRecv: {0}" +negvalsent="error: negative value for recently sent network data from gopsutil. recentBytesSent: {0}" + + +[widget.disk] +disk="Disk" +mount="Mount" +used="Used" +free="Free" +rs="R/s" +ws="W/s" + + +[widget.proc] +filter=" Filter: " +label=" Processes " +[widget.proc.header] +count="Count" +command="Command" +cpu="CPU%" +mem="Mem%" +pid="PID" +[widget.proc.err] +count="failed to get CPU count from gopsutil: {0}" +retrieve="failed to retrieve processes: {0}" +ps="failed to execute 'ps' command: {0}" +gopsutil="failed to get processes from gopsutil: {0}" +pidconv="failed to convert PID to int: {0}. line: {1}" +cpuconv="failed to convert CPU usage to float: {0}. line: {1}" +memconv="failed to convert Mem usage to float: {0}. line: {1}" +getcmd="failed to get process command from gopsutil: {0}. psProc: {1}. i: {2}. pid: {3}" +cpupercent="failed to get process cpu usage from gopsutil: {0}. psProc: {1}. i: {2}. pid: {3}" +mempercent="failed to get process memeory usage from gopsutil: {0}. psProc: {1}. i: {2}. pid: {3}" diff --git a/widgets/battery.go b/widgets/battery.go index 7bc9ca6..d8334bb 100644 --- a/widgets/battery.go +++ b/widgets/battery.go @@ -23,7 +23,7 @@ func NewBatteryWidget(horizontalScale int) *BatteryWidget { LineGraph: ui.NewLineGraph(), updateInterval: time.Minute, } - self.Title = tr.Value("widget.battery") + self.Title = tr.Value("widget.label.battery") self.HorizontalScale = horizontalScale // intentional duplicate @@ -60,7 +60,7 @@ func (b *BatteryWidget) EnableMetric() { } func makeID(i int) string { - return tr.Value("widget.batt") + strconv.Itoa(i) + return tr.Value("widget.label.batt") + strconv.Itoa(i) } func (b *BatteryWidget) Scale(i int) { diff --git a/widgets/batterygauge.go b/widgets/batterygauge.go index bec3c43..8dd681e 100644 --- a/widgets/batterygauge.go +++ b/widgets/batterygauge.go @@ -18,7 +18,7 @@ type BatteryGauge struct { func NewBatteryGauge() *BatteryGauge { self := &BatteryGauge{Gauge: termui.NewGauge()} - self.Title = tr.Value("widget.gauge") + self.Title = tr.Value("widget.label.gauge") self.update() diff --git a/widgets/cpu.go b/widgets/cpu.go index 207b231..4d2bc89 100644 --- a/widgets/cpu.go +++ b/widgets/cpu.go @@ -32,7 +32,7 @@ func NewCPUWidget(updateInterval time.Duration, horizontalScale int, showAverage ShowPerCPULoad: showPerCPULoad, cpuLoads: make(map[string]float64), } - self.Title = tr.Value("cpu") + self.Title = tr.Value("widget.label.cpu") self.HorizontalScale = horizontalScale if !(self.ShowAverageLoad || self.ShowPerCPULoad) { diff --git a/widgets/disk.go b/widgets/disk.go index 716e631..67f3bb6 100644 --- a/widgets/disk.go +++ b/widgets/disk.go @@ -37,7 +37,7 @@ func NewDiskWidget() *DiskWidget { updateInterval: time.Second, Partitions: make(map[string]*Partition), } - self.Title = tr.Value("widget.disk") + self.Title = tr.Value("widget.label.disk") self.Header = []string{tr.Value("disk.disk"), tr.Value("disk.mount"), tr.Value("disk.used"), tr.Value("disk.free"), tr.Value("disk.rs"), tr.Value("disk.ws")} self.ColGap = 2 self.ColResizer = func() { diff --git a/widgets/mem.go b/widgets/mem.go index b994276..19656bb 100644 --- a/widgets/mem.go +++ b/widgets/mem.go @@ -21,7 +21,7 @@ func NewMemWidget(updateInterval time.Duration, horizontalScale int) *MemWidget LineGraph: ui.NewLineGraph(), updateInterval: updateInterval, } - widg.Title = " Memory Usage " + widg.Title = tr.Value("widget.label.mem") widg.HorizontalScale = horizontalScale mems := make(map[string]devices.MemoryInfo) devices.UpdateMem(mems) diff --git a/widgets/net.go b/widgets/net.go index b76d6b4..f25f106 100644 --- a/widgets/net.go +++ b/widgets/net.go @@ -47,9 +47,9 @@ func NewNetWidget(netInterface string) *NetWidget { updateInterval: time.Second, NetInterface: strings.Split(netInterface, ","), } - self.Title = " Network Usage " + self.Title = tr.Value("widget.label.net") if netInterface != "all" { - self.Title = fmt.Sprintf(" Network Usage: %s ", netInterface) + self.Title = tr.Value("widget.label.netint", netInterface) } self.update() @@ -73,7 +73,7 @@ func (net *NetWidget) EnableMetric() { func (net *NetWidget) update() { interfaces, err := psNet.IOCounters(true) if err != nil { - log.Printf("failed to get network activity from gopsutil: %v", err) + log.Println(tr.Value("widget.net.err.netactivity", err.Error())) return } @@ -114,12 +114,14 @@ func (net *NetWidget) update() { recentBytesSent = totalBytesSent - net.totalBytesSent if int(recentBytesRecv) < 0 { - log.Printf("error: negative value for recently received network data from gopsutil. recentBytesRecv: %v", recentBytesRecv) + v := fmt.Sprintf("%d", recentBytesRecv) + log.Println(tr.Value("widget.net.err.negvalrecv", v)) // recover from error recentBytesRecv = 0 } if int(recentBytesSent) < 0 { - log.Printf("error: negative value for recently sent network data from gopsutil. recentBytesSent: %v", recentBytesSent) + v := fmt.Sprintf("%d", recentBytesSent) + log.Printf(tr.Value("widget.net.err.negvalsent", v)) // recover from error recentBytesSent = 0 } @@ -160,7 +162,7 @@ func (net *NetWidget) update() { recentConverted, unitRecent = utils.ConvertBytes(recent) } - net.Lines[i].Title1 = fmt.Sprintf(" Total %s: %5.1f %s", label, totalConverted, unitTotal) + net.Lines[i].Title1 = fmt.Sprintf(" %s %s: %5.1f %s", tr.Value("total"), label, totalConverted, unitTotal) net.Lines[i].Title2 = fmt.Sprintf(format, rate, recentConverted, unitRecent) } } diff --git a/widgets/proc.go b/widgets/proc.go index f47f646..ee94825 100644 --- a/widgets/proc.go +++ b/widgets/proc.go @@ -51,7 +51,7 @@ type ProcWidget struct { func NewProcWidget() *ProcWidget { cpuCount, err := psCPU.Counts(false) if err != nil { - log.Printf("failed to get CPU count from gopsutil: %v", err) + log.Println(tr.Value("error.proc.err.count", err.Error())) } self := &ProcWidget{ Table: ui.NewTable(), @@ -63,14 +63,14 @@ func NewProcWidget() *ProcWidget { } self.entry = &ui.Entry{ Style: self.TitleStyle, - Label: " Filter: ", + Label: tr.Value("widget.proc.filter"), Value: "", UpdateCallback: func(val string) { self.filter = val self.update() }, } - self.Title = " Processes " + self.Title = tr.Value("widget.proc.label") self.ShowCursor = true self.ShowLocation = true self.ColGap = 3 @@ -137,7 +137,7 @@ func (proc *ProcWidget) filterProcs(procs []Proc) []Proc { func (proc *ProcWidget) update() { procs, err := getProcs() if err != nil { - log.Printf("failed to retrieve processes: %v", err) + log.Printf(tr.Value("widget.proc.error.retrieve", err.Error())) return } @@ -157,10 +157,15 @@ func (proc *ProcWidget) update() { // sortProcs sorts either the grouped or ungrouped []Process based on the sortMethod. // Called with every update, when the sort method is changed, and when processes are grouped and ungrouped. func (proc *ProcWidget) sortProcs() { - proc.Header = []string{"Count", "Command", "CPU%", "Mem%"} + proc.Header = []string{ + tr.Value("widget.proc.header.count"), + tr.Value("widget.proc.header.command"), + tr.Value("widget.proc.header.cpu"), + tr.Value("widget.proc.header.mem"), + } if !proc.showGroupedProcs { - proc.Header[0] = "PID" + proc.Header[0] = tr.Value("widget.proc.header.pid") } var procs *[]Proc diff --git a/widgets/proc_linux.go b/widgets/proc_linux.go index 164319d..938e5c2 100644 --- a/widgets/proc_linux.go +++ b/widgets/proc_linux.go @@ -11,7 +11,7 @@ import ( func getProcs() ([]Proc, error) { output, err := exec.Command("ps", "-axo", "pid:10,comm:50,pcpu:5,pmem:5,args").Output() if err != nil { - return nil, fmt.Errorf("failed to execute 'ps' command: %v", err) + return nil, fmt.Errorf(tr.Value("widget.proc.err.ps", err.Error())) } // converts to []string, removing trailing newline and header @@ -21,15 +21,15 @@ func getProcs() ([]Proc, error) { for _, line := range linesOfProcStrings { pid, err := strconv.Atoi(strings.TrimSpace(line[0:10])) if err != nil { - log.Printf("failed to convert PID to int: %v. line: %v", err, line) + log.Println(tr.Value("widget.proc.err.pidconv", err.Error(), line)) } cpu, err := strconv.ParseFloat(strings.TrimSpace(line[63:68]), 64) if err != nil { - log.Printf("failed to convert CPU usage to float: %v. line: %v", err, line) + log.Println(tr.Value("widget.proc.err.cpuconv", err.Error(), line)) } mem, err := strconv.ParseFloat(strings.TrimSpace(line[69:74]), 64) if err != nil { - log.Printf("failed to convert Mem usage to float: %v. line: %v", err, line) + log.Println(tr.Value("widget.proc.err.memconv", err.Error(), line)) } proc := Proc{ Pid: pid, diff --git a/widgets/proc_other.go b/widgets/proc_other.go index b761431..a485c4f 100644 --- a/widgets/proc_other.go +++ b/widgets/proc_other.go @@ -23,7 +23,7 @@ func getProcs() ([]Proc, error) { keywords := fmt.Sprintf("pid=%s,comm=%s,pcpu=%s,pmem=%s,args", ten, fifty, five, five) output, err := exec.Command("ps", "-caxo", keywords).Output() if err != nil { - return nil, fmt.Errorf("failed to execute 'ps' command: %v", err) + return nil, fmt.Errorf(tr.Value("widget.proc.err.ps", err.Error())) } // converts to []string and removes the header @@ -33,15 +33,15 @@ func getProcs() ([]Proc, error) { for _, line := range linesOfProcStrings { pid, err := strconv.Atoi(strings.TrimSpace(line[0:10])) if err != nil { - log.Printf("failed to convert first field to int: %v. split: %v", err, line) + log.Println(tr.Value("widget.proc.err.pidconv", err.Error(), line)) } cpu, err := strconv.ParseFloat(utils.ConvertLocalizedString(strings.TrimSpace(line[63:68])), 64) if err != nil { - log.Printf("failed to convert third field to float: %v. split: %v", err, line) + log.Println(tr.Value("widget.proc.err.cpuconv", err.Error(), line)) } mem, err := strconv.ParseFloat(utils.ConvertLocalizedString(strings.TrimSpace(line[69:74])), 64) if err != nil { - log.Printf("failed to convert fourth field to float: %v. split: %v", err, line) + log.Println(tr.Value("widget.proc.err.memconv", err.Error(), line)) } proc := Proc{ Pid: pid, diff --git a/widgets/proc_windows.go b/widgets/proc_windows.go index 56590c7..d34ef5e 100644 --- a/widgets/proc_windows.go +++ b/widgets/proc_windows.go @@ -10,7 +10,7 @@ import ( func getProcs() ([]Proc, error) { psProcs, err := psProc.Processes() if err != nil { - return nil, fmt.Errorf("failed to get processes from gopsutil: %v", err) + return nil, fmt.Errorf(tr.Value("widget.proc.err.gopsutil", err.Error())) } procs := make([]Proc, len(psProcs)) @@ -18,15 +18,15 @@ func getProcs() ([]Proc, error) { pid := psProc.Pid command, err := psProc.Name() if err != nil { - log.Printf("failed to get process command from gopsutil: %v. psProc: %v. i: %v. pid: %v", err, psProc, i, pid) + log.Println(tr.Value("widget.proc.err.getcmd", err, psProc, i, pid)) } cpu, err := psProc.CPUPercent() if err != nil { - log.Printf("failed to get process cpu usage from gopsutil: %v. psProc: %v. i: %v. pid: %v", err, psProc, i, pid) + log.Println(tr.Value("widget.proc.err.cpupercent", err, psProc, i, pid)) } mem, err := psProc.MemoryPercent() if err != nil { - log.Printf("failed to get process memeory usage from gopsutil: %v. psProc: %v. i: %v. pid: %v", err, psProc, i, pid) + log.Println(tr.Value("widget.proc.err.mempercent", err, psProc, i, pid)) } procs[i] = Proc{ diff --git a/widgets/temp.go b/widgets/temp.go index 5a22897..f5632df 100644 --- a/widgets/temp.go +++ b/widgets/temp.go @@ -39,7 +39,7 @@ func NewTempWidget(tempScale TempScale, filter []string) *TempWidget { TempThreshold: 80, TempScale: tempScale, } - self.Title = " Temperatures " + self.Title = tr.Value("widget.label.temp") if len(filter) > 0 { for _, t := range filter { self.Data[t] = 0