javascript - Pridať podmienku RTL do hlavičky s Nuxt Js i18n


Chcel by som pridať podmienku nasledovne

if(app.i18n.locale == 'ar')

V tomto projekte používam arabčinu spolu s angličtinou. Ak je aktuálnym jazykom arabčina, do hlavičky sa pridá bootstrap-rtl.css, a ak je aktuálnym jazykom angličtina, zavolá sa bootstrap.css. Skúšal som viac ako jednu metódu a nepodarilo sa mi to.

Odpoveď č. 1

Pridajte súbor do priečinka pluginov, napríklad direction-control.js

    export default ({ app }, inject) => {
    const dir = () =>
      app.i18n.locales.find((x) => x.code === app.i18n.locale)?.dir;
      inject('dir', dir);
    };

Kým váš nuxt.config.js bude potrebovať podobný kód ako tento

  plugins: [
      '~/plugins/direction-control',  // your plugins file name
      // other plugins
    ],
    modules: [
    [
      'nuxt-i18n',
      {
        locales: [
          {
            code: 'en',
            file: 'en.json',
            dir: 'ltr',
            name: 'English',
          },
          {
            code: 'ar',
            file: 'ar.json',
            dir: 'rtl',        // that will be passed to your app
            name: 'عربي',
          },
        ],
        langDir: 'translations/',
        defaultLocale: 'ar',
      },
    ],
  ],

Teraz je čas sa zašpiniť

export default {
  mounted() {
    console.log(this.$dir()); // logs your direction 'ltr' or 'rtl'
    console.log(this.$i18n.locale);
    if (this.$i18n.locale == "ar") {
       // make some action
    }
  },
}

alebo vo vnútri šablóny ako toto

<template>
  <div :dir="$dir()">
    <Nuxt />
  </div>
</template>