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,27 @@
1
+ # Locale override examples for timeago
2
+
3
+ You can represent time statements in most western languages where
4
+ a prefix and/or suffix is used.
5
+
6
+ The default case is to use suffix only (as in English), which you
7
+ do by providing the `suffixAgo` and `suffixFromNow` settings in
8
+ the strings hash (earlier versions of timeago used the deprecated
9
+ `ago` and `fromNow` options). If present, they are used.
10
+
11
+ 2 minutes [suffixAgo]
12
+ 2 minutes [suffixFromNow]
13
+
14
+ In case you want to use prefix only instead of
15
+ suffix (e.g. Greek), you provide the `prefixAgo` and
16
+ `prefixFromNow` options in the strings hash and leave `suffixAgo`
17
+ and `suffixFromNow` empty or null.
18
+
19
+ [prefixAgo] 2 minutes
20
+ [prefixFromNow] 2 minutes
21
+
22
+ For languages where you want to use a prefix only for future
23
+ tense and prefix/suffix for past tense (for example swedish), you
24
+ can combine the prefix and suffixes as needed.
25
+
26
+ [prefixAgo] 2 minutes [suffixAgo]
27
+ [prefixFromNow] 2 minutes
@@ -0,0 +1,96 @@
1
+ (function() {
2
+ function numpf(n, a) {
3
+ return a[plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5];
4
+ }
5
+
6
+ jQuery.timeago.settings.strings = {
7
+ prefixAgo: "منذ",
8
+ prefixFromNow: "بعد",
9
+ suffixAgo: null,
10
+ suffixFromNow: null, // null OR "من الآن"
11
+ second: function(value) { return numpf(value, [
12
+ 'أقل من ثانية',
13
+ 'ثانية واحدة',
14
+ 'ثانيتين',
15
+ '%d ثوانٍ',
16
+ '%d ثانية',
17
+ '%d ثانية']); },
18
+ seconds: function(value) { return numpf(value, [
19
+ 'أقل من ثانية',
20
+ 'ثانية واحدة',
21
+ 'ثانيتين',
22
+ '%d ثوانٍ',
23
+ '%d ثانية',
24
+ '%d ثانية']); },
25
+ minute: function(value) { return numpf(value, [
26
+ 'أقل من دقيقة',
27
+ 'دقيقة واحدة',
28
+ 'دقيقتين',
29
+ '%d دقائق',
30
+ '%d دقيقة',
31
+ 'دقيقة']); },
32
+ minutes: function(value) { return numpf(value, [
33
+ 'أقل من دقيقة',
34
+ 'دقيقة واحدة',
35
+ 'دقيقتين',
36
+ '%d دقائق',
37
+ '%d دقيقة',
38
+ 'دقيقة']); },
39
+ hour: function(value) { return numpf(value, [
40
+ 'أقل من ساعة',
41
+ 'ساعة واحدة',
42
+ 'ساعتين',
43
+ '%d ساعات',
44
+ '%d ساعة',
45
+ '%d ساعة']); },
46
+ hours: function(value) { return numpf(value, [
47
+ 'أقل من ساعة',
48
+ 'ساعة واحدة',
49
+ 'ساعتين',
50
+ '%d ساعات',
51
+ '%d ساعة',
52
+ '%d ساعة']); },
53
+ day: function(value) { return numpf(value, [
54
+ 'أقل من يوم',
55
+ 'يوم واحد',
56
+ 'يومين',
57
+ '%d أيام',
58
+ '%d يومًا',
59
+ '%d يوم']); },
60
+ days: function(value) { return numpf(value, [
61
+ 'أقل من يوم',
62
+ 'يوم واحد',
63
+ 'يومين',
64
+ '%d أيام',
65
+ '%d يومًا',
66
+ '%d يوم']); },
67
+ month: function(value) { return numpf(value, [
68
+ 'أقل من شهر',
69
+ 'شهر واحد',
70
+ 'شهرين',
71
+ '%d أشهر',
72
+ '%d شهرًا',
73
+ '%d شهر']); },
74
+ months: function(value) { return numpf(value, [
75
+ 'أقل من شهر',
76
+ 'شهر واحد',
77
+ 'شهرين',
78
+ '%d أشهر',
79
+ '%d شهرًا',
80
+ '%d شهر']); },
81
+ year: function(value) { return numpf(value, [
82
+ 'أقل من عام',
83
+ 'عام واحد',
84
+ '%d عامين',
85
+ '%d أعوام',
86
+ '%d عامًا']);
87
+ },
88
+ years: function(value) { return numpf(value, [
89
+ 'أقل من عام',
90
+ 'عام واحد',
91
+ 'عامين',
92
+ '%d أعوام',
93
+ '%d عامًا',
94
+ '%d عام']);}
95
+ };
96
+ })();
@@ -0,0 +1,18 @@
1
+ // Bulgarian
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: "преди",
4
+ prefixFromNow: "след",
5
+ suffixAgo: null,
6
+ suffixFromNow: null,
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
+ };
@@ -0,0 +1,49 @@
1
+ // Bosnian
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: "prije",
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 minute", "%d minuta");
29
+ },
30
+ hour: "oko sat",
31
+ hours: function(value) {
32
+ return numpf(value, "%d sat", "%d sata", "%d sati");
33
+ },
34
+ day: "oko jednog dana",
35
+ days: function(value) {
36
+ return numpf(value, "%d dan", "%d dana", "%d dana");
37
+ },
38
+ month: "mjesec dana",
39
+ months: function(value) {
40
+ return numpf(value, "%d mjesec", "%d mjeseca", "%d mjeseci");
41
+ },
42
+ year: "prije 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,18 @@
1
+ // Catalan
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: "fa",
4
+ prefixFromNow: "d'aqui a",
5
+ suffixAgo: null,
6
+ suffixFromNow: null,
7
+ seconds: "menys d'1 minut",
8
+ minute: "1 minut",
9
+ minutes: "uns %d minuts",
10
+ hour: "1 hora",
11
+ hours: "unes %d hores",
12
+ day: "1 dia",
13
+ days: "%d dies",
14
+ month: "aproximadament un mes",
15
+ months: "%d mesos",
16
+ year: "aproximadament un any",
17
+ years: "%d anys"
18
+ };
@@ -0,0 +1,18 @@
1
+ // Czech
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: "před",
4
+ prefixFromNow: null,
5
+ suffixAgo: null,
6
+ suffixFromNow: null,
7
+ seconds: "méně než minutou",
8
+ minute: "minutou",
9
+ minutes: "%d minutami",
10
+ hour: "hodinou",
11
+ hours: "%d hodinami",
12
+ day: "1 dnem",
13
+ days: "%d dny",
14
+ month: "1 měsícem",
15
+ months: "%d měsíci",
16
+ year: "1 rokem",
17
+ years: "%d roky"
18
+ };
@@ -0,0 +1,20 @@
1
+ // Welsh
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: null,
4
+ prefixFromNow: null,
5
+ suffixAgo: "yn ôl",
6
+ suffixFromNow: "o hyn",
7
+ seconds: "llai na munud",
8
+ minute: "am funud",
9
+ minutes: "%d munud",
10
+ hour: "tua awr",
11
+ hours: "am %d awr",
12
+ day: "y dydd",
13
+ days: "%d diwrnod",
14
+ month: "tua mis",
15
+ months: "%d mis",
16
+ year: "am y flwyddyn",
17
+ years: "%d blynedd",
18
+ wordSeparator: " ",
19
+ numbers: []
20
+ };
@@ -0,0 +1,18 @@
1
+ // Danish
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: "for",
4
+ prefixFromNow: "om",
5
+ suffixAgo: "siden",
6
+ suffixFromNow: "",
7
+ seconds: "mindre end et minut",
8
+ minute: "ca. et minut",
9
+ minutes: "%d minutter",
10
+ hour: "ca. en time",
11
+ hours: "ca. %d timer",
12
+ day: "en dag",
13
+ days: "%d dage",
14
+ month: "ca. en måned",
15
+ months: "%d måneder",
16
+ year: "ca. et år",
17
+ years: "%d år"
18
+ };
@@ -0,0 +1,18 @@
1
+ // German
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: "vor",
4
+ prefixFromNow: "in",
5
+ suffixAgo: "",
6
+ suffixFromNow: "",
7
+ seconds: "wenigen Sekunden",
8
+ minute: "etwa einer Minute",
9
+ minutes: "%d Minuten",
10
+ hour: "etwa einer Stunde",
11
+ hours: "%d Stunden",
12
+ day: "etwa einem Tag",
13
+ days: "%d Tagen",
14
+ month: "etwa einem Monat",
15
+ months: "%d Monaten",
16
+ year: "etwa einem Jahr",
17
+ years: "%d Jahren"
18
+ };
@@ -0,0 +1,18 @@
1
+ // Greek
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: "πριν",
4
+ prefixFromNow: "σε",
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
+ };
@@ -0,0 +1,20 @@
1
+ // English shortened
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: null,
4
+ prefixFromNow: null,
5
+ suffixAgo: "",
6
+ suffixFromNow: "",
7
+ seconds: "1m",
8
+ minute: "1m",
9
+ minutes: "%dm",
10
+ hour: "1h",
11
+ hours: "%dh",
12
+ day: "1d",
13
+ days: "%dd",
14
+ month: "1mo",
15
+ months: "%dmo",
16
+ year: "1yr",
17
+ years: "%dyr",
18
+ wordSeparator: " ",
19
+ numbers: []
20
+ };
@@ -0,0 +1,20 @@
1
+ // English (Template)
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: null,
4
+ prefixFromNow: null,
5
+ suffixAgo: "ago",
6
+ suffixFromNow: "from now",
7
+ seconds: "less than a minute",
8
+ minute: "about a minute",
9
+ minutes: "%d minutes",
10
+ hour: "about an hour",
11
+ hours: "about %d hours",
12
+ day: "a day",
13
+ days: "%d days",
14
+ month: "about a month",
15
+ months: "%d months",
16
+ year: "about a year",
17
+ years: "%d years",
18
+ wordSeparator: " ",
19
+ numbers: []
20
+ };
@@ -0,0 +1,18 @@
1
+ // Spanish
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: "hace",
4
+ prefixFromNow: "dentro de",
5
+ suffixAgo: "",
6
+ suffixFromNow: "",
7
+ seconds: "menos de un minuto",
8
+ minute: "un minuto",
9
+ minutes: "unos %d minutos",
10
+ hour: "una hora",
11
+ hours: "%d horas",
12
+ day: "un día",
13
+ days: "%d días",
14
+ month: "un mes",
15
+ months: "%d meses",
16
+ year: "un año",
17
+ years: "%d años"
18
+ };
@@ -0,0 +1,18 @@
1
+ // Estonian
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: null,
4
+ prefixFromNow: null,
5
+ suffixAgo: "tagasi",
6
+ suffixFromNow: "pärast",
7
+ seconds: function(n, d) { return d < 0 ? "vähem kui minuti aja" : "vähem kui minut aega" },
8
+ minute: function(n, d) { return d < 0 ? "umbes minuti aja" : "umbes minut aega" },
9
+ minutes: function(n, d) { return d < 0 ? "%d minuti" : "%d minutit" },
10
+ hour: function(n, d) { return d < 0 ? "umbes tunni aja" : "umbes tund aega" },
11
+ hours: function(n, d) { return d < 0 ? "%d tunni" : "%d tundi" },
12
+ day: function(n, d) { return d < 0 ? "umbes päeva" : "umbes päev" },
13
+ days: function(n, d) { return d < 0 ? "%d päeva" : "%d päeva" },
14
+ month: function(n, d) { return d < 0 ? "umbes kuu aja" : "umbes kuu aega" },
15
+ months: function(n, d) { return d < 0 ? "%d kuu" : "%d kuud" },
16
+ year: function(n, d) { return d < 0 ? "umbes aasta aja" : "umbes aasta aega" },
17
+ years: function(n, d) { return d < 0 ? "%d aasta" : "%d aastat" }
18
+ };
@@ -0,0 +1,22 @@
1
+ 
2
+ // Persian
3
+ // Use DIR attribute for RTL text in Persian Language for ABBR tag .
4
+ // By MB.seifollahi@gmail.com
5
+ jQuery.timeago.settings.strings = {
6
+ prefixAgo: null,
7
+ prefixFromNow: null,
8
+ suffixAgo: "پیش",
9
+ suffixFromNow: "از حال",
10
+ seconds: "کمتر از یک دقیقه",
11
+ minute: "حدود یک دقیقه",
12
+ minutes: "%d دقیقه",
13
+ hour: "حدود یک ساعت",
14
+ hours: "حدود %d ساعت",
15
+ day: "یک روز",
16
+ days: "%d روز",
17
+ month: "حدود یک ماه",
18
+ months: "%d ماه",
19
+ year: "حدود یک سال",
20
+ years: "%d سال",
21
+ wordSeparator: " "
22
+ };
@@ -0,0 +1,28 @@
1
+ // Finnish
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: null,
4
+ prefixFromNow: null,
5
+ suffixAgo: "sitten",
6
+ suffixFromNow: "tulevaisuudessa",
7
+ seconds: "alle minuutti",
8
+ minute: "minuutti",
9
+ minutes: "%d minuuttia",
10
+ hour: "tunti",
11
+ hours: "%d tuntia",
12
+ day: "päivä",
13
+ days: "%d päivää",
14
+ month: "kuukausi",
15
+ months: "%d kuukautta",
16
+ year: "vuosi",
17
+ years: "%d vuotta"
18
+ };
19
+
20
+ // The above is not a great localization because one would usually
21
+ // write "2 days ago" in Finnish as "2 päivää sitten", however
22
+ // one would write "2 days into the future" as "2:n päivän päästä"
23
+ // which cannot be achieved with localization support this simple.
24
+ // This is because Finnish has word suffixes (attached directly
25
+ // to the end of the word). The word "day" is "päivä" in Finnish.
26
+ // As workaround, the above localizations will say
27
+ // "2 päivää tulevaisuudessa" which is understandable but
28
+ // not as fluent.
@@ -0,0 +1,16 @@
1
+ // French shortened
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: "il y a",
4
+ prefixFromNow: "d'ici",
5
+ seconds: "moins d'une minute",
6
+ minute: "une minute",
7
+ minutes: "%d minutes",
8
+ hour: "une heure",
9
+ hours: "%d heures",
10
+ day: "un jour",
11
+ days: "%d jours",
12
+ month: "un mois",
13
+ months: "%d mois",
14
+ year: "un an",
15
+ years: "%d ans"
16
+ };
@@ -0,0 +1,17 @@
1
+ // French
2
+ jQuery.timeago.settings.strings = {
3
+ // environ ~= about, it's optional
4
+ prefixAgo: "il y a",
5
+ prefixFromNow: "d'ici",
6
+ seconds: "moins d'une minute",
7
+ minute: "environ une minute",
8
+ minutes: "environ %d minutes",
9
+ hour: "environ une heure",
10
+ hours: "environ %d heures",
11
+ day: "environ un jour",
12
+ days: "environ %d jours",
13
+ month: "environ un mois",
14
+ months: "environ %d mois",
15
+ year: "un an",
16
+ years: "%d ans"
17
+ };
@@ -0,0 +1,18 @@
1
+ // Hebrew
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: "לפני",
4
+ prefixFromNow: "מעכשיו",
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
+ };
@@ -0,0 +1,49 @@
1
+ // Croatian
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: "prije",
19
+ prefixFromNow: "za",
20
+ suffixAgo: null,
21
+ suffixFromNow: null,
22
+ second: "sekundu",
23
+ seconds: function (value) {
24
+ return numpf(value, "%d sekundu", "%d sekunde", "%d sekundi");
25
+ },
26
+ minute: "oko minutu",
27
+ minutes: function (value) {
28
+ return numpf(value, "%d minutu", "%d minute", "%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: "mjesec dana",
39
+ months: function (value) {
40
+ return numpf(value, "%d mjesec", "%d mjeseca", "%d mjeseci");
41
+ },
42
+ year: "prije 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,18 @@
1
+ // Hungarian
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: null,
4
+ prefixFromNow: null,
5
+ suffixAgo: null,
6
+ suffixFromNow: null,
7
+ seconds: "kevesebb mint egy perce",
8
+ minute: "körülbelül egy perce",
9
+ minutes: "%d perce",
10
+ hour: "körülbelül egy órája",
11
+ hours: "körülbelül %d órája",
12
+ day: "körülbelül egy napja",
13
+ days: "%d napja",
14
+ month: "körülbelül egy hónapja",
15
+ months: "%d hónapja",
16
+ year: "körülbelül egy éve",
17
+ years: "%d éve"
18
+ };
@@ -0,0 +1,18 @@
1
+ // Armenian
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
+ };
@@ -0,0 +1,18 @@
1
+ // Indonesian
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: null,
4
+ prefixFromNow: null,
5
+ suffixAgo: "yang lalu",
6
+ suffixFromNow: "dari sekarang",
7
+ seconds: "kurang dari semenit",
8
+ minute: "sekitar satu menit",
9
+ minutes: "%d menit",
10
+ hour: "sekitar sejam",
11
+ hours: "sekitar %d jam",
12
+ day: "sehari",
13
+ days: "%d hari",
14
+ month: "sekitar sebulan",
15
+ months: "%d bulan",
16
+ year: "sekitar setahun",
17
+ years: "%d tahun"
18
+ };
@@ -0,0 +1,16 @@
1
+ // Italian
2
+ jQuery.timeago.settings.strings = {
3
+ suffixAgo: "fa",
4
+ suffixFromNow: "da ora",
5
+ seconds: "meno di un minuto",
6
+ minute: "circa un minuto",
7
+ minutes: "%d minuti",
8
+ hour: "circa un'ora",
9
+ hours: "circa %d ore",
10
+ day: "un giorno",
11
+ days: "%d giorni",
12
+ month: "circa un mese",
13
+ months: "%d mesi",
14
+ year: "circa un anno",
15
+ years: "%d anni"
16
+ };
@@ -0,0 +1,19 @@
1
+ // Japanese
2
+ jQuery.timeago.settings.strings = {
3
+ prefixAgo: "",
4
+ prefixFromNow: "今から",
5
+ suffixAgo: "前",
6
+ suffixFromNow: "後",
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
+ wordSeparator: ""
19
+ };
@@ -0,0 +1,17 @@
1
+ // Korean
2
+ jQuery.timeago.settings.strings = {
3
+ suffixAgo: "전",
4
+ suffixFromNow: "후",
5
+ seconds: "1분 이내",
6
+ minute: "1분",
7
+ minutes: "%d분",
8
+ hour: "1시간",
9
+ hours: "%d시간",
10
+ day: "하루",
11
+ days: "%d일",
12
+ month: "한 달",
13
+ months: "%d달",
14
+ year: "1년",
15
+ years: "%d년",
16
+ wordSeparator: " "
17
+ };