termclock 0.5.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9d89ea6ed7b04bc61235e7500823b8c29783025115a0366cbf805152a079506a
4
- data.tar.gz: 4c8f02442b4e972ea784061e9b320ca7fdfe668d55f4b8a94723527c96365dbf
3
+ metadata.gz: f115886b901413b9482b73b07620040e5c331d66379f99770f479cedbd27b2e8
4
+ data.tar.gz: ed396757fec5da45e436efc98680dfcbea6f20ed2bbd5ae00be655617a35d5fc
5
5
  SHA512:
6
- metadata.gz: cb2fc8a8b36a1961a4ab914295d1cb920e03499129065d2a66a0a4f3e3e28f3705ef9eedc21b3a35c7a81cb60af58dc67c26a03dd26643ab7bec3f2953472a60
7
- data.tar.gz: fa2b54e5ad66ee0dd3e118e41bfba397edf209e5a4b5a5961c353cd8351237837b61f2e98c0cb0cbe9d5574716577839631b344f5d8eef0fb64a8bb7e9b21138
6
+ metadata.gz: 4c8fcee590146c6ae39192da7e979a71bc67619a82173ab4076451da1e99268c89fd5fc93fb663f99263fd1bc9a2405179b36a9f416367fd5ca917fa95f4e46f
7
+ data.tar.gz: 768021fa1a46138689cd0b737ef1c05c5cba5f6d7a087bd28aa45f803724457a400b36129c27486fcda10f9bb7d970230177ef986759dbb60d46e30a529c32e7
data/exe/termclock CHANGED
@@ -150,8 +150,8 @@ begin
150
150
  )
151
151
  rescue Interrupt, SignalException
152
152
  print "\e[H\e[2J\e[3J"
153
- # rescue Errno::ENOTTY
154
- # abort "This should be run on a TTY! Also please don't pipe or redirect the output!"
153
+ rescue Errno::ENOTTY
154
+ abort "This should be run on a TTY! Also please don't pipe or redirect the output!"
155
155
  ensure
156
156
  print "\e[?25h"
157
157
  end
data/lib/termclock.rb CHANGED
@@ -1,6 +1,9 @@
1
1
  require 'linux_stat'
2
2
  require 'io/console'
3
+ require 'json'
4
+
3
5
  require_relative "termclock/version"
6
+ require_relative "termclock/center_puts"
4
7
 
5
8
  module Termclock
6
9
  GC_COMPACT_TIME = 7200
@@ -11,8 +14,63 @@ module Termclock
11
14
  TAB = ?\t.freeze
12
15
  EMPTY = ''.freeze
13
16
  EPSILON = 5.0e-07
17
+
18
+ # All languages
19
+ LANGS = %i(
20
+ bn en es fr hi it ru
21
+ )
22
+
23
+ # LANGUAGES
24
+ env_lc_all = ENV['LC_ALL'] && !ENV['LC_ALL'].empty? && ENV['LC_ALL'].downcase.split(?_)[0].to_sym
25
+
26
+ _lang = nil
27
+ _lang = env_lc_all if LANGS.include?(env_lc_all)
28
+
29
+ unless _lang
30
+ env_language = ENV['LANGUAGE'] && !ENV['LANGUAGE'].empty? && ENV['LANGUAGE'].downcase.split(?_)[0].to_sym
31
+ _lang = env_language if LANGS.include?(env_language)
32
+ end
33
+
34
+ unless _lang
35
+ env_lang = ENV['LANG'] && !ENV['LANG'].empty? && ENV['LANG'].downcase.split(?_)[0].to_sym
36
+ _lang = env_lang if LANGS.include?(env_lang)
37
+ end
38
+
39
+ unless _lang
40
+ _lang = :en
41
+ end
42
+
43
+ LANG = _lang.freeze
44
+
45
+ # Load translations
46
+ TRANSLATION_FILES = {}
47
+
48
+ Dir.glob(File.join(__dir__, 'translations', '*.json')).each { |x|
49
+ next if x == '..'.freeze || x == ?..freeze || !File.readable?(x)
50
+
51
+ TRANSLATION_FILES.merge!(
52
+ File.basename(x).split(?..freeze).tap(&:pop).join(?..freeze) => x
53
+ )
54
+ }
55
+
56
+ translation_file = TRANSLATION_FILES[LANG.to_s]
57
+
58
+ TRANSLATIONS = if translation_file && File.readable?(translation_file)
59
+ begin
60
+ JSON.parse(IO.read(translation_file))
61
+ rescue StandardError
62
+ center_puts "Can't Parse Translation File!"
63
+ sleep 0.5
64
+ {}
65
+ end
66
+ else
67
+ {}
68
+ end
14
69
  end
15
70
 
71
+ # Translation engine
72
+ require_relative 'termclock/translate.rb'
73
+
16
74
  require_relative "termclock/string"
17
75
  require_relative "termclock/parse_characters"
18
76
  require_relative "termclock/system_info"
