Skip to content

Commit f4fd5f9

Browse files
committed
Add language switcher to the setup page
1 parent 54db139 commit f4fd5f9

File tree

3 files changed

+38
-2
lines changed

3 files changed

+38
-2
lines changed

extension/src/setup/install.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,12 @@ <h1 class="text-center" data-i18n="setupPageTitle"></h1>
134134
<p data-i18n="setupPageReady"></p>
135135
</div>
136136

137+
<!-- Language Switcher -->
138+
<div class="language-switcher mx-auto text-center">
139+
<label class="fw-bold mb-2" for="setup-language" data-i18n="managePageSettingsLanguage"></label>
140+
<select class="form-select form-select-sm" id="setup-language"></select>
141+
</div>
142+
137143
</div>
138144
</div>
139145
</div>

extension/src/setup/install.js

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import '../utils/i18nHtml'
22

33
import { iframeResize } from 'iframe-resizer'
44

5-
import { isAutoRuntimeInstallSupported } from '../utils'
6-
import { getMessage } from '../utils/i18n'
5+
import { isAutoRuntimeInstallSupported, PREF_LOCALE } from '../utils'
6+
import { getAllLocales, getCurrentLocale, getMessage } from '../utils/i18n'
77

88
const iframeResizer = iframeResize({}, '#connector-instructions')[0].iFrameResizer
99

@@ -159,3 +159,23 @@ async function startWizard () {
159159
}
160160

161161
startWizard()
162+
163+
/*****************************
164+
Language Switcher
165+
****************************/
166+
167+
async function handleLanguageSwitcher () {
168+
const languageElement = document.getElementById('setup-language')
169+
const languageNames = new Intl.DisplayNames(['en'], { type: 'language', languageDisplay: 'standard' })
170+
const allLocales = getAllLocales().map(code => [languageNames.of(code), code]).sort((a, b) => a[0].localeCompare(b[0], 'en'))
171+
const currentLocale = await getCurrentLocale()
172+
for (const [name, code] of allLocales) {
173+
languageElement.append(new Option(name, code, code === currentLocale, code === currentLocale))
174+
}
175+
languageElement.addEventListener('change', async function () {
176+
await browser.storage.local.set({ [PREF_LOCALE]: this.value })
177+
window.location.reload()
178+
})
179+
}
180+
181+
handleLanguageSwitcher()

extension/src/setup/install.scss

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,13 @@
6464
text-align: justify;
6565
text-justify: inter-word;
6666
}
67+
68+
//////////////////////////////
69+
// Language Switcher
70+
//////////////////////////////
71+
72+
.language-switcher {
73+
margin-top: 1rem;
74+
padding-bottom: 0;
75+
width: 200px;
76+
}

0 commit comments

Comments
 (0)