added LocaleSelector.vue

This commit is contained in:
wea_ondara
2023-09-26 16:35:23 +02:00
parent 79d71e82c4
commit b35ac30856
4 changed files with 49 additions and 1 deletions

View File

@@ -2,12 +2,14 @@
import {Options, Vue} from 'vue-class-component'; import {Options, Vue} from 'vue-class-component';
import BootstrapThemeSwitch from '@/components/bootstrapThemeSwitch/BootstrapThemeSwitch.vue'; import BootstrapThemeSwitch from '@/components/bootstrapThemeSwitch/BootstrapThemeSwitch.vue';
import UserSearch from '@/components/UserSearch.vue'; import UserSearch from '@/components/UserSearch.vue';
import LocaleSelector from '@/components/locale/LocaleSelector.vue';
@Options({ @Options({
name: 'NavBar', name: 'NavBar',
components: { components: {
UserSearch, UserSearch,
BootstrapThemeSwitch, BootstrapThemeSwitch,
LocaleSelector,
}, },
}) })
export default class NavBar extends Vue { export default class NavBar extends Vue {
@@ -52,7 +54,10 @@ export default class NavBar extends Vue {
<UserSearch/> <UserSearch/>
</div> </div>
<div> <div>
<BootstrapThemeSwitch/> <div class="d-flex flex-row align-items-center">
<LocaleSelector class="ms-2"/>
<BootstrapThemeSwitch class="ms-2"/>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -0,0 +1,37 @@
<script lang="ts">
import {Options, Vue} from 'vue-class-component';
@Options({name: 'LocaleSelector'})
export default class LocaleSelector extends Vue {
get locale(): string {
return this.$i18n.locale;
}
set locale(value: string) {
this.$i18n.locale = value;
}
get supportedLocales(): { value: string, text: string } [] {
return [
{value: 'en', text: this.$t('locale.en')},
{value: 'de', text: this.$t('locale.de')},
];
}
}
</script>
<template>
<div class="dropdown">
<button aria-expanded="false" class="btn btn-sm btn-outline-secondary" data-bs-toggle="dropdown" type="button">
<i class="fa fa-language"/>
</button>
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-lg-start">
<li v-for="l in supportedLocales" :key="l.value">
<a :class="{active: locale === l.value}" class="dropdown-item" href="#"
@click.prevent="locale = l.value">
{{ l.text }}
</a>
</li>
</ul>
</div>
</template>

View File

@@ -1,4 +1,6 @@
export const messagesDe = { export const messagesDe = {
locale: messagesEn.locale,
manga: { manga: {
progress: 'Fortschritt', progress: 'Fortschritt',
score: 'Bewertung', score: 'Bewertung',

View File

@@ -1,4 +1,8 @@
export const messagesEn = { export const messagesEn = {
locale: {
'de': 'Deutsch',
'en': 'English',
},
manga: { manga: {
progress: 'Progress', progress: 'Progress',
score: 'Score', score: 'Score',