termclock 0.6.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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