@@ -106,6 +106,7 @@ let activeLanguage = "en";
106106const STORAGE_KEY_PASSKEY = "zksync_sso_passkey" ;
107107const STORAGE_KEY_ACCOUNT = "zksync_sso_account" ;
108108const STORAGE_KEY_TX_METADATA = "zksync_sso_tx_metadata" ;
109+ const STORAGE_KEY_LANGUAGE = "zksync-interop-demo-language" ;
109110
110111// Auto-refresh interval (in milliseconds)
111112const BALANCE_REFRESH_INTERVAL = 5000 ; // 5 seconds
@@ -150,13 +151,7 @@ const translatedText = () => {
150151// Initialize
151152document . addEventListener ( "DOMContentLoaded" , async ( ) => {
152153 // setup translation
153- async function setLanguage ( lang ) {
154- activeLanguage = lang ;
155- await updateTranslation ( lang ) ;
156- }
157- const select = document . getElementById ( "lang" ) ;
158- select . addEventListener ( "change" , async ( ) => setLanguage ( select . value ) ) ;
159- await initTranslation ( activeLanguage ) ;
154+ await setupTranslation ( ) ;
160155
161156 // Setup public client for balance checks FIRST
162157 publicClient = createPublicClient ( {
@@ -180,6 +175,21 @@ document.addEventListener("DOMContentLoaded", async () => {
180175 loadExistingPasskey ( ) ;
181176} ) ;
182177
178+ async function setupTranslation ( ) {
179+ const select = document . getElementById ( "lang" ) ;
180+ select . addEventListener ( "change" , async ( ) => {
181+ activeLanguage = select . value ;
182+ localStorage . setItem ( STORAGE_KEY_LANGUAGE , select . value ) ;
183+ await updateTranslation ( select . value ) ;
184+ } ) ;
185+ const savedLanguage = localStorage . getItem ( STORAGE_KEY_LANGUAGE ) ;
186+ if ( savedLanguage ) {
187+ activeLanguage = savedLanguage ;
188+ select . value = savedLanguage ;
189+ }
190+ await initTranslation ( activeLanguage ) ;
191+ }
192+
183193function setupEventListeners ( ) {
184194 document . getElementById ( "createPasskeyBtn" ) . addEventListener ( "click" , handleCreatePasskey ) ;
185195 document . getElementById ( "deployAccountBtn" ) . addEventListener ( "click" , handleDeployAccount ) ;
0 commit comments