"use strict";(self.webpackChunkfes_js=self.webpackChunkfes_js||[]).push([[496],{565:(n,s,a)=>{a.r(s),a.d(s,{data:()=>e});const e={key:"v-411c0c9e",path:"/reference/plugin/plugins/locale.html",title:"@fesjs/plugin-locale",lang:"zh-CN",frontmatter:{},excerpt:"",headers:[{level:2,title:"介绍",slug:"介绍",children:[]},{level:2,title:"启用方式",slug:"启用方式",children:[]},{level:2,title:"配置",slug:"配置",children:[{level:3,title:"约定式配置",slug:"约定式配置",children:[]},{level:3,title:"编译时配置",slug:"编译时配置",children:[]},{level:3,title:"运行时配置",slug:"运行时配置",children:[]}]},{level:2,title:"API",slug:"api",children:[{level:3,title:"locale",slug:"locale-1",children:[]},{level:3,title:"useI18n",slug:"usei18n",children:[]}]}],filePathRelative:"reference/plugin/plugins/locale.md",git:{updatedTime:1653450562e3,contributors:[{name:"wanchun",email:"445436867@qq.com",commits:1}]}}},6347:(n,s,a)=>{a.r(s),a.d(s,{default:()=>O});var e=a(6252);const p=(0,e._)("h1",{id:"fesjs-plugin-locale",tabindex:"-1"},[(0,e._)("a",{class:"header-anchor",href:"#fesjs-plugin-locale","aria-hidden":"true"},"#"),(0,e.Uk)(" @fesjs/plugin-locale")],-1),t=(0,e._)("h2",{id:"介绍",tabindex:"-1"},[(0,e._)("a",{class:"header-anchor",href:"#介绍","aria-hidden":"true"},"#"),(0,e.Uk)(" 介绍")],-1),l=(0,e.Uk)("国际化插件,基于 "),o={href:"https://github.com/intlify/vue-i18n-next",target:"_blank",rel:"noopener noreferrer"},c=(0,e.Uk)("Vue I18n"),r=(0,e.Uk)(",用于解决 i18n 问题。"),i=(0,e.uE)('
在 package.json
中引入依赖:
{\n "dependencies": {\n "@fesjs/fes": "^2.0.0",\n "@fesjs/plugin-locale": "^2.0.0"\n },\n}\n
Fes.js 约定如下目录,项目就拥有了 zh-CN
与 en-US
国际化语言切换:
src\n ├── locales\n │ ├── zh-CN.js\n │ └── en-US.js\n └── pages\n │ └── index.vue\n └── app.js\n
多语言文件的命名规范:<lang>-<COUNTRY>.js
多语言文件的内容规范:键值组成的字面量,如下:
// src/locales/zh-CN.js\nexport default {\n menu: {\n interface: '接口'\n },\n overview: '概述',\n i18n: {\n internationalization: '国际化,基于',\n achieve: '实现。',\n ui: 'UI组件'\n }\n};\n
// src/locales/en-US.js\nexport default {\n menu: {\n interface: 'interface'\n },\n overview: 'Overview',\n i18n: {\n internationalization: 'internationalization,base on',\n achieve: 'to achieve.',\n ui: 'UI components'\n }\n};\n
在执行 fes dev
或者 fes build
时,通过此配置生成运行时的代码,在配置文件.fes.js
中配置:
export default {\n locale: {\n }\n}\n
默认配置为:
export default {\n locale: {\n locale: 'zh-CN', // default locale\n fallbackLocale: 'zh-CN', // set fallback locale\n baseNavigator: true, // 开启浏览器语言检测\n legacy: true, // 用户是否需要 Legacy API 模式\n }\n} \n
所有配置项如下:
类型:String
默认值:zh-CN
详情:当前的语言。
类型:String
默认值:zh-CN
详情:兜底的语言,如果当前语言找不到配置,则使用默认语言,需要保证默认语言配置文件存在。
类型:Boolean
默认值:true
详情:开启浏览器语言检测。
默认情况下,当前语言环境的识别按照:localStorage
中 fes_locale
值 > 浏览器检测 > default
设置的默认语言 > zh-CN
中文。
类型:Boolean
默认值:true
详情:用户是否需要 Legacy API 模式
暂无。
插件 API 通过 @fesjs/fes
导出:
import { locale } from '@fesjs/fes'\n
类型:Object
详情:当前的配置的语言信息。
类型:Function
详情:设置当前的语言。
参数:
<lang>-<COUNTRY>
规范的名称。返回值:null
import { locale } from '@fesjs/fes';\nlocale.setLocale({ locale: 'en-US' });\n
类型:Function
详情:手动添加语言配置。
参数:
<lang>-<COUNTRY>
规范的名称。返回值:null
import { locale } from '@fesjs/fes'\nlocale.addLocale({ locale: 'ja-JP', messages: { test: 'テスト' } });\n
类型:Function
详情:获取当前获得所有国际化文件的列表,默认会在 locales 文件夹下寻找类似 en-US.js
文件。
参数:null
返回值:Array
import { locale } from '@fesjs/fes';\nconsole.log(locale.getAllLocales());\n// ["en-US", "id-ID", "ja-JP", "pt-BR", "zh-CN", "zh-TW"]\n
<template>\n <form>\n <label>{{ t('language') }}</label>\n </form>\n <p>message: {{ t('hello') }}</p>\n</template>\n\n<script>\nimport { useI18n } from '@fesjs/fes'\n\nexport default {\n setup() {\n const { t } = useI18n()\n // Something to do ...\n\n return { ..., t }\n }\n}\n</script>\n