javascript - Hur får man den konfigurerade fallback-lokalen som en sträng från Vue-i18n?


Jag använder vue-i18n för min Vue 3-app. Appen är konfigurerad så här

const i18n = createI18n({
  legacy: false,
  locale: "en",
  fallbackLocale: "en",
});

Inuti min komponent använder jag

import { useI18n } from "vue-i18n";

const { locale, fallbackLocale } = useI18n();

där locale.value returnerar en sträng, men fallbackLocale.value returnerar en anpassad typ. https://vue-i18n.intlify.dev/guide/essentials/fallback.html#fallbacking visar att det kan finnas flera lokaler.

Eftersom jag kunde kontrollera mot varje reservspråk behöver jag hitta ett sätt att iterera fallbackLocale. För närvarande kunde jag inte lista ut hur, en for...in-loop fungerade inte för mig, den säger

TS2407: Höger sida av ett 'for...in'-uttryck måste vara av typen 'any', en objekttyp eller en typparameter, men här har den typen 'FallbackLocales'.


Mitt användningsfall:

Ett externt API returnerar en post med lokaler och deras meddelanden. Baserat på mina inställningar vill jag läsa det översatta meddelandet från det:

import { useI18n } from "vue-i18n";

const { locale, fallbackLocale } = useI18n();

const myRecord: Record<string /* locale */, string /* text */> = { "en": "title", "de": "titel" };

function getContent(): string {
    if (locale.value in myRecord) {
      return myRecord[locale.value];
    }

    // try the fallback locales before throwing an error...

    throw new Error('missing translation...');
}