summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2020-02-12 07:12:58 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2020-02-12 07:12:58 +0900
commitfbc801d1dadfdc0d38298e153facbb34f70af13c (patch)
treefc6041f8bedcd24bb94411219d5b172e35758320 /src
parent:art: (diff)
downloadsharkey-fbc801d1dadfdc0d38298e153facbb34f70af13c.tar.gz
sharkey-fbc801d1dadfdc0d38298e153facbb34f70af13c.tar.bz2
sharkey-fbc801d1dadfdc0d38298e153facbb34f70af13c.zip
言語切り替え
Diffstat (limited to 'src')
-rw-r--r--src/client/init.ts22
-rw-r--r--src/client/pages/settings/general.vue21
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;