@hannyto1111

Как использовать en.json/ru.json для перевода приложения?

Здравтсвуйте, создав проект Vue 3 CLI + i18n я обнаружил что i18n не смортит переводы находящиеся в папке locales, а добавленые в виде тега работают исправно. К примеру
//en.json
{
  "message": "hello i18n !!"
}

<template>
  <p>{{ t("message") }}</p>
  <p>{{ t("hello") }}</p>
</template>

<script>
//HelloWorld component
import { defineComponent } from "vue";
import { useI18n } from "vue-i18n";

export default defineComponent({
  name: "HelloWorld",
  setup() {
    const { t } = useI18n({
      inheritLocale: true,
       useScope: "local",
      localStorage: true,
    });
    alert(t("message"));
    // Something todo ..

    return { t };
  },
});
</script>

<i18n>
{
  "en": {
    "hello": "Hello i18n in SFC!"
  }
}
</i18n>

//i18n.js
import { createI18n } from "vue-i18n";

function loadLocaleMessages() {
  const locales = require.context(
    "./locales",
    true,
    /[A-Za-z0-9-_,\s]+\.json$/i
  );
  const messages = {};
  locales.keys().forEach((key) => {
    const matched = key.match(/([A-Za-z0-9-_]+)\./i);
    if (matched && matched.length > 1) {
      const locale = matched[1];
      messages[locale] = locales(key);
    }
  });
  return messages;
}

export default createI18n({
  legacy: false,
  locale: process.env.VUE_APP_I18N_LOCALE || "en",
  fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || "en",
  messages: loadLocaleMessages(),
});

Тоэсть у меня успешно переведётся hello, но не переведётся messages, почему это происходит, и как это исправить
  • Вопрос задан
  • 134 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы