@@ -7,15 +7,14 @@ import * as settings from 'src/utils/settings';
77import each from 'src/utils/each' ;
88import wrap from 'src/utils/2.pokemon' ;
99import Translation from 'src/structures/constants/translation' ;
10- import { buttonCSS , scriptVersion } from 'src/utils/1.variables' ;
10+ import { buttonCSS , DAY , scriptVersion , HOUR , UNDERSCRIPT } from 'src/utils/1.variables' ;
1111import sleep from 'src/utils/sleep' ;
1212import createParser from 'src/utils/parser' ;
1313import DialogHelper from 'src/utils/DialogHelper' ;
1414import { getVersion } from 'src/utils/plugin' ;
1515import compound from 'src/utils/compoundEvent' ;
16+ import { getTranslationArray } from 'src/base/underscript/translation' ;
1617
17- const HOUR = 60 * 60 * 1000 ;
18- const DAY = 24 * HOUR ;
1918const CHECKING = 'underscript.update.checking' ; // TODO: change to setting?
2019const LAST = 'underscript.update.last' ; // TODO: change to setting?
2120const PREFIX = 'underscript.pending.' ;
@@ -24,33 +23,43 @@ let autoTimeout;
2423let toast ;
2524
2625export const disabled = settings . register ( {
27- // TODO: translation
28- name : 'Disable Auto Updates' ,
26+ name : Translation . Setting ( 'update' ) ,
2927 key : 'underscript.disable.updates' ,
30- // TODO: translation
31- category : 'Updates' ,
28+ category : Translation . CATEGORY_UPDATES ,
3229} ) ;
3330
3431export const silent = settings . register ( {
35- name : 'Run automatic updates in the background' ,
32+ name : Translation . Setting ( 'update.silent' ) ,
3633 key : 'underscript.updates.silent' ,
37- category : 'Updates' ,
34+ category : Translation . CATEGORY_UPDATES ,
3835} ) ;
3936
37+ const keys = {
38+ frequency : Translation . Setting ( 'update.frequency.option' ) . key ,
39+ toast : Translation . Toast ( 'updater' ) ,
40+ button : Translation . General ( 'updater.open' ) ,
41+ checking : Translation . Toast ( 'update.checking' ) ,
42+ update : Translation . Menu ( 'update' ) ,
43+ updateNote : Translation . Menu ( 'update.note' , 1 ) ,
44+ available : Translation . Toast ( 'update.available' , 1 ) ,
45+ title : Translation . General ( 'updates' ) ,
46+ updateCurrent : Translation . General ( 'update.current' , 1 ) ,
47+ updateNew : Translation . General ( 'update.new' , 1 ) ,
48+ } ;
49+
4050const frequency = settings . register ( {
41- // TODO: translation
42- name : 'Update Frequency' ,
51+ name : Translation . Setting ( 'update.frequency' ) ,
4352 key : 'underscript.updates.frequency' ,
44- // TODO: translation
45- data : [
46- [ 'Page Load' , 0 ] ,
47- [ 'Hourly' , HOUR ] ,
48- [ 'Daily' , DAY ] ,
49- ] ,
53+ data : ( ) => {
54+ const tls = getTranslationArray ( keys . frequency ) ;
55+ return [ 0 , HOUR , DAY ] . map ( ( val , i ) => ( tls ? [
56+ tls [ i ] ,
57+ val ,
58+ ] : val ) ) ;
59+ } ,
5060 default : HOUR ,
5161 type : 'select' ,
52- // TODO: translation
53- category : 'Updates' ,
62+ category : Translation . CATEGORY_UPDATES ,
5463 transform ( value ) {
5564 return Number ( value ) || 0 ;
5665 } ,
@@ -121,12 +130,11 @@ function notify(text, addButton = false) {
121130 toast . setText ( text ) ;
122131 } else {
123132 toast = Toast ( {
124- // TODO: translation
125- title : 'UnderScript updater' ,
133+ title : keys . toast . translate ( ) ,
126134 text,
127135 className : 'dismissable' ,
128136 buttons : addButton ? {
129- text : 'Show Updates' ,
137+ text : keys . button . translate ( ) ,
130138 className : 'dismiss' ,
131139 css : buttonCSS ,
132140 onclick : open ,
@@ -162,11 +170,9 @@ async function check(auto = true) {
162170 const updateFound = [ ...pendingUpdates . values ( ) ] . filter ( ( { announce = true } ) => announce ) . length ;
163171 if ( updateFound ) {
164172 finish ( ) ;
165- // TODO: translation
166- notify ( 'Updates available.' , true ) ;
173+ notify ( keys . available . translate ( updateFound ) , true ) ;
167174 } else if ( ! auto && ! pendingUpdates . size ) {
168- // TODO: translation
169- notify ( 'No updates available.' ) ;
175+ notify ( keys . available . translate ( 0 ) ) ;
170176 sleep ( 3000 ) . then ( finish ) ;
171177 } else {
172178 sleep ( 1000 ) . then ( finish ) ;
@@ -193,33 +199,31 @@ function setup() {
193199
194200 const updateFound = [ ...pendingUpdates . values ( ) ] . filter ( ( { announce = true } ) => announce ) . length ;
195201 if ( updateFound ) {
196- notify ( 'Updates available.' , true ) ;
202+ notify ( keys . available . translate ( updateFound ) , true ) ;
197203 }
198204}
199205
200206function open ( ) {
201207 dialog . open ( {
202- title : 'Pending Updates' , // TODO: translation
208+ title : keys . title ,
203209 message : build ,
204210 } ) ;
205211}
206212
207213menu . addButton ( {
208- // TODO: translation
209- text : 'Check for updates' ,
214+ text : Translation . Menu ( 'update' ) ,
210215 action ( ) {
211216 check ( false ) ;
212217 } ,
213218 note ( ) {
214219 const last = Number ( localStorage . getItem ( LAST ) ) ;
215- // TODO: translation
216- return `Last Checked: ${ last ? luxon . DateTime . fromMillis ( last ) . toLocaleString ( luxon . DateTime . DATETIME_FULL ) : 'never' } ` ;
220+ const when = last ? luxon . DateTime . fromMillis ( last ) . toLocaleString ( luxon . DateTime . DATETIME_FULL ) : 'never' ;
221+ return keys . updateNote . translate ( when ) ;
217222 } ,
218223} ) ;
219224
220225menu . addButton ( {
221- // TODO: translation
222- text : 'Show Pending Updates' ,
226+ text : Translation . Menu ( 'update.pending' ) ,
223227 action : open ,
224228 // note() {},
225229 hidden ( ) {
@@ -230,8 +234,7 @@ menu.addButton({
230234eventManager . on ( ':update' , ( auto ) => {
231235 toast ?. close ( ) ;
232236 if ( auto && silent . value ( ) ) return ;
233- // TODO: translation
234- notify ( 'Checking for updates. Please wait.' ) ;
237+ notify ( keys . checking . translate ( ) ) ;
235238} ) ;
236239
237240// Load pending updates
@@ -254,7 +257,7 @@ function build() {
254257 function refreshButton ( ) {
255258 if ( addedRefresh ) return ;
256259 dialog . prependButton ( {
257- label : 'Refresh Page' ,
260+ label : Translation . General ( 'refresh' ) . translate ( ) ,
258261 cssClass : 'btn-success' ,
259262 action ( ) {
260263 location . reload ( ) ;
@@ -269,7 +272,7 @@ function build() {
269272 version,
270273 } ) {
271274 const button = $ ( `<a>` )
272- . text ( `Update to ${ version } ` ) // TODO: translation
275+ . text ( keys . updateNew . translate ( version ) )
273276 . attr ( {
274277 href : url ,
275278 rel : 'noreferrer' ,
@@ -284,21 +287,21 @@ function build() {
284287 } ) ;
285288 container . append ( $ ( '<fieldset>' ) . append (
286289 $ ( '<legend>' ) . text ( name ) ,
287- $ ( '<div>' ) . text ( `Current: ${ currentVersion || 'unknown' } ` ) ,
290+ $ ( '<div>' ) . text ( keys . updateCurrent . translate ( currentVersion || Translation . UNKNOWN . translate ( ) ) ) ,
288291 button ,
289292 ) ) ;
290293 }
291- const underscript = pendingUpdates . get ( 'UnderScript' ) ;
294+ const underscript = pendingUpdates . get ( UNDERSCRIPT ) ;
292295 if ( underscript ) {
293296 add ( {
294297 ...underscript ,
295- name : 'UnderScript' ,
298+ name : UNDERSCRIPT ,
296299 currentVersion : scriptVersion ,
297300 } ) ;
298301 }
299302 [ ...pendingUpdates . entries ( ) ] . forEach (
300303 ( [ name , data ] ) => {
301- if ( name === 'UnderScript' ) return ;
304+ if ( name === UNDERSCRIPT ) return ;
302305 add ( {
303306 ...data ,
304307 name,
0 commit comments