1
1
import { useContext } from "react" ;
2
2
3
- import { I18NContext } from "../i18n/i18n-provider" ;
4
- import { Messages } from "../i18n/messages" ;
3
+ import { I18NContext , LocalizedMessageKey , Messages } from "../i18n/index.ts" ;
5
4
6
5
const ONE_SECOND_MS : number = 1000 ;
7
6
const ONE_MINUTE_MS : number = 60 * ONE_SECOND_MS ;
@@ -10,15 +9,6 @@ const ONE_DAY_MS: number = 24 * ONE_HOUR_MS;
10
9
const ONE_MONTH_MS : number = 30 * ONE_DAY_MS ;
11
10
const ONE_YEAR_MS : number = 365 * ONE_DAY_MS ;
12
11
13
- const YEAR = "Util.year" ;
14
- const MONTH = "Util.month" ;
15
- const HOURS = "Util.hour" ;
16
- const DAY = "Util.day" ;
17
- const MINUTE = "Util.minute" ;
18
- const SECOND = "Util.second" ;
19
- const MILLIS = "Util.millisecond" ;
20
- const STARTED_AGO = "startedAgo" ;
21
-
22
12
/**
23
13
* Create a string representation of a time duration.
24
14
* If the quantity of the most significant unit is big (>=10), then we use only that most significant unit in the string representation.
@@ -60,48 +50,50 @@ function getTimeSpanString(duration: number, messages: Messages): string {
60
50
if ( years > 0 ) {
61
51
return makeTimeSpanString (
62
52
years ,
63
- messages . format ( YEAR , { "0" : years } ) ,
53
+ messages . format ( LocalizedMessageKey . year , { "0" : years } ) ,
64
54
months ,
65
- messages . format ( MONTH , { "0" : months } ) ,
55
+ messages . format ( LocalizedMessageKey . month , { "0" : months } ) ,
66
56
) ;
67
57
} else if ( months > 0 ) {
68
58
return makeTimeSpanString (
69
59
months ,
70
- messages . format ( MONTH , { "0" : months } ) ,
60
+ messages . format ( LocalizedMessageKey . month , { "0" : months } ) ,
71
61
days ,
72
- messages . format ( DAY , { "0" : days } ) ,
62
+ messages . format ( LocalizedMessageKey . day , { "0" : days } ) ,
73
63
) ;
74
64
} else if ( days > 0 ) {
75
65
return makeTimeSpanString (
76
66
days ,
77
- messages . format ( DAY , { "0" : days } ) ,
67
+ messages . format ( LocalizedMessageKey . day , { "0" : days } ) ,
78
68
hours ,
79
- messages . format ( HOURS , { "0" : hours } ) ,
69
+ messages . format ( LocalizedMessageKey . hour , { "0" : hours } ) ,
80
70
) ;
81
71
} else if ( hours > 0 ) {
82
72
return makeTimeSpanString (
83
73
hours ,
84
- messages . format ( HOURS , { "0" : hours } ) ,
74
+ messages . format ( LocalizedMessageKey . hour , { "0" : hours } ) ,
85
75
minutes ,
86
- messages . format ( MINUTE , { "0" : minutes } ) ,
76
+ messages . format ( LocalizedMessageKey . minute , { "0" : minutes } ) ,
87
77
) ;
88
78
} else if ( minutes > 0 ) {
89
79
return makeTimeSpanString (
90
80
minutes ,
91
- messages . format ( MINUTE , { "0" : minutes } ) ,
81
+ messages . format ( LocalizedMessageKey . minute , { "0" : minutes } ) ,
92
82
seconds ,
93
- messages . format ( SECOND , { "0" : seconds } ) ,
83
+ messages . format ( LocalizedMessageKey . second , { "0" : seconds } ) ,
94
84
) ;
95
85
} else if ( seconds >= 10 ) {
96
- return messages . format ( SECOND , { "0" : seconds } ) ;
86
+ return messages . format ( LocalizedMessageKey . second , { "0" : seconds } ) ;
97
87
} else if ( seconds >= 1 ) {
98
- return messages . format ( SECOND , {
88
+ return messages . format ( LocalizedMessageKey . second , {
99
89
"0" : seconds + Math . floor ( millis / 100 ) / 10 ,
100
90
} ) ;
101
91
} else if ( millis >= 100 ) {
102
- return messages . format ( SECOND , { "0" : Math . floor ( millis / 10 ) / 100 } ) ;
92
+ return messages . format ( LocalizedMessageKey . second , {
93
+ "0" : Math . floor ( millis / 10 ) / 100 ,
94
+ } ) ;
103
95
} else {
104
- return messages . format ( MILLIS , { "0" : millis } ) ;
96
+ return messages . format ( LocalizedMessageKey . millisecond , { "0" : millis } ) ;
105
97
}
106
98
}
107
99
@@ -123,7 +115,7 @@ export function Started({ since }: { since: number }) {
123
115
124
116
return (
125
117
< >
126
- { messages . format ( STARTED_AGO , {
118
+ { messages . format ( LocalizedMessageKey . startedAgo , {
127
119
"0" : getTimeSpanString ( Math . abs ( since - Date . now ( ) ) , messages ) ,
128
120
} ) }
129
121
</ >
0 commit comments