diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2020-02-12 07:12:58 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2020-02-12 07:12:58 +0900 |
| commit | fbc801d1dadfdc0d38298e153facbb34f70af13c (patch) | |
| tree | fc6041f8bedcd24bb94411219d5b172e35758320 /src | |
| parent | :art: (diff) | |
| download | sharkey-fbc801d1dadfdc0d38298e153facbb34f70af13c.tar.gz sharkey-fbc801d1dadfdc0d38298e153facbb34f70af13c.tar.bz2 sharkey-fbc801d1dadfdc0d38298e153facbb34f70af13c.zip | |
言語切り替え
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/init.ts | 22 | ||||
| -rw-r--r-- | src/client/pages/settings/general.vue | 21 |
2 files changed, 32 insertions, 11 deletions
diff --git a/src/client/init.ts b/src/client/init.ts index 9a9ba8be6a..a3953dcd0f 100644 --- a/src/client/init.ts +++ b/src/client/init.ts @@ -61,20 +61,22 @@ if (localStorage.getItem('theme') == null) { } //#region Detect the user language -let lang = null; +let lang = localStorage.getItem('lang'); -if (langs.map(x => x[0]).includes(navigator.language)) { - lang = navigator.language; -} else { - lang = langs.map(x => x[0]).find(x => x.split('-')[0] == navigator.language); +if (lang == null) { + if (langs.map(x => x[0]).includes(navigator.language)) { + lang = navigator.language; + } else { + lang = langs.map(x => x[0]).find(x => x.split('-')[0] == navigator.language); - if (lang == null) { - // Fallback - lang = 'en-US'; + if (lang == null) { + // Fallback + lang = 'en-US'; + } } -} -localStorage.setItem('lang', lang); + localStorage.setItem('lang', lang); +} //#endregion // Detect the user agent diff --git a/src/client/pages/settings/general.vue b/src/client/pages/settings/general.vue index 061838b44d..90803636b9 100644 --- a/src/client/pages/settings/general.vue +++ b/src/client/pages/settings/general.vue @@ -27,6 +27,13 @@ {{ $t('reduceUiAnimation') }} </mk-switch> </div> + <div class="_content"> + <mk-select v-model="lang"> + <template #label>{{ $t('uiLanguage') }}</template> + + <option v-for="x in langs" :value="x[0]" :key="x[0]">{{ x[1] }}</option> + </mk-select> + </div> </section> </template> @@ -36,8 +43,9 @@ import { faImage, faCog } from '@fortawesome/free-solid-svg-icons'; import MkInput from '../../components/ui/input.vue'; import MkButton from '../../components/ui/button.vue'; import MkSwitch from '../../components/ui/switch.vue'; +import MkSelect from '../../components/ui/select.vue'; import i18n from '../../i18n'; -import { apiUrl } from '../../config'; +import { apiUrl, langs } from '../../config'; export default Vue.extend({ i18n, @@ -46,10 +54,13 @@ export default Vue.extend({ MkInput, MkButton, MkSwitch, + MkSelect, }, data() { return { + langs, + lang: localStorage.getItem('lang'), wallpaperUploading: false, faImage, faCog } @@ -72,6 +83,14 @@ export default Vue.extend({ }, }, + watch: { + lang() { + localStorage.setItem('lang', this.lang); + localStorage.removeItem('locale'); + location.reload(); + } + }, + methods: { onWallpaperChange([file]) { this.wallpaperUploading = true; |