赞
踩
npm install vue-i18n@9
- // main.ts
- import { createApp,h } from 'vue'
- import vueI18n from "@/i18n/index";
- const app = createApp(App)
- app.use(vueI18n)
- // i18n/index.ts
- import { createI18n, useI18n } from 'vue-i18n'
- import en from './en.js'
- import zh from './zh.js'
-
- export default createI18n({
- // 默认语言
- locale: 'zh',
-
- legacy: false, // 想要同时能在setup语法糖、组合式API相关文件上使用,该项必须设置为 false。 固定false就行了,都vue3了,还想啥呢。。
-
- // 是否关闭控制台警告
- silentFallbackWarn: false,
-
- // 配置数字 格式; 用法: $n(1000, 'currency')
- numberFormats: {
- 'zh': {
- currency: {
- style: 'currency', currency: 'USD', notation: 'standard'
- }
- },
- 'en': {
- currency: {
- style: 'currency', currency: 'JPY', useGrouping: true, currencyDisplay: 'symbol'
- }
- }
- },
-
- // 设置语言环境
- messages: {
- 'zh': zh,
- 'en': en,
- },
-
- // 设置后备语言,当 locale 默认语言没数据时,从该数组内 按顺序从头到尾,在对应的 语言包 里找
- fallbackLocale: [ 'zh', 'en' ],
- })
- // i18n/zh.js
- export default {
- "header": {
- "chat": "聊天"
- },
- animations: {
- lily: '终将成为你',
- slot1: '{c} 蒜', // 命名插入值 写法
- hello: '{0} world {1}', // 数组写法
- repeat: '@:animations.lily <重复的', // 文本引用
-
- // Modifier 修饰符 > 还可自定义修饰符规则,此处不做介绍,需要用到再去看文档
- sample1: 'liljiahui niu bi',
- test1: '@.upper:animations.sample1 全部 大写', // 全部 大写
- test2: '@.lower:animations.sample1 全部 小写', // 全部 小写
- test3: '@.capitalize:animations.sample1 首字母 大写', // 首字母 大写
-
- html1: '你好 <span>span标签</span> world', // html 结构
-
- // vue3 版的,不再需要使用 $tc(), 已经集成到 t() 和 $t()
- car: '一个小车 | 多个车车', // 只有2个时候, 不是单数1的,其他统统转译为复数 !
- apple: 'no apples | one apple | {count} apples', // 该声明方法 需保证声明顺序 无 | 单数 | 复数
-
- onlyZH: '默认语言有的,其他语言没有,则切换语言后,该内容不会变动',
- // onlyEN: '纯注释,写在这里方便当文档看' //<> 当默认的zh 没有,则使用设置的 其他语言
- }
- }
- // i18n/en.js
- export default {
- "header": {
- "chat": "chat"
- },
- animations: {
- lily: 'Yagate Kimi ni Naru',
- slot1: '{c} recoil', // 命名插入值 写法
- hello: '{1} world {0}', // 数组写法
- repeat: '@:animations.lily', // 文本引用
-
- // Modifier 修饰符
- sample1: 'lil JIA hui niu bi',
- test1: '@.upper:animations.sample1 ceshi',
- test2: '@.lower:animations.sample1 ceshi',
- test3: '@.capitalize:animations.sample1 ceshi',
-
- html1: 'hello <span>span标签</span> world', // html 结构
-
- car: 'car | cars',
- apple: 'no apples | one apple | {count} apples',
-
- // onlyZH: '单纯的注释,无意义,不用管',
- onlyEN: 'en - 中文没有,英文有的,设置后备语言功能' // 当默认的zh 没有,则使用设置的 其他语言
- }
- }
- <template>
- <div>
- <el-button plain @click="setLang">切换语言</el-button>
- <el-button type="danger" plain @click="$router.back()">返回</el-button>
- </div>
- <div>
- {{ $t('header.chat') }}
- </div>
- <div>
- {{ $t('animations.lily') }}
- </div>
- <div>
- {{ $t('animations.slot1', { c: '石'}) }}
- </div>
- <div>
- {{ $t('animations.hello', ['hello','sb2']) }}
- </div>
- <div>
- {{ $t('animations.repeat') }}
- </div>
- <div>
- {{ $t('animations.test1') }}
- </div>
- <div>
- {{ $t('animations.test2') }}
- </div>
- <div>
- {{ $t('animations.test3') }}
- </div>
- <div v-html="$t('animations.html1')"></div>
- <div>
- {{ $t('animations.car',0) }} 》
- {{ $t('animations.car',1) }} 》
- {{ $t('animations.car',2) }} 》
- </div>
- <div>
- {{ $t('animations.apple', 0) }} 》
- {{ $t('animations.apple', 1) }} 》
- {{ t('animations.apple', 66) }} 》: 该写法可直接传入数字,或者照旧对象写法 {count: 4}
- <p>{{ t('animations.apple', {count: '第三个参数指定 无和单复数,该对象则为命名插入值 写法'}, 110) }}</p>
- </div>
- <div>
- {{ $n(10000, 'currency') }}
- </div>
- <div>
- {{ $t('animations.onlyZH') }} -- onlyZH
- </div>
- <div>
- {{ $t('animations.onlyEN') }} -- onlyEN
- </div>
- </template>
-
- <script lang="ts" setup>
- import { useI18n } from "vue-i18n";
- const { locale, t } = useI18n();
-
- let lang = 'zh'
- function setLang() {
- locale.value = lang == 'zh' ? 'en' : 'zh' // 更改语言!
- lang = lang == 'zh' ? 'en' : 'zh'
- }
-
- </script>
-
- <style lang="less" scoped>
-
- </style>
此文章质量较低,请凑够行数?
此文章质量较低,请凑够行数?
此文章质量较低,请凑够行数?
此文章质量较低,请凑够行数?
此文章质量较低,请凑够行数?
此文章质量较低,请凑够行数?
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。