Open BetaZebra opened 2 years ago
<script>
import { defineComponent, ref, watch } from "vue";
import { useI18n } from 'vue-i18n';
export default defineComponent({
name: "LanguageSwitcher",
setup(){
// multi-lingual support inside the app
const { t, locale } = useI18n(); // `locale` is used to switch between `de.json`, `en.json`, etc.
// The user's preferred app language, i.e. for menus, etc.
const language = ref(); // or `navigator.language` or load setting from database
// load `language` setting from firebase
... here ...
// in case `language` was not set
if (typeof language.value == "undefined") {
language.value = locale.value
}
// Sync `language` and `locale`
watch(
() => language.value,
(lang) => { locale.value = lang }
)
return { t, language }
}
});
</script>
The dropdown menu as component
<template>
<ion-item>
<ion-select interface="popover"
placeholder="pick your app language"
@ionChange="language = $event.target.value"
v-bind:value="language">
<ion-select-option value="en">English</ion-select-option>
<ion-select-option value="fr">Français </ion-select-option>
<ion-select-option value="de">Deutsch</ion-select-option>
<ion-select-option value="de-leicht">Deutsch (Leichte Sprache)</ion-select-option>
<ion-select-option value="de-AT">Deutsch (Österreich)</ion-select-option>
<ion-select-option value="de-CH">Deutsch (Schweiz)</ion-select-option>
<ion-select-option value="de-DE-ksh">Deutsch (Kölsch)</ion-select-option>
<ion-select-option value="de-DE-nds">Deutsch (Niederdt. Platt)</ion-select-option>
<ion-select-option value="de-DE-bai">Deutsch (Bairisch in Deutschland)</ion-select-option>
</ion-item>
</template>
Die Dateien im Ordner @/translations
heißen entsprechend de.json
, de-AT.json
, de-leicht.json
, de-DE-ksh.json
, usw.
de-AT
für die Sprache Deutsch in Land Österreich.ksh
für Rheinländisch/Kölsch, nds
für Niedersächsisch/Platt, bai
für Bairische Dialekte, usw. Das hängt man dann als Drittes dran.de-leicht
, de-amtsdeutsch
, de-sonstwas
bitte erst ganz am ende
Ja sehe das auch so. Am Ende könnt ihr so ein Dropdown programmieren und die präferierte Appsprache des Nutzers in Firebase speichern. Nimmt dann nur Deutsch (de.json
) und English (en.json
) für 1-2 Übersetzungsbeispiele, z.B. <tag>{{ t("general.appname") }} </tag>
. Sowas richtig allgemeines.
Bitte keine ausschweifende Übersetzungstätigkeit im engeren Sinne an dieser Stelle durchführen; Das ist ein anderer Job/Beruf.
bitte erst ganz am ende