roundhouse-x 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.travis.yml +16 -0
  4. data/3.0-Upgrade.md +70 -0
  5. data/Changes.md +1127 -0
  6. data/Gemfile +27 -0
  7. data/LICENSE +7 -0
  8. data/README.md +52 -0
  9. data/Rakefile +9 -0
  10. data/bin/roundhouse +19 -0
  11. data/bin/roundhousectl +93 -0
  12. data/lib/generators/roundhouse/templates/worker.rb.erb +9 -0
  13. data/lib/generators/roundhouse/templates/worker_spec.rb.erb +6 -0
  14. data/lib/generators/roundhouse/templates/worker_test.rb.erb +8 -0
  15. data/lib/generators/roundhouse/worker_generator.rb +49 -0
  16. data/lib/roundhouse/actor.rb +39 -0
  17. data/lib/roundhouse/api.rb +859 -0
  18. data/lib/roundhouse/cli.rb +396 -0
  19. data/lib/roundhouse/client.rb +210 -0
  20. data/lib/roundhouse/core_ext.rb +105 -0
  21. data/lib/roundhouse/exception_handler.rb +30 -0
  22. data/lib/roundhouse/fetch.rb +154 -0
  23. data/lib/roundhouse/launcher.rb +98 -0
  24. data/lib/roundhouse/logging.rb +104 -0
  25. data/lib/roundhouse/manager.rb +236 -0
  26. data/lib/roundhouse/middleware/chain.rb +149 -0
  27. data/lib/roundhouse/middleware/i18n.rb +41 -0
  28. data/lib/roundhouse/middleware/server/active_record.rb +13 -0
  29. data/lib/roundhouse/middleware/server/logging.rb +40 -0
  30. data/lib/roundhouse/middleware/server/retry_jobs.rb +206 -0
  31. data/lib/roundhouse/monitor.rb +124 -0
  32. data/lib/roundhouse/paginator.rb +42 -0
  33. data/lib/roundhouse/processor.rb +159 -0
  34. data/lib/roundhouse/rails.rb +24 -0
  35. data/lib/roundhouse/redis_connection.rb +77 -0
  36. data/lib/roundhouse/scheduled.rb +115 -0
  37. data/lib/roundhouse/testing/inline.rb +28 -0
  38. data/lib/roundhouse/testing.rb +193 -0
  39. data/lib/roundhouse/util.rb +68 -0
  40. data/lib/roundhouse/version.rb +3 -0
  41. data/lib/roundhouse/web.rb +264 -0
  42. data/lib/roundhouse/web_helpers.rb +249 -0
  43. data/lib/roundhouse/worker.rb +90 -0
  44. data/lib/roundhouse.rb +177 -0
  45. data/roundhouse.gemspec +27 -0
  46. data/test/config.yml +9 -0
  47. data/test/env_based_config.yml +11 -0
  48. data/test/fake_env.rb +0 -0
  49. data/test/fixtures/en.yml +2 -0
  50. data/test/helper.rb +49 -0
  51. data/test/test_api.rb +521 -0
  52. data/test/test_cli.rb +389 -0
  53. data/test/test_client.rb +294 -0
  54. data/test/test_exception_handler.rb +55 -0
  55. data/test/test_fetch.rb +206 -0
  56. data/test/test_logging.rb +34 -0
  57. data/test/test_manager.rb +169 -0
  58. data/test/test_middleware.rb +160 -0
  59. data/test/test_monitor.rb +258 -0
  60. data/test/test_processor.rb +176 -0
  61. data/test/test_rails.rb +23 -0
  62. data/test/test_redis_connection.rb +127 -0
  63. data/test/test_retry.rb +390 -0
  64. data/test/test_roundhouse.rb +87 -0
  65. data/test/test_scheduled.rb +120 -0
  66. data/test/test_scheduling.rb +75 -0
  67. data/test/test_testing.rb +78 -0
  68. data/test/test_testing_fake.rb +240 -0
  69. data/test/test_testing_inline.rb +65 -0
  70. data/test/test_util.rb +18 -0
  71. data/test/test_web.rb +605 -0
  72. data/test/test_web_helpers.rb +52 -0
  73. data/web/assets/images/bootstrap/glyphicons-halflings-white.png +0 -0
  74. data/web/assets/images/bootstrap/glyphicons-halflings.png +0 -0
  75. data/web/assets/images/logo.png +0 -0
  76. data/web/assets/images/status/active.png +0 -0
  77. data/web/assets/images/status/idle.png +0 -0
  78. data/web/assets/images/status-sd8051fd480.png +0 -0
  79. data/web/assets/javascripts/application.js +83 -0
  80. data/web/assets/javascripts/dashboard.js +300 -0
  81. data/web/assets/javascripts/locales/README.md +27 -0
  82. data/web/assets/javascripts/locales/jquery.timeago.ar.js +96 -0
  83. data/web/assets/javascripts/locales/jquery.timeago.bg.js +18 -0
  84. data/web/assets/javascripts/locales/jquery.timeago.bs.js +49 -0
  85. data/web/assets/javascripts/locales/jquery.timeago.ca.js +18 -0
  86. data/web/assets/javascripts/locales/jquery.timeago.cs.js +18 -0
  87. data/web/assets/javascripts/locales/jquery.timeago.cy.js +20 -0
  88. data/web/assets/javascripts/locales/jquery.timeago.da.js +18 -0
  89. data/web/assets/javascripts/locales/jquery.timeago.de.js +18 -0
  90. data/web/assets/javascripts/locales/jquery.timeago.el.js +18 -0
  91. data/web/assets/javascripts/locales/jquery.timeago.en-short.js +20 -0
  92. data/web/assets/javascripts/locales/jquery.timeago.en.js +20 -0
  93. data/web/assets/javascripts/locales/jquery.timeago.es.js +18 -0
  94. data/web/assets/javascripts/locales/jquery.timeago.et.js +18 -0
  95. data/web/assets/javascripts/locales/jquery.timeago.fa.js +22 -0
  96. data/web/assets/javascripts/locales/jquery.timeago.fi.js +28 -0
  97. data/web/assets/javascripts/locales/jquery.timeago.fr-short.js +16 -0
  98. data/web/assets/javascripts/locales/jquery.timeago.fr.js +17 -0
  99. data/web/assets/javascripts/locales/jquery.timeago.he.js +18 -0
  100. data/web/assets/javascripts/locales/jquery.timeago.hr.js +49 -0
  101. data/web/assets/javascripts/locales/jquery.timeago.hu.js +18 -0
  102. data/web/assets/javascripts/locales/jquery.timeago.hy.js +18 -0
  103. data/web/assets/javascripts/locales/jquery.timeago.id.js +18 -0
  104. data/web/assets/javascripts/locales/jquery.timeago.it.js +16 -0
  105. data/web/assets/javascripts/locales/jquery.timeago.ja.js +19 -0
  106. data/web/assets/javascripts/locales/jquery.timeago.ko.js +17 -0
  107. data/web/assets/javascripts/locales/jquery.timeago.lt.js +20 -0
  108. data/web/assets/javascripts/locales/jquery.timeago.mk.js +20 -0
  109. data/web/assets/javascripts/locales/jquery.timeago.nl.js +20 -0
  110. data/web/assets/javascripts/locales/jquery.timeago.no.js +18 -0
  111. data/web/assets/javascripts/locales/jquery.timeago.pl.js +31 -0
  112. data/web/assets/javascripts/locales/jquery.timeago.pt-br.js +16 -0
  113. data/web/assets/javascripts/locales/jquery.timeago.pt.js +16 -0
  114. data/web/assets/javascripts/locales/jquery.timeago.ro.js +18 -0
  115. data/web/assets/javascripts/locales/jquery.timeago.rs.js +49 -0
  116. data/web/assets/javascripts/locales/jquery.timeago.ru.js +34 -0
  117. data/web/assets/javascripts/locales/jquery.timeago.sk.js +18 -0
  118. data/web/assets/javascripts/locales/jquery.timeago.sl.js +44 -0
  119. data/web/assets/javascripts/locales/jquery.timeago.sv.js +18 -0
  120. data/web/assets/javascripts/locales/jquery.timeago.th.js +20 -0
  121. data/web/assets/javascripts/locales/jquery.timeago.tr.js +16 -0
  122. data/web/assets/javascripts/locales/jquery.timeago.uk.js +34 -0
  123. data/web/assets/javascripts/locales/jquery.timeago.uz.js +19 -0
  124. data/web/assets/javascripts/locales/jquery.timeago.zh-cn.js +20 -0
  125. data/web/assets/javascripts/locales/jquery.timeago.zh-tw.js +20 -0
  126. data/web/assets/stylesheets/application.css +746 -0
  127. data/web/assets/stylesheets/bootstrap.css +9 -0
  128. data/web/locales/cs.yml +68 -0
  129. data/web/locales/da.yml +68 -0
  130. data/web/locales/de.yml +69 -0
  131. data/web/locales/el.yml +68 -0
  132. data/web/locales/en.yml +77 -0
  133. data/web/locales/es.yml +69 -0
  134. data/web/locales/fr.yml +69 -0
  135. data/web/locales/hi.yml +75 -0
  136. data/web/locales/it.yml +69 -0
  137. data/web/locales/ja.yml +69 -0
  138. data/web/locales/ko.yml +68 -0
  139. data/web/locales/nl.yml +68 -0
  140. data/web/locales/no.yml +69 -0
  141. data/web/locales/pl.yml +59 -0
  142. data/web/locales/pt-br.yml +68 -0
  143. data/web/locales/pt.yml +67 -0
  144. data/web/locales/ru.yml +75 -0
  145. data/web/locales/sv.yml +68 -0
  146. data/web/locales/ta.yml +75 -0
  147. data/web/locales/zh-cn.yml +68 -0
  148. data/web/locales/zh-tw.yml +68 -0
  149. data/web/views/_footer.erb +22 -0
  150. data/web/views/_job_info.erb +84 -0
  151. data/web/views/_nav.erb +66 -0
  152. data/web/views/_paging.erb +23 -0
  153. data/web/views/_poll_js.erb +5 -0
  154. data/web/views/_poll_link.erb +7 -0
  155. data/web/views/_status.erb +4 -0
  156. data/web/views/_summary.erb +40 -0
  157. data/web/views/busy.erb +90 -0
  158. data/web/views/dashboard.erb +75 -0
  159. data/web/views/dead.erb +34 -0
  160. data/web/views/layout.erb +31 -0
  161. data/web/views/morgue.erb +71 -0
  162. data/web/views/queue.erb +45 -0
  163. data/web/views/queues.erb +27 -0
  164. data/web/views/retries.erb +74 -0
  165. data/web/views/retry.erb +34 -0
  166. data/web/views/scheduled.erb +54 -0
  167. data/web/views/scheduled_job_info.erb +8 -0
  168. metadata +404 -0
