首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用i18n自定义块实现Vue 3+ Vuetify 3的地区消息

使用i18n自定义块实现Vue 3+ Vuetify 3的地区消息
EN

Stack Overflow用户
提问于 2022-01-03 17:43:41
回答 2查看 716关注 0票数 0

我希望为每个组件分别设置区域设置消息。我找到了一个示例 --如何为Vue 2做这件事,但是我找不到如何为Vue 3和Vuetify 3做这件事。

package.json

代码语言:javascript
运行
复制
  "dependencies": {
    "@mdi/font": "6.5.95",
    "core-js": "^3.8.3",
    "roboto-fontface": "*",
    "vue": "^3.2.13",
    "vue-class-component": "^8.0.0-0",
    "vue-i18n": "^9.1.2",
    "vue-router": "^4.0.3",
    "vuetify": "npm:@vuetify/nightly@next",
    "vuex": "^4.0.0",
    "webfontloader": "^1.0.0"
  },
  "devDependencies": {
    "@kazupon/vue-i18n-loader": "^0.3.0",  <--- This one is used for Vue 2.
    "@babel/core": "^7.12.16",
    "@babel/eslint-parser": "^7.12.16",
    "@types/webfontloader": "^1.6.34",
    "@typescript-eslint/eslint-plugin": "^5.4.0",
    "@typescript-eslint/parser": "^5.4.0",
    "@vue/cli-plugin-babel": "~5.0.0-rc.1",
    "@vue/cli-plugin-eslint": "~5.0.0-rc.1",
    "@vue/cli-plugin-router": "~5.0.0-rc.1",
    "@vue/cli-plugin-typescript": "~5.0.0-rc.1",
    "@vue/cli-plugin-vuex": "~5.0.0-rc.1",
    "@vue/cli-service": "~5.0.0-rc.1",
    "@vue/eslint-config-typescript": "^9.1.0",
    "eslint": "^7.32.0",
    "eslint-plugin-vue": "^8.0.3",
    "less": "^4.1.1",
    "less-loader": "7.3.0",
    "sass": "^1.38.0",
    "sass-loader": "^10.0.0",
    "typescript": "~4.1.5",
    "vue-cli-plugin-vue-i18n": "~1.0.1",
    "vue-cli-plugin-vuetify": "~2.4.5",
    "vuetify-loader": "^2.0.0-alpha.0"
  },

我的component.vue:

代码语言:javascript
运行
复制
<template>
  <v-card-actions>
    <v-tooltip left>
      <template v-slot:activator="{ props }">
        <v-btn v-bind="props">
          <v-icon size="25">mdi-home</v-icon>
        </v-btn>
      </template>
      <span>{{ $t('hello') }}</span>
    </v-tooltip>
  </v-card-actions>
</template>

<i18n>
{
  "en": {
    "hello": "Hello, world!"
  },
  "ru": {
    "hello": "Привет, мир"
  }
}
</i18n>

和main.ts:

代码语言:javascript
运行
复制
const app = createApp(App)
installI18n(app)

const i18n = createI18n({
  locale: 'en',
  messages: {
  }
})

app
  .use(i18n)
  .use(vuetify)
  .mount('#app')

但是,当我运行组件时,我看不到工具提示中的Hello, world!。有人能帮上忙吗?

编辑:,我尝试使用@intlify/vue-i18n-loader而不是@kazupon/vue-i18n-loader,但是没有帮助。此测试项目可在github上使用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-07 02:20:12

除了按照@BoussadjraBrahim的另一个答案安装@intlify/vue-i18n-loader (而不是@kazupon/vue-i18n-loader)之外,加载程序还必须是Vue CLI项目中的配置vue.config.js中缺少该配置,因此忽略了<i18n>块。

添加以下配置以启用SFCs中<i18n>块的处理:

代码语言:javascript
运行
复制
// vue.config.js
module.exports = {
  chainWebpack: (config) => {
    config.module
      .rule('i18n')
      .resourceQuery(/blockType=i18n/)
      .type('javascript/auto')
      .use('i18n')
      .loader('@intlify/vue-i18n-loader')
      .end()
  },
  ⋮
}

演示

票数 1
EN

Stack Overflow用户

发布于 2022-01-03 17:52:05

您需要安装官方文档中提到的vue-i18n-loader

您需要安装vue-加载程序和vue-i18n-加载程序才能使用自定义块。如果您使用的是单个文件组件,那么vue-加载程序(打开新窗口)很可能已经在您的项目中使用了,但是还必须安装vue-i18n-加载程序(打开新窗口): npm i --save-dev @intlify/vue-i18n-loader

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70569561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档