当前位置:   article > 正文

vue3 语言国际化 vue-i18n_vue-18n 首字母大写语法

vue-18n 首字母大写语法

vue3 + vite&webpack + 组合式Api开发;
vue-i18n 相关配置;
vue-i18n 安装、使用案例、教程、setup Api


1、安装 vue-i18n,版本需 9.x 以上!

npm install vue-i18n@9

2、vue-i18n 相关配置、引入方式;

  1. // main.ts
  2. import { createApp,h } from 'vue'
  3. import vueI18n from "@/i18n/index";
  4. const app = createApp(App)
  5. app.use(vueI18n)
  1. // i18n/index.ts
  2. import { createI18n, useI18n } from 'vue-i18n'
  3. import en from './en.js'
  4. import zh from './zh.js'
  5. export default createI18n({
  6. // 默认语言
  7. locale: 'zh',
  8. legacy: false, // 想要同时能在setup语法糖、组合式API相关文件上使用,该项必须设置为 false。 固定false就行了,都vue3了,还想啥呢。。
  9. // 是否关闭控制台警告
  10. silentFallbackWarn: false,
  11. // 配置数字 格式; 用法: $n(1000, 'currency')
  12. numberFormats: {
  13. 'zh': {
  14. currency: {
  15. style: 'currency', currency: 'USD', notation: 'standard'
  16. }
  17. },
  18. 'en': {
  19. currency: {
  20. style: 'currency', currency: 'JPY', useGrouping: true, currencyDisplay: 'symbol'
  21. }
  22. }
  23. },
  24. // 设置语言环境
  25. messages: {
  26. 'zh': zh,
  27. 'en': en,
  28. },
  29. // 设置后备语言,当 locale 默认语言没数据时,从该数组内 按顺序从头到尾,在对应的 语言包 里找
  30. fallbackLocale: [ 'zh', 'en' ],
  31. })
  1. // i18n/zh.js
  2. export default {
  3. "header": {
  4. "chat": "聊天"
  5. },
  6. animations: {
  7. lily: '终将成为你',
  8. slot1: '{c} 蒜', // 命名插入值 写法
  9. hello: '{0} world {1}', // 数组写法
  10. repeat: '@:animations.lily <重复的', // 文本引用
  11. // Modifier 修饰符 > 还可自定义修饰符规则,此处不做介绍,需要用到再去看文档
  12. sample1: 'liljiahui niu bi',
  13. test1: '@.upper:animations.sample1 全部 大写', // 全部 大写
  14. test2: '@.lower:animations.sample1 全部 小写', // 全部 小写
  15. test3: '@.capitalize:animations.sample1 首字母 大写', // 首字母 大写
  16. html1: '你好 <span>span标签</span> world', // html 结构
  17. // vue3 版的,不再需要使用 $tc(), 已经集成到 t() 和 $t()
  18. car: '一个小车 | 多个车车', // 只有2个时候, 不是单数1的,其他统统转译为复数 !
  19. apple: 'no apples | one apple | {count} apples', // 该声明方法 需保证声明顺序 无 | 单数 | 复数
  20. onlyZH: '默认语言有的,其他语言没有,则切换语言后,该内容不会变动',
  21. // onlyEN: '纯注释,写在这里方便当文档看' //<> 当默认的zh 没有,则使用设置的 其他语言
  22. }
  23. }
  1. // i18n/en.js
  2. export default {
  3. "header": {
  4. "chat": "chat"
  5. },
  6. animations: {
  7. lily: 'Yagate Kimi ni Naru',
  8. slot1: '{c} recoil', // 命名插入值 写法
  9. hello: '{1} world {0}', // 数组写法
  10. repeat: '@:animations.lily', // 文本引用
  11. // Modifier 修饰符
  12. sample1: 'lil JIA hui niu bi',
  13. test1: '@.upper:animations.sample1 ceshi',
  14. test2: '@.lower:animations.sample1 ceshi',
  15. test3: '@.capitalize:animations.sample1 ceshi',
  16. html1: 'hello <span>span标签</span> world', // html 结构
  17. car: 'car | cars',
  18. apple: 'no apples | one apple | {count} apples',
  19. // onlyZH: '单纯的注释,无意义,不用管',
  20. onlyEN: 'en - 中文没有,英文有的,设置后备语言功能' // 当默认的zh 没有,则使用设置的 其他语言
  21. }
  22. }

3、在组件中使用

  1. <template>
  2. <div>
  3. <el-button plain @click="setLang">切换语言</el-button>
  4. <el-button type="danger" plain @click="$router.back()">返回</el-button>
  5. </div>
  6. <div>
  7. {{ $t('header.chat') }}
  8. </div>
  9. <div>
  10. {{ $t('animations.lily') }}
  11. </div>
  12. <div>
  13. {{ $t('animations.slot1', { c: '石'}) }}
  14. </div>
  15. <div>
  16. {{ $t('animations.hello', ['hello','sb2']) }}
  17. </div>
  18. <div>
  19. {{ $t('animations.repeat') }}
  20. </div>
  21. <div>
  22. {{ $t('animations.test1') }}
  23. </div>
  24. <div>
  25. {{ $t('animations.test2') }}
  26. </div>
  27. <div>
  28. {{ $t('animations.test3') }}
  29. </div>
  30. <div v-html="$t('animations.html1')"></div>
  31. <div>
  32. {{ $t('animations.car',0) }} 》
  33. {{ $t('animations.car',1) }} 》
  34. {{ $t('animations.car',2) }} 》
  35. </div>
  36. <div>
  37. {{ $t('animations.apple', 0) }} 》
  38. {{ $t('animations.apple', 1) }} 》
  39. {{ t('animations.apple', 66) }} 》: 该写法可直接传入数字,或者照旧对象写法 {count: 4}
  40. <p>{{ t('animations.apple', {count: '第三个参数指定 无和单复数,该对象则为命名插入值 写法'}, 110) }}</p>
  41. </div>
  42. <div>
  43. {{ $n(10000, 'currency') }}
  44. </div>
  45. <div>
  46. {{ $t('animations.onlyZH') }} -- onlyZH
  47. </div>
  48. <div>
  49. {{ $t('animations.onlyEN') }} -- onlyEN
  50. </div>
  51. </template>
  52. <script lang="ts" setup>
  53. import { useI18n } from "vue-i18n";
  54. const { locale, t } = useI18n();
  55. let lang = 'zh'
  56. function setLang() {
  57. locale.value = lang == 'zh' ? 'en' : 'zh' // 更改语言!
  58. lang = lang == 'zh' ? 'en' : 'zh'
  59. }
  60. </script>
  61. <style lang="less" scoped>
  62. </style>


此文章质量较低,请凑够行数?

此文章质量较低,请凑够行数?

此文章质量较低,请凑够行数?

此文章质量较低,请凑够行数?

此文章质量较低,请凑够行数?

此文章质量较低,请凑够行数?

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/418093
推荐阅读
相关标签
  

闽ICP备14008679号