@@ -219,84 +219,84 @@ const (
219
219
Year = 12 * Month
220
220
)
221
221
222
- func computeTimeDiff (diff int64 ) (int64 , string ) {
222
+ func computeTimeDiff (diff int64 , lang string ) (int64 , string ) {
223
223
diffStr := ""
224
224
switch {
225
225
case diff <= 0 :
226
226
diff = 0
227
- diffStr = " now"
227
+ diffStr = i18n . Tr ( lang , "tool. now")
228
228
case diff < 2 :
229
229
diff = 0
230
- diffStr = "1 second"
230
+ diffStr = i18n . Tr ( lang , "tool.1s" )
231
231
case diff < 1 * Minute :
232
- diffStr = fmt . Sprintf ( "%d seconds" , diff )
232
+ diffStr = i18n . Tr ( lang , "tool. seconds" , diff )
233
233
diff = 0
234
234
235
235
case diff < 2 * Minute :
236
236
diff -= 1 * Minute
237
- diffStr = "1 minute"
237
+ diffStr = i18n . Tr ( lang , "tool.1m" )
238
238
case diff < 1 * Hour :
239
- diffStr = fmt . Sprintf ( "%d minutes" , diff / Minute )
239
+ diffStr = i18n . Tr ( lang , "tool. minutes" , diff / Minute )
240
240
diff -= diff / Minute * Minute
241
241
242
242
case diff < 2 * Hour :
243
243
diff -= 1 * Hour
244
- diffStr = "1 hour"
244
+ diffStr = i18n . Tr ( lang , "tool.1h" )
245
245
case diff < 1 * Day :
246
- diffStr = fmt . Sprintf ( "%d hours" , diff / Hour )
246
+ diffStr = i18n . Tr ( lang , "tool. hours" , diff / Hour )
247
247
diff -= diff / Hour * Hour
248
248
249
249
case diff < 2 * Day :
250
250
diff -= 1 * Day
251
- diffStr = "1 day"
251
+ diffStr = i18n . Tr ( lang , "tool.1d" )
252
252
case diff < 1 * Week :
253
- diffStr = fmt . Sprintf ( "%d days" , diff / Day )
253
+ diffStr = i18n . Tr ( lang , "tool. days" , diff / Day )
254
254
diff -= diff / Day * Day
255
255
256
256
case diff < 2 * Week :
257
257
diff -= 1 * Week
258
- diffStr = "1 week"
258
+ diffStr = i18n . Tr ( lang , "tool.1w" )
259
259
case diff < 1 * Month :
260
- diffStr = fmt . Sprintf ( "%d weeks" , diff / Week )
260
+ diffStr = i18n . Tr ( lang , "tool. weeks" , diff / Week )
261
261
diff -= diff / Week * Week
262
262
263
263
case diff < 2 * Month :
264
264
diff -= 1 * Month
265
- diffStr = "1 month"
265
+ diffStr = i18n . Tr ( lang , "tool.1mon" )
266
266
case diff < 1 * Year :
267
- diffStr = fmt . Sprintf ( "%d months" , diff / Month )
267
+ diffStr = i18n . Tr ( lang , "tool. months" , diff / Month )
268
268
diff -= diff / Month * Month
269
269
270
270
case diff < 2 * Year :
271
271
diff -= 1 * Year
272
- diffStr = "1 year"
272
+ diffStr = i18n . Tr ( lang , "tool.1y" )
273
273
default :
274
- diffStr = fmt . Sprintf ( "%d years" , diff / Year )
274
+ diffStr = i18n . Tr ( lang , "tool. years" , diff / Year )
275
275
diff -= (diff / Year ) * Year
276
276
}
277
277
return diff , diffStr
278
278
}
279
279
280
280
// MinutesToFriendly returns a user friendly string with number of minutes
281
281
// converted to hours and minutes.
282
- func MinutesToFriendly (minutes int ) string {
282
+ func MinutesToFriendly (minutes int , lang string ) string {
283
283
duration := time .Duration (minutes ) * time .Minute
284
- return TimeSincePro (time .Now ().Add (- duration ))
284
+ return TimeSincePro (time .Now ().Add (- duration ), lang )
285
285
}
286
286
287
287
// TimeSincePro calculates the time interval and generate full user-friendly string.
288
- func TimeSincePro (then time.Time ) string {
289
- return timeSincePro (then , time .Now ())
288
+ func TimeSincePro (then time.Time , lang string ) string {
289
+ return timeSincePro (then , time .Now (), lang )
290
290
}
291
291
292
- func timeSincePro (then , now time.Time ) string {
292
+ func timeSincePro (then , now time.Time , lang string ) string {
293
293
diff := now .Unix () - then .Unix ()
294
294
295
295
if then .After (now ) {
296
- return " future"
296
+ return i18n . Tr ( lang , "tool. future")
297
297
}
298
298
if diff == 0 {
299
- return " now"
299
+ return i18n . Tr ( lang , "tool. now")
300
300
}
301
301
302
302
var timeStr , diffStr string
@@ -305,58 +305,25 @@ func timeSincePro(then, now time.Time) string {
305
305
break
306
306
}
307
307
308
- diff , diffStr = computeTimeDiff (diff )
308
+ diff , diffStr = computeTimeDiff (diff , lang )
309
309
timeStr += ", " + diffStr
310
310
}
311
311
return strings .TrimPrefix (timeStr , ", " )
312
312
}
313
313
314
314
func timeSince (then , now time.Time , lang string ) string {
315
- lbl := i18n . Tr ( lang , "tool.ago" )
315
+ lbl := "tool.ago"
316
316
diff := now .Unix () - then .Unix ()
317
317
if then .After (now ) {
318
- lbl = i18n . Tr ( lang , "tool.from_now" )
318
+ lbl = "tool.from_now"
319
319
diff = then .Unix () - now .Unix ()
320
320
}
321
-
322
- switch {
323
- case diff <= 0 :
321
+ if diff <= 0 {
324
322
return i18n .Tr (lang , "tool.now" )
325
- case diff <= 1 :
326
- return i18n .Tr (lang , "tool.1s" , lbl )
327
- case diff < 1 * Minute :
328
- return i18n .Tr (lang , "tool.seconds" , diff , lbl )
329
-
330
- case diff < 2 * Minute :
331
- return i18n .Tr (lang , "tool.1m" , lbl )
332
- case diff < 1 * Hour :
333
- return i18n .Tr (lang , "tool.minutes" , diff / Minute , lbl )
334
-
335
- case diff < 2 * Hour :
336
- return i18n .Tr (lang , "tool.1h" , lbl )
337
- case diff < 1 * Day :
338
- return i18n .Tr (lang , "tool.hours" , diff / Hour , lbl )
339
-
340
- case diff < 2 * Day :
341
- return i18n .Tr (lang , "tool.1d" , lbl )
342
- case diff < 1 * Week :
343
- return i18n .Tr (lang , "tool.days" , diff / Day , lbl )
344
-
345
- case diff < 2 * Week :
346
- return i18n .Tr (lang , "tool.1w" , lbl )
347
- case diff < 1 * Month :
348
- return i18n .Tr (lang , "tool.weeks" , diff / Week , lbl )
349
-
350
- case diff < 2 * Month :
351
- return i18n .Tr (lang , "tool.1mon" , lbl )
352
- case diff < 1 * Year :
353
- return i18n .Tr (lang , "tool.months" , diff / Month , lbl )
354
-
355
- case diff < 2 * Year :
356
- return i18n .Tr (lang , "tool.1y" , lbl )
357
- default :
358
- return i18n .Tr (lang , "tool.years" , diff / Year , lbl )
359
323
}
324
+
325
+ _ , diffStr := computeTimeDiff (diff , lang )
326
+ return i18n .Tr (lang , lbl , diffStr )
360
327
}
361
328
362
329
// RawTimeSince retrieves i18n key of time since t
0 commit comments