termclock 0.6.0 → 1.0.1

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: 3fcea2cc01afe31bc00a62ed5438657612e909bb4db2510b56a2371a5fa4ecd1
4
- data.tar.gz: 662d05beb745b1e3fc046f6ddfc2b53f3781dd8dc06efd74228321390bdc5d1f
3
+ metadata.gz: c3d9f317dc409da47554e00d3522def8011e66923ce1f7b437994bef30975008
4
+ data.tar.gz: e6f12e38d1410a46a7b5009480593ec341017e45c2b806cc53e1fab2a7ccef52
5
5
  SHA512:
6
- metadata.gz: d57447038d164806c56090fd13716100612bc04d946fd5be2cdefc7ee32d683ff06171af1ef33df73541d207b9244c6e47e93a4b674b82b40165b78d2ca114e0
7
- data.tar.gz: e9044dd6e002d119c260119ac2e74d2ed770371448eca3100d88f147f7c0246b6f8cdd075736058f72dc843ae5ca78d7d10b64f834c86ba5e56d313b447aac9f
6
+ metadata.gz: 80d16665fbbfbde6765c382379849c029533649c7f10aed6bdc2c25a21c96131f49da2464ad3225a78759662feb6129e43197f57f0f73f7f37db012b2e8f5945
7
+ data.tar.gz: a8dbe4be51d37ff3fd964ee729bc92ee414026bec1ac4ee711b547dfa5d6ae083997ad277525e6bb805db208a79a43c386b944a59e1f46e48e28043ce7a5e76d
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
@@ -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
@@ -10,7 +10,8 @@ module Termclock
10
10
  @@cpu_usage = 0
11
11
  @@cpu_usage_t = Thread.new { }.join
12
12
 
13
- @@current_net_usage = "\u{1F4CA} Curr. DL/UL:"
13
+ _tr = translate('Curr. DL/UL')
14
+ @@current_net_usage = "\u{1F4CA} #{_tr}:"
14
15
  @@current_net_usage_t = Thread.new { }.join
15
16
 
16
17
  class << self
@@ -30,10 +31,11 @@ module Termclock
30
31
  _ul = _m[:transmitted]
31
32
 
32
33
  @@current_net_usage = if _dl && _ul
34
+ _tr = translate('Curr. DL/UL')
33
35
  dl = LS::PrettifyBytes.convert_short_decimal(_dl)
34
36
  ul = LS::PrettifyBytes.convert_short_decimal(_ul)
35
37
 
36
- "\u{1F4CA} Curr. DL/UL: #{"%-9s" % dl} | #{ "%9s" % ul}"
38
+ "\u{1F4CA} #{_tr}: #{t!("%-9s" % dl)} | #{t!("%9s" % ul)}"
37
39
  else
38
40
  EMPTY
39
41
  end
@@ -41,7 +43,8 @@ module Termclock
41
43
  end
42
44
 
43
45
  cpu = if @@cpu_usage
44
- "\u{1F9E0} CPU: #{"%6s" % @@cpu_usage}% (#{LS::CPU.count_online}/#{LS::CPU.count})"
46
+ _tr = translate('CPU')
47
+ "\u{1F9E0} #{_tr}: #{t!("%6s" % @@cpu_usage)}% (#{t!(LS::CPU.count_online)}/#{t!(LS::CPU.count)})"
45
48
  else
46
49
  EMPTY
47
50
  end
@@ -58,22 +61,28 @@ module Termclock
58
61
 
59
62
  lives = "\u2665 ".freeze.*(charge.fdiv(20).ceil).chop
60
63
 
61
- "#{emoji} Battery: #{charge}% #{lives} (#{plug}#{stat[:status]})"
64
+ _tr = translate('Battery')
65
+ "#{emoji} #{_tr}: #{t!(charge.to_s)}% #{lives} (#{plug}#{stat[:status]})"
62
66
  else
63
67
  EMPTY
64
68
  end
65
69
 
66
- user = "\u{1F481} User: #{LS::User.get_current_user.capitalize}"
67
- hostname = "\u{1F4BB} Hostname: #{LS::OS.hostname}"
70
+ _tr = translate('User')
71
+ user = "\u{1F481} #{_tr}: #{LS::User.get_current_user.capitalize}"
68
72
 
73
+ _tr = translate('Hostname')
74
+ hostname = "\u{1F4BB} #{_tr}: #{LS::OS.hostname}"
75
+
76
+ _tr = translate('IP Addr')
69
77
  _m = LS::Net.total_bytes