@@ -0,0 +1,8 @@
1
+ module Termclock
2
+ def self.center_puts(message)
3
+ winsize = STDOUT.winsize
4
+
5
+ puts "\e[2J\e[H\e[3J\e[#{winsize[0] / 2}H"\
6
+ "#{?\s.*(winsize[1] / 2 - message.bytesize / 2)}#{message}"
7
+ end
8
+ end
@@ -79,17 +79,23 @@ module Termclock
79
79
 
80
80
  case Time.now.hour
81
81
  when 5...12
82
- "\u{1F304} #{braille_0} Good Morning #{braille_0} \u{1F304}"
82
+ _m = translate('Good Morning')
83
+ "\u{1F304} #{braille_0} #{_m} #{braille_0} \u{1F304}"
83
84
  when 12...16
84
- "\u26C5 #{braille_0} Good Afternoon #{braille_0} \u26C5"
85
+ _m = translate('Good Afternoon')
86
+ "\u26C5 #{braille_0} #{_m} #{braille_0} \u26C5"
85
87
  when 16...18
86
- "\u{1F307} #{braille_0} Good Evening #{braille_0} \u{1F307}"
88
+ _m = translate('Good Evening')
89
+ "\u{1F307} #{braille_0} #{_m} #{braille_0} \u{1F307}"
87
90
  when 18...20
88
- "\u{1F31F} #{braille_0} Good Evening #{braille_0} \u{1F31F}"
91
+ _m = translate('Good Evening')
92
+ "\u{1F31F} #{braille_0} #{_m} #{braille_0} \u{1F31F}"
89
93
  when 20...24
90
- "\u{1F303} #{braille_0} Good Night #{braille_0} \u{1F303}"
94
+ _m = translate('Good Night')
95
+ "\u{1F303} #{braille_0} #{_m} #{braille_0} \u{1F303}"
91
96
  else
92
- "\u{2728} #{braille_0} Good Night #{braille_0} \u{2728}"
97
+ _m = translate('Good Night')
98
+ "\u{2728} #{braille_0} #{_m} #{braille_0} \u{2728}"
93
99
  end
94
100
  }
95
101
 
@@ -143,7 +149,9 @@ module Termclock
143
149
  chop_message += 1
144
150
  message_counter -= 1
145
151
  message_align -= 1
146
- message.replace(message_temp[chop_message..-1])
152
+
153
+ _chopped = message_temp[chop_message..-1]
154
+ message.replace(_chopped) if _chopped
147
155
  end
148
156
  else
149
157
  chop_message = 0 unless chop_message == 0
@@ -159,7 +167,7 @@ module Termclock
159
167
  end
160
168
  end
161
169
 
