chatwoot/chatwoot

View on GitHub
app/javascript/dashboard/composables/useI18n.js

Summary

Maintainability
A
0 mins
Test Coverage
F
0%
import { computed, getCurrentInstance } from 'vue';
import Vue from 'vue';
import VueI18n from 'vue-i18n';

let i18nInstance = VueI18n;

export function useI18n() {
  if (!i18nInstance) throw new Error('vue-i18n not initialized');

  const i18n = i18nInstance;

  const instance = getCurrentInstance();
  const vm = instance?.proxy || instance || new Vue({});

  const locale = computed({
    get() {
      return i18n.locale;
    },
    set(v) {
      i18n.locale = v;
    },
  });

  return {
    locale,
    t: vm.$t.bind(vm),
    tc: vm.$tc.bind(vm),
    d: vm.$d.bind(vm),
    te: vm.$te.bind(vm),
    n: vm.$n.bind(vm),
  };
}