fix: admin/options: block-ip date-time editor was not localized
Massimo Melina committed
Jan 26, 2024 at 01:34 UTC
b7cc68dc67dc341479b682d5a35814ae95383821
2 files changed
+171
-1
admin/src/App.ts
+2
-1
@@ -15,11 +15,12 @@ import ConfigFilePage from './ConfigFilePage'
15
import { useSnapState } from './state'
16
import { useEventListener } from 'usehooks-ts'
17
import { AriaOnly, xlate } from './misc'
18
+import { getLocale } from './locale'
19
20
function App() {
21
return h(ThemeProvider, { theme: useMyTheme() },
22
h(ApplyTheme, {},
22
- h(LocalizationProvider, { dateAdapter: AdapterDayjs },
23
+ h(LocalizationProvider, { dateAdapter: AdapterDayjs, adapterLocale: getLocale() },
24
h(LoginRequired, {},
25
h(HashRouter, {},
26
h(Dialogs, {
admin/src/locale.ts
new
+169
@@ -0,0 +1,169 @@
1
+import 'dayjs/locale/af'
2
+import 'dayjs/locale/bi'
3
+import 'dayjs/locale/de-ch'
4
+import 'dayjs/locale/en'
5
+import 'dayjs/locale/fr-ch'
6
+import 'dayjs/locale/hy-am'
7
+import 'dayjs/locale/ky'
8
+import 'dayjs/locale/mt'
9
+import 'dayjs/locale/ro'
10
+import 'dayjs/locale/sv'
11
+import 'dayjs/locale/tzm'
12
+import 'dayjs/locale/am'
13
+import 'dayjs/locale/bm'
14
+import 'dayjs/locale/de'
15
+import 'dayjs/locale/eo'
16
+import 'dayjs/locale/fr'
17
+import 'dayjs/locale/id'
18
+import 'dayjs/locale/lb'
19
+import 'dayjs/locale/my'
20
+import 'dayjs/locale/ru'
21
+import 'dayjs/locale/sw'
22
+import 'dayjs/locale/ug-cn'
23
+import 'dayjs/locale/ar-dz'
24
+import 'dayjs/locale/bn-bd'
25
+import 'dayjs/locale/dv'
26
+import 'dayjs/locale/es-do'
27
+import 'dayjs/locale/fy'
28
+import 'dayjs/locale/is'
29
+import 'dayjs/locale/lo'
30
+import 'dayjs/locale/nb'
31
+import 'dayjs/locale/rw'
32
+import 'dayjs/locale/ta'
33
+import 'dayjs/locale/uk'
34
+import 'dayjs/locale/ar-iq'
35
+import 'dayjs/locale/bn'
36
+import 'dayjs/locale/el'
37
+import 'dayjs/locale/es-mx'
38
+import 'dayjs/locale/ga'
39
+import 'dayjs/locale/it-ch'
40
+import 'dayjs/locale/lt'
41
+import 'dayjs/locale/ne'
42
+import 'dayjs/locale/sd'
43
+import 'dayjs/locale/te'
44
+import 'dayjs/locale/ur'
45
+import 'dayjs/locale/ar-kw'
46
+import 'dayjs/locale/bo'
47
+import 'dayjs/locale/en-au'
48
+import 'dayjs/locale/es-pr'
49
+import 'dayjs/locale/gd'
50
+import 'dayjs/locale/it'
51
+import 'dayjs/locale/lv'
52
+import 'dayjs/locale/nl-be'
53
+import 'dayjs/locale/se'
54
+import 'dayjs/locale/tet'
55
+import 'dayjs/locale/uz-latn'
56
+import 'dayjs/locale/ar-ly'
57
+import 'dayjs/locale/br'
58
+import 'dayjs/locale/en-ca'
59
+import 'dayjs/locale/es-us'
60
+import 'dayjs/locale/gl'
61
+import 'dayjs/locale/ja'
62
+import 'dayjs/locale/me'
63
+import 'dayjs/locale/nl'
64
+import 'dayjs/locale/si'
65
+import 'dayjs/locale/tg'
66
+import 'dayjs/locale/uz'
67
+import 'dayjs/locale/ar-ma'
68
+import 'dayjs/locale/bs'
69
+import 'dayjs/locale/en-gb'
70
+import 'dayjs/locale/es'
71
+import 'dayjs/locale/gom-latn'
72
+import 'dayjs/locale/jv'
73
+import 'dayjs/locale/mi'
74
+import 'dayjs/locale/nn'
75
+import 'dayjs/locale/sk'
76
+import 'dayjs/locale/th'
77
+import 'dayjs/locale/vi'
78
+import 'dayjs/locale/ar-sa'
79
+import 'dayjs/locale/ca'
80
+import 'dayjs/locale/en-ie'
81
+import 'dayjs/locale/et'
82
+import 'dayjs/locale/gu'
83
+import 'dayjs/locale/ka'
84
+import 'dayjs/locale/mk'
85
+import 'dayjs/locale/oc-lnc'
86
+import 'dayjs/locale/sl'
87
+import 'dayjs/locale/tk'
88
+import 'dayjs/locale/x-pseudo'
89
+import 'dayjs/locale/ar-tn'
90
+import 'dayjs/locale/cs'
91
+import 'dayjs/locale/en-il'
92
+import 'dayjs/locale/eu'
93
+import 'dayjs/locale/he'
94
+import 'dayjs/locale/kk'
95
+import 'dayjs/locale/ml'
96
+import 'dayjs/locale/pa-in'
97
+import 'dayjs/locale/sq'
98
+import 'dayjs/locale/tl-ph'
99
+import 'dayjs/locale/yo'
100
+import 'dayjs/locale/ar'
101
+import 'dayjs/locale/cv'
102
+import 'dayjs/locale/en-in'
103
+import 'dayjs/locale/fa'
104
+import 'dayjs/locale/hi'
105
+import 'dayjs/locale/km'
106
+import 'dayjs/locale/mn'
107
+import 'dayjs/locale/pl'
108
+import 'dayjs/locale/sr-cyrl'
109
+import 'dayjs/locale/tlh'
110
+import 'dayjs/locale/zh-cn'
111
+import 'dayjs/locale/az'
112
+import 'dayjs/locale/cy'
113
+import 'dayjs/locale/en-nz'
114
+import 'dayjs/locale/fi'
115
+import 'dayjs/locale/hr'
116
+import 'dayjs/locale/kn'
117
+import 'dayjs/locale/mr'
118
+import 'dayjs/locale/pt-br'
119
+import 'dayjs/locale/sr'
120
+import 'dayjs/locale/tr'
121
+import 'dayjs/locale/zh-hk'
122
+import 'dayjs/locale/be'
123
+import 'dayjs/locale/da'
124
+import 'dayjs/locale/en-sg'
125
+import 'dayjs/locale/fo'
126
+import 'dayjs/locale/ht'
127
+import 'dayjs/locale/ko'
128
+import 'dayjs/locale/ms-my'
129
+import 'dayjs/locale/pt'
130
+import 'dayjs/locale/ss'
131
+import 'dayjs/locale/tzl'
132
+import 'dayjs/locale/zh-tw'
133
+import 'dayjs/locale/bg'
134
+import 'dayjs/locale/de-at'
135
+import 'dayjs/locale/en-tt'
136
+import 'dayjs/locale/fr-ca'
137
+import 'dayjs/locale/hu'
138
+import 'dayjs/locale/ku'
139
+import 'dayjs/locale/ms'
140
+import 'dayjs/locale/rn'
141
+import 'dayjs/locale/sv-fi'
142
+import 'dayjs/locale/tzm-latn'
143
+import 'dayjs/locale/zh'
144
+import { findDefined } from './misc'
145
+
146
+const dayjs_locales = ['af', 'ar', 'ar-dz', 'ar-kw', 'ar-ly', 'ar-ma', 'ar-sa', 'ar-tn', 'az', 'be', 'bg', 'bm', 'bn',
147
+ 'bo', 'br', 'bs', 'ca', 'cs', 'cv', 'cy', 'da', 'de', 'de-at', 'de-ch', 'dv', 'el', 'en', 'en-au', 'en-ca', 'en-gb',
148
+ 'en-ie', 'en-il', 'en-nz', 'en-SG', 'eo', 'es', 'es-do', 'es-us', 'et', 'eu', 'fa', 'fi', 'fo', 'fr', 'fr-ca',
149
+ 'fr-ch', 'fy', 'ga', 'gd', 'gl', 'gom-latn', 'gu', 'he', 'hi', 'hr', 'hu', 'hy-am', 'id', 'is', 'it', 'it-ch',
150
+ 'ja', 'jv', 'ka', 'kk', 'km', 'kn', 'ko', 'ku', 'ky', 'lb', 'lo', 'lt', 'lv', 'me', 'mi', 'mk', 'ml', 'mn', 'mr',
151
+ 'ms', 'ms-my', 'mt', 'my', 'nb', 'ne', 'nl', 'nl-be', 'nn', 'oc-lnc', 'pa-in', 'pl', 'pt', 'pt-br', 'ro', 'ru',
152
+ 'sd', 'se', 'si', 'sk', 'sl', 'sq', 'sr', 'sr-cyrl', 'ss', 'sv', 'sw', 'ta', 'te', 'tet', 'tg', 'th', 'tl-ph',
153
+ 'tlh', 'tr', 'tzl', 'tzm', 'tzm-latn', 'ug-cn', 'uk', 'ur', 'uz', 'uz-latn', 'vi', 'x-pseudo', 'yo', 'zh-cn',
154
+ 'zh-hk', 'zh-tw']
155
+
156
+function lang2locale(lang: string): string | undefined {
157
+ return dayjs_locales.includes(lang) && lang
158
+ || {
159
+ zn: 'zh-cn',
160
+ no: 'nb',
161
+ }[lang]
162
+ || lang.includes('-') && lang2locale(lang.split('-')[0])
163
+ || undefined
164
+}
165
+
166
+export function getLocale() {
167
+ return findDefined([navigator.language, ...navigator.languages], lang2locale)
168
+}
169
+