162
- message_final = (message).rjust(message_align).gradient(
170
+ message_final = message.rjust(message_align).gradient(
163
171
  tc1, tc2, exclude_spaces: true, bold: bold, italic: italic
164
172
  )
165
173
  end
@@ -167,7 +175,18 @@ module Termclock
167
175
  info = system_info(width, tc1, tc2, bold, italic) if print_info
168
176
 
169
177
  if print_date
170
- date = time_now.strftime(date_format).center(width)
178
+ _date = time_now.strftime(date_format)
179
+
180
+ unless LANG == :en
181
+ _date = _date.split(/(\W)/).map { |x|
182
+ translate(
183
+ x,
184
+ breakword: !x[/[^0-9]/]
185
+ )
186
+ }.join
187
+ end
188
+
189
+ date = _date.center(width)
171
190
  .gradient(tc1, tc2, bold: bold, italic: italic, exclude_spaces: true)
172
191
  end
173
192
 
@@ -106,4 +106,8 @@ class String
106
106
 
107
107
  temp
108
108
  end
109
+
110
+ def camelize!
111
+ replace(split(SPACE).map(&:capitalize).join(SPACE))
112
+ end
109
113
  end
@@ -1,14 +1,17 @@
1
1
  module Termclock
2
- FILESYSTEM = if LS::FS.stat('/')[:blocks].to_i == 0
3
- ?.
2
+ FILESYSTEM, FILESYSTEM_LABEL = if LS::FS.stat('/')[:blocks].to_i == 0
3
+ _pwd = Dir.pwd
4
+ pwd = _pwd.length > 8 ? _pwd[0..5] + '...' : _pwd
5
+ [?..freeze, pwd]
4
6
  else
5
- ?/
7
+ [?/.freeze, ?/.freeze]
6
8
  end.freeze
7
9
 
8
10
  @@cpu_usage = 0
9
11
  @@cpu_usage_t = Thread.new { }.join
10
12
 
11
- @@current_net_usage = "\u{1F4CA} Curr. DL/UL:"
13
+ _tr = translate('Curr. DL/UL')
14
+ @@current_net_usage = "\u{1F4CA} #{_tr}:"
12
15
  @@current_net_usage_t = Thread.new { }.join
13
16
 
14
17
  class << self
@@ -16,9 +19,7 @@ module Termclock
16
19
  unless @@cpu_usage_t.alive?
17
20
  @@cpu_usage_t = Thread.new {
18
21
  _cpu_usage = LS::CPU.usage(0.25)
19
- _cpu_usage_i = _cpu_usage.to_i
20
-
21
- @@cpu_usage = "%0.2f" % _cpu_usage
22
+ @@cpu_usage = _cpu_usage ? "%0.2f".freeze % _cpu_usage : nil
22
23
  }
23
24
  end
24
25
 
@@ -26,14 +27,27 @@ module Termclock
26
27
  @@current_net_usage_t = Thread.new do
27
28
  _m = LS::Net.current_usage(0.25)
28
29
 
29
- _dl = LS::PrettifyBytes.convert_short_decimal(_m[:received])
30
- _ul = LS::PrettifyBytes.convert_short_decimal(_m[:transmitted])
30
+ _dl = _m[:received]
31
+ _ul = _m[:transmitted]
32
+
33
+ @@current_net_usage = if _dl && _ul
34
+ _tr = translate('Curr. DL/UL')
35
+ dl = LS::PrettifyBytes.convert_short_decimal(_dl)
36
+ ul = LS::PrettifyBytes.convert_short_decimal(_ul)
31
37
 
32
- @@current_net_usage = "\u{1F4CA} Curr. DL/UL: #{"%-9s" % _dl} | #{ "%9s" % _ul}"
38
+ "\u{1F4CA} #{_tr}: #{t!("%-9s" % dl)} | #{t!("%9s" % ul)}"
39
+ else
40
+ EMPTY
41
+ end
33
42
  end
34
43
  end
35
44
 
36
- cpu = "\u{1F9E0} CPU: #{"%6s" % @@cpu_usage}% (#{LS::CPU.count_online}/#{LS::CPU.count})"
45
+ cpu = if @@cpu_usage
46
+ _tr = translate('CPU')
47
+ "\u{1F9E0} #{_tr}: #{t!("%6s" % @@cpu_usage)}% (#{t!(LS::CPU.count_online)}/#{t!(LS::CPU.count)})"
48
+ else
49
+ EMPTY
50
+ end
37
51
 
38
52
  battery = if LS::Battery.present?
39
53
  stat = LS::Battery.stat
@@ -47,48 +61,68 @@ module Termclock
47
61
 
48
62
  lives = "\u2665 ".freeze.*(charge.fdiv(20).ceil).chop
49
63
 
50
- "#{emoji} Battery: #{charge}% #{lives} (#{plug}#{stat[:status]})"
64
+ _tr = translate('Battery')
65
+ "#{emoji} #{_tr}: #{t!(charge)}% #{lives} (#{plug}#{translate(stat[:status])})"
51
66
  else
52
67
  EMPTY
53
68
  end
54
69
 
55
- user = "\u{1F481} User: #{LS::User.get_current_user.capitalize}"
56
- hostname = "\u{1F4BB} Hostname: #{LS::OS.hostname}"
70
+ _tr = translate('User')
71
+ user = "\u{1F481} #{_tr}: #{LS::User.get_current_user.capitalize}"
72
+
73
+ _tr = translate('Hostname')
74
+ hostname = "\u{1F4BB} #{_tr}: #{LS::OS.hostname}"
57
75
 
76
+ _tr = translate('IP Addr')
58
77
  _m = LS::Net.total_bytes
59
- ip = "\u{1F30F} IP Addr: #{LS::Net.ipv4_private}"
78
+ ip = "\u{1F30F} #{_tr}: #{translate(LS::Net.ipv4_private, b: true)}"
79
+
80
+ _received = _m[:received]
81
+ _transmitted = _m[:transmitted]
82
+
83
+ _tr = translate('Totl. DL/UL')
84
+ tot_received = _received ? "\u{1F4C8} #{_tr}: #{t!('%-9s'.freeze % LS::PrettifyBytes.convert_short_decimal(_m[:received]))}" : nil
85
+ tot_transmitted = _transmitted ? " | #{t!('%9s'.freeze % LS::PrettifyBytes.convert_short_decimal(_transmitted))}" : nil
60
86
 
61
- net_usage = "\u{1F4C8} Totl. DL/UL: #{"%-9s" % LS::PrettifyBytes.convert_short_decimal(_m[:received])}"\
62
- " | #{"%9s" % LS::PrettifyBytes.convert_short_decimal(_m[:transmitted])}"
87
+ net_usage = if tot_received && tot_transmitted
88
+ tot_received + tot_transmitted
89
+ else
90
+ EMPTY
91
+ end
63
92
 
64
93
  _m = LS::Memory.stat
65
94
  _m.default = 0
66
95
 
67
- memory = "\u{1F3B0} Mem: #{LS::PrettifyBytes.convert_short_decimal(_m[:used] * 1000)}"\
68
- " / #{LS::PrettifyBytes.convert_short_decimal(_m[:total] * 1000)}"\
69
- " (#{"%.2f" % _m[:percent_used]}%)"
96
+ _tr = translate('Mem')
97
+ memory = "\u{1F3B0} #{_tr}: #{t!(LS::PrettifyBytes.convert_short_decimal(_m[:used] * 1000))}"\
98
+ " / #{t!(LS::PrettifyBytes.convert_short_decimal(_m[:total] * 1000))}"\
99
+ " (#{t!("%.2f" % _m[:percent_used])}%)"
70
100
 
71
101
  _m = LS::Swap.stat
72
102
  _m.default = 0
73
103
 
74
- swap = "\u{1F300} Swap: #{LS::PrettifyBytes.convert_short_decimal(_m[:used] * 1000)}"\
75
- " / #{LS::PrettifyBytes.convert_short_decimal(_m[:total] * 1000)}"\
76
- " (#{"%.2f" % _m[:percent_used]}%)"
104
+ _tr = translate('Swap')
105
+ swap = "\u{1F300} #{_tr}: #{t!(LS::PrettifyBytes.convert_short_decimal(_m[:used] * 1000))}"\
106
+ " / #{t!(LS::PrettifyBytes.convert_short_decimal(_m[:total] * 1000))}"\
107
+ " (#{t!("%.2f" % _m[:percent_used])}%)"
77
108
 
78
109
  _m = LS::Filesystem.stat(FILESYSTEM)
79
110
  _m.default = 0
80
111
 
81
- fs = "\u{1F4BD} FS: #{LS::PrettifyBytes.convert_short_decimal(_m[:used])}"\
82
- " / #{LS::PrettifyBytes.convert_short_decimal(_m[:total])}"\
83
- " (#{"%.2f" % _m[:used].*(100).fdiv(_m[:total]).round(2)}%)"
112
+ _tr = translate('FS')
113
+ fs = "\u{1F4BD} #{_tr} (#{FILESYSTEM_LABEL}): #{t!(LS::PrettifyBytes.convert_short_decimal(_m[:used]))}"\
114
+ " / #{t!(LS::PrettifyBytes.convert_short_decimal(_m[:total]))}"\
115
+ " (#{t!("%.2f" % _m[:used].*(100).fdiv(_m[:total]).round(2))}%)"
84
116
 
85
117
  pt = LS::Process.types.values
86
118
 
87
119
  process = if pt.length > 0
88
- "\u{1F3ED} Process: T:#{"%4s" % pt.length}|"\
89
- "R:#{"%3s" % pt.count(:running)}|"\
90
- "S:#{"%3s" % pt.count(:sleeping)}|"\
91
- "I:#{"%3s" % pt.count(:idle)}"
120
+ _tr = translate('Process')
121
+
122
+ "\u{1F3ED} #{_tr}: T:#{t!("%4s" % pt.length)}|"\
123
+ "R:#{"%3s" % t!(pt.count(:running))}|"\
124
+ "S:#{"%3s" % t!(pt.count(:sleeping))}|"\
125
+ "I:#{"%3s" % t!(pt.count(:idle))}"
92
126
  else
93
127
  EMPTY
94
128
  end
@@ -99,21 +133,37 @@ module Termclock
99
133
  EMPTY
100
134
  end
101
135
 
102
- @@os ||= "\u{1F427} Distrib: #{LS::OS.distribution} #{LS::OS.machine}#{@@os_v}"
136
+ _tr = translate('Distrib')
137
+ @@os ||= "\u{1F427} #{_tr}: #{LS::OS.distribution} #{LS::OS.machine}#{@@os_v}"
138
+
139
+ _temp_uptime = LS::OS.uptime
140
+
141
+ _uptime = unless _temp_uptime.empty?
142
+ _temp_uptime
143
+ else
144
+ _u = LS::OS.uptime_i
145
+ {
146
+ hour: _u / 3600,
147
+ minute: _u % 3600 / 60,
148
+ second: _u % 3600 % 60,
149
+ jiffy: 0
150
+ }
151
+ end
103
152
 
104
- _uptime = LS::OS.uptime
105
153
  _second = _uptime[:second]
106
154
  _second_i = _second.to_i
107
155
 
108
156
  hour = "%02d" % _uptime[:hour]
109
157
  minute = "%02d" % _uptime[:minute]
110
- second = "%02d" % _second_i
111
- ms = "%02d" % _second.-(_second_i).*(100)
158
+ second = "%02d" % _uptime[:second]
159
+ jiffy = "%02d" % _uptime[:jiffy]
112
160
 
113
- uptime = "\u{1F3A1} Uptime: #{hour}:#{minute}:#{second}:#{ms} (#{LS::OS.uptime_i}s)"
161
+ _tr = translate('Uptime')
162
+ uptime = "\u{1F3A1} #{_tr}: #{t! hour}:#{t! minute}:#{t! second}:#{t! jiffy} (#{t! LS::OS.uptime_i}s)"
114
163
 
164
+ _tr = translate('LoadAvg')
115
165
  _loadavg = LS::Sysinfo.loads.map! { |x| "%.2f" % x }
116
- loadavg = "\u{1F525} LoadAvg: 1m #{_loadavg[0]}|5m #{_loadavg[1]}|15m #{_loadavg[2]}"
166
+ loadavg = "\u{1F525} #{_tr}: 1m #{translate(_loadavg[0], b: true)}|5m #{translate(_loadavg[1], b: true)}|15m #{translate(_loadavg[2], b: true)}"
117
167
 
118
168
  all_info = []
119
169
  max_l = 0
@@ -153,7 +203,7 @@ module Termclock
153
203
  padding +
154
204
  y_to_s.gradient(tc1, tc2, bold: bold, italic: italic)
155
205
 
156
- len = str.chars.map { |x|
206
+ len = str.grapheme_clusters.map { |x|
157
207
  _x = x.bytesize./(2)
158
208
  _x == 0 ? 1 : _x
159
209
  }.sum
@@ -0,0 +1,61 @@
1
+ module Termclock
2
+ def self.translate(keyword, breakword: nil, b: nil)
3
+ return keyword if LANG == :en
4
+ characters = keyword.grapheme_clusters
5
+
6
+ b = breakword if breakword && !b
7
+ breakword = b if b && !breakword
8
+
9
+ upcased = characters.all? { |x| x.ord.between?(65, 90) }
10
+ downcased = upcased ? false : characters.all? { |x| x.ord.between?(97, 122) }
11
+ capitalized = if (upcased || downcased)
12
+ false
13
+ else
14
+ characters[0].ord.between?(65, 90) &&
15
+ characters.drop(1).all? { |x| x.ord.between?(97, 122) }
16
+ end
17
+
18
+ camelized = if (upcased || downcased || capitalized)
19
+ false
20
+ else
21
+ keyword.split(?\s.freeze).all? { |x|
22
+ x[0].ord.between?(65, 90) && x.chars.drop(1).all? { |y| y.ord.between?(97, 122) }
23
+ }
24
+ end
25
+
26
+ if breakword
27
+ return characters.map { |x|
28
+ tr = TRANSLATIONS[x]
29
+
30
+ if !tr
31
+ tr = TRANSLATIONS[x.downcase]
32
+ end
33
+
34
+ tr.upcase! if tr && upcased
35
+ tr.downcase! if tr && downcased
36
+ tr.capitalize! if tr && capitalized
37
+ tr.camelize! if tr && camelized
38
+
39
+ tr ? tr : x
40
+ }.join
41
+ end
42
+
43
+ tr = TRANSLATIONS[keyword]
44
+
45
+ if !tr
46
+ tr = TRANSLATIONS[keyword.downcase]
47
+
48
+ tr.upcase! if tr && upcased
49
+ tr.downcase! if tr && downcased
50
+ tr.capitalize! if tr && capitalized
51
+ tr.camelize! if tr && camelized
52
+ end
53
+
54
+ tr ? tr : keyword
55
+ end
56
+
57
+ def self.t!(keyword, breakword: true, b: true)
58
+ return keyword if LANG == :en
59
+ translate(keyword.to_s, breakword: true)
60
+ end
61
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Termclock
4
- VERSION = "0.5.1"
4
+ VERSION = "1.0.2"
5
5
  end
@@ -0,0 +1,82 @@
1
+ {
2
+ // Numerals
3
+ "0": "০",
4
+ "1": "১",
5
+ "2": "২",
6
+ "3": "৩",
7
+ "4": "৪",
8
+ "5": "৫",
9
+ "6": "৬",
10
+ "7": "৭",
11
+ "8": "৮",
12
+ "9": "৯",
13
+
14
+ // Days
15
+ "monday": "সোমবার",
16
+ "tuesday": "মঙ্গলবার",
17
+ "wednesday": "বুধবার",
18
+ "thursday": "বৃহস্পতিবার",
19
+ "friday": "শুক্রবার",
20
+ "saturday": "শনিবার",
21
+ "sunday": "রবিবার",
22
+
23
+ "mon": "সোমবার",
24
+ "tue": "মঙ্গলবার",
25
+ "wed": "বুধবার",
26
+ "thu": "বৃহস্পতিবার",
27
+ "fri": "শুক্রবার",
28
+ "sat": "শনিবার",
29
+ "sun": "রবিবার",
30
+
31
+ // Months
32
+ "jan": "জানুয়ারী",
33
+ "feb": "ফেব্রুয়ারী",
34
+ "mar": "মার্চ",
35
+ "apr": "এপ্রিল",
36
+ "may": "মে",
37
+ "jun": "জুন",
38
+ "jul": "জুলাই",
39
+ "aug": "আগস্ট",
40
+ "sep": "সেপ্টেম্বর",
41
+ "oct": "অক্টোবর",
42
+ "nov": "নভেম্বর",
43
+ "dec": "ডিসেম্বর",
44
+
45
+ "january": "জানুয়ারী",
46
+ "february": "ফেব্রুয়ারী",
47
+ "march": "মার্চ",
48
+ "april": "এপ্রিল",
49
+ "june": "জুন",
50
+ "july": "জুলাই",
51
+ "august": "আগস্ট",
52
+ "september": "সেপ্টেম্বর",
53
+ "october": "অক্টোবর",
54
+ "november": "নভেম্বর",
55
+ "december": "ডিসেম্বর",
56
+
57
+ // Messages
58
+ "good morning": "সুপ্রভাত",
59
+ "good afternoon": "শুভ অপরাহ্ন",
60
+ "good evening": "শুভ সন্ধ্যা",
61
+ "good night": "শুভ রাত্রি",
62
+
63
+ // System info
64
+ "User": "ব্যবহারকারী",
65
+ "Distrib": "বিতরণ",
66
+ "Swap": "সোয়াপ",
67
+ "CPU": "সিপিইউ",
68
+ "Mem": "মেম",
69
+ "FS": "ফাইল সিস.",
70
+ "Uptime": "আপটাইম",
71
+ "Hostname": "হোস্টনেম",
72
+ "Battery": "ব্যাটারী",
73
+ "Ip Addr": "আইপি",
74
+ "Curr. DL/UL": "বর্তমান DL/UL",
75
+ "Totl. DL/UL": "মোট DL/UL",
76
+ "Process": "প্রসেস",
77
+ "LoadAvg": "গড় লোড",
78
+ "Discharging": "ডিসচারজিং",
79
+ "Charging": "চার্জিং",
80
+ "Full": "সম্পূর্ণ",
81
+ "Unknown": "অজানা"
82
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ // Days
3
+ "monday": "lunes",
4
+ "tuesday": "martes",
5
+ "wednesday": "miércoles",
6
+ "thursday": "jueves",
7
+ "friday": "viernes",
8
+ "saturday": "sábado",
9
+ "sunday": "dimanche",
10
+
11
+ "mon": "lunes",
12
+ "tue": "martes",
13
+ "wed": "miércoles",
14
+ "thu": "jueves",
15
+ "fri": "viernes",
16
+ "sat": "sábado",
17
+ "sun": "dimanche",
18
+
19
+ // Months
20
+ "jan": "janvier",
21
+ "feb": "février",
22
+ "mar": "mars",
23
+ "apr": "avril",
24
+ "jun": "juin",
25
+ "jul": "juillet",
26
+ "aug": "août",
27
+ "sep": "septembre",
28
+ "oct": "octobre",
29
+ "nov": "novembre",
30
+ "dec": "décembre",
31
+
32
+ "january": "janvier",
33
+ "february": "février",
34
+ "march": "mars",
35
+ "april": "avril",
36
+ "may": "mai",
37
+ "june": "juin",
38
+ "july": "juillet",
39
+ "august": "août",
40
+ "september": "septembre",
41
+ "october": "octobre",
42
+ "november": "novembre",
43
+ "december": "décembre",
44
+
45
+ // Messages
46
+ "good morning": "buenos días",
47
+ "good afternoon": "buenas tardes",
48
+ "good evening": "buenas noches",
49
+ "good night": "buenas noches",
50
+
51
+ // System info
52
+ "User": "Usuario",
53
+ "Distrib": "Distribución",
54
+ "Uptime": "Tiempo de actividad",
55
+ "Hostname": "Nombre de host",
56
+ "Battery": "Batería",
57
+ "Curr. DL/UL": "Actual. DL/UL",
58
+ "Totl. DL/UL": "Total DL/UL",
59
+ "Process": "Proceso",
60
+ "LoadAvg": "Carga promedio",
61
+ "Discharging": "Descarga",
62
+ "Charging": "Cargando",
63
+ "Full": "Lleno",
64
+ "Unknown": "Desconocida"
65
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ // Days
3
+ "monday": "lundi",
4
+ "tuesday": "mardi",
5
+ "wednesday": "mercredi",
6
+ "thursday": "jeudi",
7
+ "friday": "vendredi",
8
+ "saturday": "samedi",
9
+ "sunday": "dimanche",
10
+
11
+ "mon": "lun",
12
+ "tue": "mar",
13
+ "wed": "mer",
14
+ "thu": "jeu",
15
+ "fri": "ven",
16
+ "sat": "sam",
17
+ "sun": "dim",
18
+
19
+ // Months
20
+ "jan": "jav",
21
+ "feb": "fev",
22
+ "mar": "mars",
23
+ "apr": "avr",
24
+ "may": "mai",
25
+ "jun": "juin",
26
+ "jul": "juil",
27
+ "aug": "août",
28
+ "sep": "sep",
29
+ "oct": "oct",
30
+ "nov": "nov",
31
+ "dec": "dec",
32
+
33
+ "january": "janvier",
34
+ "february": "février",
35
+ "march": "mars",
36
+ "april": "avril",
37
+ "june": "juin",
38
+ "july": "juillet",
39
+ "august": "août",
40
+ "september": "septembre",
41
+ "october": "octobre",
42
+ "november": "novembre",
43
+ "december": "décembre",
44
+
45
+ // Messages
46
+ "good morning": "bonjour",
47
+ "good afternoon": "bonne après-midi",
48
+ "good evening": "bonne soirée",
49
+ "good night": "bonne nuit",
50
+
51
+ // System info
52
+ "User": "Utilisateur·ice",
53
+ // Utilisateur : male, Utilisatrice : female, Utilisateur·ice : a mesh of both to say it could be either
54
+ "Uptime": "Temps de fonctionnement",
55
+ "Hostname": "Hôte",
56
+ "Battery": "Batterie",
57
+ "Curr. DL/UL": "DL/UL Actuel",
58
+ "Totl. DL/UL": "DL/UL Total ",
59
+ "Process": "Processus",
60
+ "LoadAvg": "Charge Moyenne",
61
+ "Discharging": "En décharge",
62
+ "Charging": "En charge",
63
+ "Full": "Pleine",
64
+ "Unknown": "inconnue"
65
+ }
@@ -0,0 +1,81 @@
1
+ {
2
+ // Numerals
3
+ "0": "०",
4
+ "1": "१",
5
+ "2": "२",
6
+ "3": "३",
7
+ "4": "४",
8
+ "5": "५",
9
+ "6": "६",
10
+ "7": "७",
11
+ "8": "८",
12
+ "9": "९",
13
+
14
+ // Days
15
+ "monday": "सोमवार",
16
+ "tuesday": "मंगलवार",
17
+ "wednesday": "बुधवार",
18
+ "thursday": "गुरूवार",
19
+ "friday": "शुक्रवार",
20
+ "saturday": "शनिवार",
21
+ "sunday": "रविवार",
22
+
23
+ "mon": "सोमवार",
24
+ "tue": "मंगलवार",
25
+ "wed": "बुधवार",
26
+ "thu": "गुरूवार",
27
+ "fri": "शुक्रवार",
28
+ "sat": "शनिवार",
29
+ "sun": "रविवार",
30
+
31
+ // Months
32
+ "jan": "जनवरी",
33
+ "feb": "फ़रवरी",
34
+ "mar": "मार्च",
35
+ "apr": "अप्रैल",
36
+ "jun": "जून",
37
+ "jul": "जुलाई",
38
+ "aug": "अगस्त",
39
+ "sep": "सितंबर",
40
+ "oct": "अक्टूबर",
41
+ "nov": "नवंबर",
42
+ "dec": "दिसंबर",
43
+
44
+ "january": "जनवरी",
45
+ "february": "फ़रवरी",
46
+ "march": "मार्च",
47
+ "april": "अप्रैल",
48
+ "may": "मई",
49
+ "june": "जून",
50
+ "july": "जुलाई",
51
+ "august": "अगस्त",
52
+ "september": "सितंबर",
53
+ "october": "अक्टूबर",
54
+ "november": "नवंबर",
55
+ "december": "दिसंबर",
56
+
57
+ // Messages
58
+ "good morning": "शुभ प्रभात",
59
+ "good afternoon": "शुभ दोपहर",
60
+ "good evening": "सुसंध्या",
61
+ "good night": "शुभ रात्रि",
62
+
63
+ // System info
64
+ "User": "उपयोगकर्ता",
65
+ "Distrib": "वितरण",
66
+ "Swap": "स्वैप",
67
+ "CPU": "सी पी यू",
68
+ "Mem": "मेम",
69
+ "FS": "फाइल सीस ",
70
+ "Uptime": "अपटाइम",
71
+ "Hostname": "होस्टनाम",
72
+ "Battery": "बैटरी ",
73
+ "Curr. DL/UL": "वर्तमान DL/UL",
74
+ "Totl. DL/UL": "समस्त DL/UL",
75
+ "Process": "प्रोसेस",
76
+ "LoadAvg": "औसत लोड",
77
+ "Discharging": "डिस्चार्जिंग",
78
+ "Charging": "चार्जिंग",
79
+ "Full": "परिपूर्ण",
80
+ "Unknown": "अनजान"
81
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ // Days
3
+ "monday": "lunedi",
4
+ "tuesday": "martedì",
5
+ "wednesday": "mercoledì",
6
+ "thursday": "giovedì",
7
+ "friday": "venerdì",
8
+ "saturday": "sabato",
9
+ "sunday": "domenica",
10
+
11
+ "mon": "lun",
12
+ "tue": "mar",
13
+ "wed": "mer",
14
+ "thu": "gio",
15
+ "fri": "ven",
16
+ "sat": "sab",
17
+ "sun": "do",
18
+
19
+ // Months
20
+ "jan": "gennaio",
21
+ "feb": "febbraio",
22
+ "mar": "marzo",
23
+ "apr": "aprile",
24
+ "may": "maggio",
25
+ "jun": "giugno",
26
+ "jul": "luglio",
27
+ "aug": "agosto",
28
+ "sep": "settembre",
29
+ "oct": "ottobre",
30
+ "nov": "novembre",
31
+ "dec": "dicembre",
32
+
33
+ "january": "gennaio",
34
+ "february": "febbraio",
35
+ "march": "marzo",
36
+ "april": "aprile",
37
+ "june": "giugno",
38
+ "july": "luglio",
39
+ "august": "agosto",
40
+ "september": "settembre",
41
+ "october": "ottobre",
42
+ "november": "novembre",
43
+ "december": "dicembre",
44
+
45
+ // Messages
46
+ "good morning": "buongiorno",
47
+ "good afternoon": "buon pomeriggio",
48
+ "good evening": "buonasera",
49
+ "good night": "buona Notte",
50
+
51
+ // System info
52
+ "User": "Utente",
53
+ "Distrib": "Distribuzione",
54
+ "Hostname": "Nome host",
55
+ "Battery": "batteria",
56
+ "Curr. DL/UL": "Attuale DL/UL",
57
+ "Totl. DL/UL": "Totale DL/UL",
58
+ "Process": "Processi",
59
+ "LoadAvg": "Carico Medio",
60
+ "Discharging": "Scaricando",
61
+ "Charging": "In carica",
62
+ "Full": "Piena",
63
+ "Unknown": "Sconosciuta"
64
+ }
@@ -0,0 +1,67 @@
1
+ {
2
+ // Days
3
+ "monday": "Понедельник",
4
+ "tuesday": "Вторник",
5
+ "wednesday": "Среда",
6
+ "thursday": "Четверг",
7
+ "friday": "Пятница",
8
+ "saturday": "Суббота",
9
+ "sunday": "Воскресенье",
10
+
11
+ "mon": "Понедельник",
12
+ "tue": "Вторник",
13
+ "wed": "Среда",
14
+ "thu": "Четверг",
15
+ "fri": "Пятница",
16
+ "sat": "Суббота",
17
+ "sun": "Воскресенье",
18
+
19
+ // Months
20
+ "jan": "Январь",
21
+ "feb": "Февраль",
22
+ "mar": "Март",
23
+ "apr": "Апрель",
24
+ "may": "Май",
25
+ "jun": "Июнь",
26
+ "jul": "Июль",
27
+ "aug": "Август",
28
+ "sep": "Сентябрь",
29
+ "oct": "Октябрь",
30
+ "nov": "Ноябрь",
31
+ "dec": "Декабрь",
32
+
33
+ "january": "Январь",
34
+ "february": "Февраль",
35
+ "march": "Март",
36
+ "april": "Апрель",
37
+ "june": "Июнь",
38
+ "july": "Июль",
39
+ "august": "Август",
40
+ "september": "Сентябрь",
41
+ "october": "Октябрь",
42
+ "november": "Ноябрь",
43
+ "december": "Декабрь",
44
+
45
+ // Messages
46
+ "good morning": "доброе утро",
47
+ "good afternoon": "Добрый день",
48
+ "good evening": "Добрый вечер",
49
+ "good night": "спокойной ночи",
50
+
51
+ // System info
52
+ "User": "Пользователь",
53
+ "Distrib": "распределение",
54
+ "Swap": "свап",
55
+ "CPU": "Процессор",
56
+ "Mem": "мем",
57
+ "Hostname": "имя хоста",
58
+ "Battery": "аккумулятор",
59
+ "Curr. DL/UL": "теперешний дл/ул",
60
+ "Totl. DL/UL": "общее дл/ул",
61
+ "Process": "Процесс",
62
+ "LoadAvg": "средняя нагрузка",
63
+ "Discharging": "Разрядка",
64
+ "Charging": "Зарядка ",
65
+ "Full": "Полный",
66
+ "Unknown": "Неизвестный"
67
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: termclock
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sourav Goswami
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-24 00:00:00.000000000 Z
11
+ date: 2021-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: linux_stat
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.5.1
19
+ version: 2.3.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 1.5.1
26
+ version: 2.3.0
27
27
  description: A clock for Linux VTE
28
28
  email:
29
29
  - souravgoswami@protonmail.com
@@ -34,12 +34,20 @@ extra_rdoc_files: []
34
34
  files:
35
35
  - exe/termclock
36
36
  - lib/termclock.rb
37
+ - lib/termclock/center_puts.rb
37
38
  - lib/termclock/hex2rgb.rb
38
39
  - lib/termclock/parse_characters.rb
39
40
  - lib/termclock/start.rb
40
41
  - lib/termclock/string.rb
41
42
  - lib/termclock/system_info.rb
43
+ - lib/termclock/translate.rb
42
44
  - lib/termclock/version.rb
45
+ - lib/translations/bn.json
46
+ - lib/translations/es.json
47
+ - lib/translations/fr.json
48
+ - lib/translations/hi.json
49
+ - lib/translations/it.json
50
+ - lib/translations/ru.json
43
51
  homepage: https://github.com/souravgoswami/termclock
44
52
  licenses:
45
53
  - MIT
@@ -59,7 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
59
67
  - !ruby/object:Gem::Version
60
68
  version: '0'
61
69
  requirements: []
62
- rubygems_version: 3.1.4
70
+ rubygems_version: 3.2.21
63
71
  signing_key:
64
72
  specification_version: 4
65
73
  summary: A clock for Linux VTE