70
- ip = "\u{1F30F} IP Addr: #{LS::Net.ipv4_private}"
78
+ ip = "\u{1F30F} #{_tr}: #{translate(LS::Net.ipv4_private, b: true)}"
71
79
 
72
80
  _received = _m[:received]
73
81
  _transmitted = _m[:transmitted]
74
82
 
75
- tot_received = _received ? "\u{1F4C8} Totl. DL/UL: #{'%-9s'.freeze % LS::PrettifyBytes.convert_short_decimal(_m[:received])}" : nil
76
- tot_transmitted = _transmitted ? " | #{'%9s'.freeze % LS::PrettifyBytes.convert_short_decimal(_transmitted)}" : nil
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
77
86
 
78
87
  net_usage = if tot_received && tot_transmitted
79
88
  tot_received + tot_transmitted
@@ -84,31 +93,36 @@ module Termclock
84
93
  _m = LS::Memory.stat
85
94
  _m.default = 0
86
95
 
87
- memory = "\u{1F3B0} Mem: #{LS::PrettifyBytes.convert_short_decimal(_m[:used] * 1000)}"\
88
- " / #{LS::PrettifyBytes.convert_short_decimal(_m[:total] * 1000)}"\
89
- " (#{"%.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])}%)"
90
100
 
91
101
  _m = LS::Swap.stat
92
102
  _m.default = 0
93
103
 
94
- swap = "\u{1F300} Swap: #{LS::PrettifyBytes.convert_short_decimal(_m[:used] * 1000)}"\
95
- " / #{LS::PrettifyBytes.convert_short_decimal(_m[:total] * 1000)}"\
96
- " (#{"%.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])}%)"
97
108
 
98
109
  _m = LS::Filesystem.stat(FILESYSTEM)
99
110
  _m.default = 0
100
111
 
101
- fs = "\u{1F4BD} FS (#{FILESYSTEM_LABEL}): #{LS::PrettifyBytes.convert_short_decimal(_m[:used])}"\
102
- " / #{LS::PrettifyBytes.convert_short_decimal(_m[:total])}"\
103
- " (#{"%.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))}%)"
104
116
 
105
117
  pt = LS::Process.types.values
106
118
 
107
119
  process = if pt.length > 0
108
- "\u{1F3ED} Process: T:#{"%4s" % pt.length}|"\
109
- "R:#{"%3s" % pt.count(:running)}|"\
110
- "S:#{"%3s" % pt.count(:sleeping)}|"\
111
- "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))}"
112
126
  else
113
127
  EMPTY
114
128
  end
@@ -119,7 +133,8 @@ module Termclock
119
133
  EMPTY
120
134
  end
121
135
 
122
- @@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}"
123
138
 
124
139
  _temp_uptime = LS::OS.uptime
125
140
 
@@ -143,10 +158,12 @@ module Termclock
143
158
  second = "%02d" % _uptime[:second]
144
159
  jiffy = "%02d" % _uptime[:jiffy]
145
160
 
146
- uptime = "\u{1F3A1} Uptime: #{hour}:#{minute}:#{second}:#{jiffy} (#{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)"
147
163
 
164
+ _tr = translate('LoadAvg')
148
165
  _loadavg = LS::Sysinfo.loads.map! { |x| "%.2f" % x }
149
- 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)}"
150
167
 
151
168
  all_info = []
152
169
  max_l = 0
@@ -186,7 +203,7 @@ module Termclock
186
203
  padding +
187
204
  y_to_s.gradient(tc1, tc2, bold: bold, italic: italic)
188
205
 
189
- len = str.chars.map { |x|
206
+ len = str.grapheme_clusters.map { |x|
190
207
  _x = x.bytesize./(2)
191
208
  _x == 0 ? 1 : _x
192
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.6.0"
4
+ VERSION = "1.0.1"
5
5
  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,78 @@
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
+ }
@@ -0,0 +1,61 @@
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
+ }
@@ -0,0 +1,61 @@
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
+ }
@@ -0,0 +1,77 @@
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
+ }
@@ -0,0 +1,60 @@
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
+ }
@@ -0,0 +1,63 @@
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
+ }
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.6.0
4
+ version: 1.0.1
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-03-09 00:00:00.000000000 Z
11
+ date: 2021-07-04 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: 2.2.2
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: 2.2.2
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.2.13
70
+ rubygems_version: 3.2.21
63
71
  signing_key:
64
72
  specification_version: 4
65
73
  summary: A clock for Linux VTE