@@ -0,0 +1,20 @@
1
+ //Lithuanian
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: "prieš",
4
+ prefixFromNow: null,
5
+ suffixAgo: null,
6
+ suffixFromNow: "nuo dabar",
7
+ seconds: "%d sek.",
8
+ minute: "min.",
9
+ minutes: "%d min.",
10
+ hour: "val.",
11
+ hours: "%d val.",
12
+ day: "1 d.",
13
+ days: "%d d.",
14
+ month: "mėn.",
15
+ months: "%d mėn.",
16
+ year: "metus",
17
+ years: "%d metus",
18
+ wordSeparator: " ",
19
+ numbers: []
20
+ };
@@ -0,0 +1,20 @@
1
+ // Macedonian
2
+ (function() {
3
+ jQuery.timeago.settings.strings={
4
+ prefixAgo: "пред",
5
+ prefixFromNow: "за",
6
+ suffixAgo: null,
7
+ suffixFromNow: null,
8
+ seconds: "%d секунди",
9
+ minute: "%d минута",
10
+ minutes: "%d минути",
11
+ hour: "%d час",
12
+ hours: "%d часа",
13
+ day: "%d ден",
14
+ days: "%d денови" ,
15
+ month: "%d месец",
16
+ months: "%d месеци",
17
+ year: "%d година",
18
+ years: "%d години"
19
+ }
20
+ })();
@@ -0,0 +1,20 @@
1
+ // Dutch
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: null,
4
+ prefixFromNow: "",
5
+ suffixAgo: "geleden",
6
+ suffixFromNow: "van nu",
7
+ seconds: "minder dan een minuut",
8
+ minute: "ongeveer een minuut",
9
+ minutes: "%d minuten",
10
+ hour: "ongeveer een uur",
11
+ hours: "ongeveer %d uur",
12
+ day: "een dag",
13
+ days: "%d dagen",
14
+ month: "ongeveer een maand",
15
+ months: "%d maanden",
16
+ year: "ongeveer een jaar",
17
+ years: "%d jaar",
18
+ wordSeparator: " ",
19
+ numbers: []
20
+ };
@@ -0,0 +1,18 @@
1
+ // Norwegian
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: "for",
4
+ prefixFromNow: "om",
5
+ suffixAgo: "siden",
6
+ suffixFromNow: "",
7
+ seconds: "mindre enn et minutt",
8
+ minute: "ca. et minutt",
9
+ minutes: "%d minutter",
10
+ hour: "ca. en time",
11
+ hours: "ca. %d timer",
12
+ day: "en dag",
13
+ days: "%d dager",
14
+ month: "ca. en måned",
15
+ months: "%d måneder",
16
+ year: "ca. et år",
17
+ years: "%d år"
18
+ };
@@ -0,0 +1,31 @@
1
+ // Polish
2
+ (function() {
3
+ function numpf(n, s, t) {
4
+ // s - 2-4, 22-24, 32-34 ...
5
+ // t - 5-21, 25-31, ...
6
+ var n10 = n % 10;
7
+ if ( (n10 > 1) && (n10 < 5) && ( (n > 20) || (n < 10) ) ) {
8
+ return s;
9
+ } else {
10
+ return t;
11
+ }
12
+ }
13
+
14
+ jQuery.timeago.settings.strings = {
15
+ prefixAgo: null,
16
+ prefixFromNow: "za",
17
+ suffixAgo: "temu",
18
+ suffixFromNow: null,
19
+ seconds: "mniej niż minutę",
20
+ minute: "minutę",
21
+ minutes: function(value) { return numpf(value, "%d minuty", "%d minut"); },
22
+ hour: "godzinę",
23
+ hours: function(value) { return numpf(value, "%d godziny", "%d godzin"); },
24
+ day: "dzień",
25
+ days: "%d dni",
26
+ month: "miesiąc",
27
+ months: function(value) { return numpf(value, "%d miesiące", "%d miesięcy"); },
28
+ year: "rok",
29
+ years: function(value) { return numpf(value, "%d lata", "%d lat"); }
30
+ };
31
+ })();
@@ -0,0 +1,16 @@
1
+ // Brasilian Portuguese
2
+ jQuery.timeago.settings.strings = {
3
+ suffixAgo: "atrás",
4
+ suffixFromNow: "a partir de agora",
5
+ seconds: "menos de um minuto",
6
+ minute: "cerca de um minuto",
7
+ minutes: "%d minutos",
8
+ hour: "cerca de uma hora",
9
+ hours: "cerca de %d horas",
10
+ day: "um dia",
11
+ days: "%d dias",
12
+ month: "cerca de um mês",
13
+ months: "%d meses",
14
+ year: "cerca de um ano",
15
+ years: "%d anos"
16
+ };
@@ -0,0 +1,16 @@
1
+ // Portuguese
2
+ jQuery.timeago.settings.strings = {
3
+ suffixAgo: "atrás",
4
+ suffixFromNow: "a partir de agora",
5
+ seconds: "menos de um minuto",
6
+ minute: "cerca de um minuto",
7
+ minutes: "%d minutos",
8
+ hour: "cerca de uma hora",
9
+ hours: "cerca de %d horas",
10
+ day: "um dia",
11
+ days: "%d dias",
12
+ month: "cerca de um mês",
13
+ months: "%d meses",
14
+ year: "cerca de um ano",
15
+ years: "%d anos"
16
+ };
@@ -0,0 +1,18 @@
1
+ // Romanian
2
+ $.timeago.settings.strings = {
3
+ prefixAgo: "acum",
4
+ prefixFromNow: "in timp de",
5
+ suffixAgo: "",
6
+ suffixFromNow: "",
7
+ seconds: "mai putin de un minut",
8
+ minute: "un minut",
9
+ minutes: "%d minute",
10
+ hour: "o ora",
11
+ hours: "%d ore",
12
+ day: "o zi",
13
+ days: "%d zile",
14
+ month: "o luna",
15
+ months: "%d luni",
16
+ year: "un an",
17
+ years: "%d ani"
18
+ };
@@ -0,0 +1,49 @@
1
+ // Serbian
2
+ (function () {
3
+ var numpf;
4
+
5
+ numpf = function (n, f, s, t) {
6
+ var n10;
7
+ n10 = n % 10;
8
+ if (n10 === 1 && (n === 1 || n > 20)) {
9
+ return f;
10
+ } else if (n10 > 1 && n10 < 5 && (n > 20 || n < 10)) {
11
+ return s;
12
+ } else {
13
+ return t;
14
+ }
15
+ };
16
+
17
+ jQuery.timeago.settings.strings = {
18
+ prefixAgo: "pre",
19
+ prefixFromNow: "za",
20
+ suffixAgo: null,
21
+ suffixFromNow: null,
22
+ second: "sekund",
23
+ seconds: function (value) {
24
+ return numpf(value, "%d sekund", "%d sekunde", "%d sekundi");
25
+ },
26
+ minute: "oko minut",
27
+ minutes: function (value) {
28
+ return numpf(value, "%d minut", "%d minuta", "%d minuta");
29
+ },
30
+ hour: "oko jedan sat",
31
+ hours: function (value) {
32
+ return numpf(value, "%d sat", "%d sata", "%d sati");
33
+ },
34
+ day: "jedan dan",
35
+ days: function (value) {
36
+ return numpf(value, "%d dan", "%d dana", "%d dana");
37
+ },
38
+ month: "mesec dana",
39
+ months: function (value) {
40
+ return numpf(value, "%d mesec", "%d meseca", "%d meseci");
41
+ },
42
+ year: "pre godinu dana",
43
+ years: function (value) {
44
+ return numpf(value, "%d godinu", "%d godine", "%d godina");
45
+ },
46
+ wordSeparator: " "
47
+ };
48
+
49
+ }).call(this);
@@ -0,0 +1,34 @@
1
+ // Russian
2
+ (function() {
3
+ function numpf(n, f, s, t) {
4
+ // f - 1, 21, 31, ...
5
+ // s - 2-4, 22-24, 32-34 ...
6
+ // t - 5-20, 25-30, ...
7
+ var n10 = n % 10;
8
+ if ( (n10 == 1) && ( (n == 1) || (n > 20) ) ) {
9
+ return f;
10
+ } else if ( (n10 > 1) && (n10 < 5) && ( (n > 20) || (n < 10) ) ) {
11
+ return s;
12
+ } else {
13
+ return t;
14
+ }
15
+ }
16
+
17
+ jQuery.timeago.settings.strings = {
18
+ prefixAgo: null,
19
+ prefixFromNow: "через",
20
+ suffixAgo: "назад",
21
+ suffixFromNow: null,
22
+ seconds: "меньше минуты",
23
+ minute: "минуту",
24
+ minutes: function(value) { return numpf(value, "%d минута", "%d минуты", "%d минут"); },
25
+ hour: "час",
26
+ hours: function(value) { return numpf(value, "%d час", "%d часа", "%d часов"); },
27
+ day: "день",
28
+ days: function(value) { return numpf(value, "%d день", "%d дня", "%d дней"); },
29
+ month: "месяц",
30
+ months: function(value) { return numpf(value, "%d месяц", "%d месяца", "%d месяцев"); },
31
+ year: "год",
32
+ years: function(value) { return numpf(value, "%d год", "%d года", "%d лет"); }
33
+ };
34
+ })();
@@ -0,0 +1,18 @@
1
+ // Slovak
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: "pred",
4
+ prefixFromNow: null,
5
+ suffixAgo: null,
6
+ suffixFromNow: null,
7
+ seconds: "menej než minútou",
8
+ minute: "minútou",
9
+ minutes: "%d minútami",
10
+ hour: "hodinou",
11
+ hours: "%d hodinami",
12
+ day: "1 dňom",
13
+ days: "%d dňami",
14
+ month: "1 mesiacom",
15
+ months: "%d mesiacmi",
16
+ year: "1 rokom",
17
+ years: "%d rokmi"
18
+ };
@@ -0,0 +1,44 @@
1
+ // Slovenian with support for dual
2
+ (function () {
3
+ var numpf;
4
+ numpf = function (n, d, m) {
5
+ if (n == 2) {
6
+ return d;
7
+ } else {
8
+ return m;
9
+ }
10
+ };
11
+
12
+ jQuery.timeago.settings.strings = {
13
+ prefixAgo: "pred",
14
+ prefixFromNow: "čez",
15
+ suffixAgo: null,
16
+ suffixFromNow: null,
17
+ second: "sekundo",
18
+ seconds: function (value) {
19
+ return numpf(value, "%d sekundama", "%d sekundami");
20
+ },
21
+ minute: "minuto",
22
+ minutes: function (value) {
23
+ return numpf(value, "%d minutama", "%d minutami");
24
+ },
25
+ hour: "uro",
26
+ hours: function (value) {
27
+ return numpf(value, "%d urama", "%d urami");
28
+ },
29
+ day: "dnevom",
30
+ days: function (value) {
31
+ return numpf(value, "%d dnevi", "%d dnevi");
32
+ },
33
+ month: "enim mescem",
34
+ months: function (value) {
35
+ return numpf(value, "%d mesecema", "%d meseci");
36
+ },
37
+ year: "enim letom",
38
+ years: function (value) {
39
+ return numpf(value, "%d letoma", "%d leti");
40
+ },
41
+ wordSeparator: " "
42
+ };
43
+
44
+ }).call(this);
@@ -0,0 +1,18 @@
1
+ // Swedish
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: "för",
4
+ prefixFromNow: "om",
5
+ suffixAgo: "sedan",
6
+ suffixFromNow: "",
7
+ seconds: "mindre än en minut",
8
+ minute: "ungefär en minut",
9
+ minutes: "%d minuter",
10
+ hour: "ungefär en timme",
11
+ hours: "ungefär %d timmar",
12
+ day: "en dag",
13
+ days: "%d dagar",
14
+ month: "ungefär en månad",
15
+ months: "%d månader",
16
+ year: "ungefär ett år",
17
+ years: "%d år"
18
+ };
@@ -0,0 +1,20 @@
1
+ // Thai
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: null,
4
+ prefixFromNow: null,
5
+ suffixAgo: "ที่แล้ว",
6
+ suffixFromNow: "จากตอนนี้",
7
+ seconds: "น้อยกว่าหนึ่งนาที",
8
+ minute: "ประมาณหนึ่งนาที",
9
+ minutes: "%d นาที",
10
+ hour: "ประมาณหนึ่งชั่วโมง",
11
+ hours: "ประมาณ %d ชั่วโมง",
12
+ day: "หนึ่งวัน",
13
+ days: "%d วัน",
14
+ month: "ประมาณหนึ่งเดือน",
15
+ months: "%d เดือน",
16
+ year: "ประมาณหนึ่งปี",
17
+ years: "%d ปี",
18
+ wordSeparator: "",
19
+ numbers: []
20
+ };
@@ -0,0 +1,16 @@
1
+ // Turkish
2
+ jQuery.extend($.timeago.settings.strings, {
3
+ suffixAgo: 'önce',
4
+ suffixFromNow: null,
5
+ seconds: '1 dakikadan',
6
+ minute: '1 dakika',
7
+ minutes: '%d dakika',
8
+ hour: '1 saat',
9
+ hours: '%d saat',
10
+ day: '1 gün',
11
+ days: '%d gün',
12
+ month: '1 ay',
13
+ months: '%d ay',
14
+ year: '1 yıl',
15
+ years: '%d yıl'
16
+ });
@@ -0,0 +1,34 @@
1
+ // Ukrainian
2
+ (function() {
3
+ function numpf(n, f, s, t) {
4
+ // f - 1, 21, 31, ...
5
+ // s - 2-4, 22-24, 32-34 ...
6
+ // t - 5-20, 25-30, ...
7
+ var n10 = n % 10;
8
+ if ( (n10 == 1) && ( (n == 1) || (n > 20) ) ) {
9
+ return f;
10
+ } else if ( (n10 > 1) && (n10 < 5) && ( (n > 20) || (n < 10) ) ) {
11
+ return s;
12
+ } else {
13
+ return t;
14
+ }
15
+ }
16
+
17
+ jQuery.timeago.settings.strings = {
18
+ prefixAgo: null,
19
+ prefixFromNow: "через",
20
+ suffixAgo: "тому",
21
+ suffixFromNow: null,
22
+ seconds: "менше хвилини",
23
+ minute: "хвилина",
24
+ minutes: function(value) { return numpf(value, "%d хвилина", "%d хвилини", "%d хвилин"); },
25
+ hour: "година",
26
+ hours: function(value) { return numpf(value, "%d година", "%d години", "%d годин"); },
27
+ day: "день",
28
+ days: function(value) { return numpf(value, "%d день", "%d дні", "%d днів"); },
29
+ month: "місяць",
30
+ months: function(value) { return numpf(value, "%d місяць", "%d місяці", "%d місяців"); },
31
+ year: "рік",
32
+ years: function(value) { return numpf(value, "%d рік", "%d роки", "%d років"); }
33
+ };
34
+ })();
@@ -0,0 +1,19 @@
1
+ //Uzbek
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: null,
4
+ prefixFromNow: "keyin",
5
+ suffixAgo: "avval",
6
+ suffixFromNow: null,
7
+ seconds: "bir necha soniya",
8
+ minute: "1 daqiqa",
9
+ minutes: function(value) { return "%d daqiqa" },
10
+ hour: "1 soat",
11
+ hours: function(value) { return "%d soat" },
12
+ day: "1 kun",
13
+ days: function(value) { return "%d kun" },
14
+ month: "1 oy",
15
+ months: function(value) { return "%d oy" },
16
+ year: "1 yil",
17
+ years: function(value) { return "%d yil" },
18
+ wordSeparator: " "
19
+ };
@@ -0,0 +1,20 @@
1
+ // Simplified Chinese
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: null,
4
+ prefixFromNow: "从现在开始",
5
+ suffixAgo: "之前",
6
+ suffixFromNow: null,
7
+ seconds: "不到 1 分钟",
8
+ minute: "大约 1 分钟",
9
+ minutes: "%d 分钟",
10
+ hour: "大约 1 小时",
11
+ hours: "大约 %d 小时",
12
+ day: "1 天",
13
+ days: "%d 天",
14
+ month: "大约 1 个月",
15
+ months: "%d 月",
16
+ year: "大约 1 年",
17
+ years: "%d 年",
18
+ numbers: [],
19
+ wordSeparator: ""
20
+ };
@@ -0,0 +1,20 @@
1
+ // Traditional Chinese, zh-tw
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: null,
4
+ prefixFromNow: "從現在開始",
5
+ suffixAgo: "之前",
6
+ suffixFromNow: null,
7
+ seconds: "不到 1 分鐘",
8
+ minute: "大約 1 分鐘",
9
+ minutes: "%d 分鐘",
10
+ hour: "大約 1 小時",
11
+ hours: "%d 小時",
12
+ day: "大約 1 天",
13
+ days: "%d 天",
14
+ month: "大約 1 個月",
15
+ months: "%d 個月",
16
+ year: "大約 1 年",
17
+ years: "%d 年",
18
+ numbers: [],
19
+ wordSeparator: ""
20
+ };