import{_ as o,r as p,o as l,c,b as s,d as n,a as e,f as t}from"./app.0e52fd78.js";const i={},r=s("h1",{id:"fesjs-plugin-locale",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#fesjs-plugin-locale","aria-hidden":"true"},"#"),n(" @fesjs/plugin-locale")],-1),u=s("h2",{id:"介绍",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#介绍","aria-hidden":"true"},"#"),n(" 介绍")],-1),d={href:"https://github.com/intlify/vue-i18n-next",target:"_blank",rel:"noopener noreferrer"},k=t(`

启用方式

package.json 中引入依赖:

{
    "dependencies": {
        "@fesjs/fes": "^3.0.0",
        "@fesjs/plugin-locale": "^3.0.0"
    }
}

配置

约定式配置

Fes.js 约定如下目录,项目就拥有了 zh-CNen-US 国际化语言切换:

src
  ├── locales
  │    ├── zh-CN.js
  │    └── en-US.js
  └── pages
  │    └── index.vue
  └── app.js

多语言文件的命名规范:<lang>-<COUNTRY>.js

多语言文件的内容规范:键值组成的字面量,如下:

// src/locales/zh-CN.js
export default {
    menu: {
        interface: '接口',
    },
    overview: '概述',
    i18n: {
        internationalization: '国际化,基于',
        achieve: '实现。',
        ui: 'UI组件',
    },
};
// src/locales/en-US.js
export default {
    menu: {
        interface: 'interface',
    },
    overview: 'Overview',
    i18n: {
        internationalization: 'internationalization,base on',
        achieve: 'to achieve.',
        ui: 'UI components',
    },
};
`,11),v={href:"https://vue-i18n.intlify.dev/guide/essentials/syntax.html",target:"_blank",rel:"noopener noreferrer"},g=t(`

编译时配置

在执行 fes dev 或者 fes build 时,通过此配置生成运行时的代码,在配置文件.fes.js 中配置:

export default {
    locale: {},
};

默认配置为:

export default {
    locale: {
        locale: 'zh-CN', // default locale
        fallbackLocale: 'zh-CN', // set fallback locale
        baseNavigator: true, // 开启浏览器语言检测
        legacy: false, // 用户是否需要 Legacy API 模式
    },
};

所有配置项如下:

locale

fallbackLocale

baseNavigator

默认情况下,当前语言环境的识别按照:localStoragefes_locale 值 > 浏览器检测 > default 设置的默认语言 > zh-CN 中文。

legacy

运行时配置

暂无。

API

locale

插件 API 通过 @fesjs/fes 导出:

import { locale } from '@fesjs/fes';

locale.messages

locale.setLocale

import { locale } from '@fesjs/fes';
locale.setLocale({ locale: 'en-US' });

locale.addLocale

import { locale } from '@fesjs/fes';
locale.addLocale({ locale: 'ja-JP', messages: { test: 'テスト' } });

locale.getAllLocales

import { locale } from '@fesjs/fes';
console.log(locale.getAllLocales());
// ["en-US", "id-ID", "ja-JP", "pt-BR", "zh-CN", "zh-TW"]

useI18n

`,33),m=s("code",null,"setup",-1),h={href:"https://vue-i18n.intlify.dev/api/composition.html#usei18n",target:"_blank",rel:"noopener noreferrer"},b=t(`
<template>
    <form>
        <label>{{ t('language') }}</label>
    </form>
    <p>message: {{ t('hello') }}</p>
</template>

<script>
import { useI18n } from '@fesjs/fes'

export default {
 setup() {
   const { t } = useI18n()
   // Something to do ...

   return { ..., t }
 }
}
</script>
`,1),f=s("code",null,"useI18n()",-1),y={href:"https://vue-i18n.intlify.dev/api/composition.html#composer",target:"_blank",rel:"noopener noreferrer"},j=s("code",null,"t",-1),_=s("code",null,"n",-1),x=s("code",null,"d",-1);function w(q,N){const a=p("ExternalLinkIcon");return l(),c("div",null,[r,u,s("p",null,[n("国际化插件,基于 "),s("a",d,[n("Vue I18n"),e(a)]),n(",用于解决 i18n 问题。")]),k,s("p",null,[n("想了解更多语言信息配置、匹配规则,请参考 "),s("a",v,[n("Vue I18n"),e(a)]),n(" 文档。")]),g,s("p",null,[n("Composition API, 只能在 "),m,n(" 函数中使用,更多细节参考 "),s("a",h,[n("Vue I18n"),e(a)]),n("。 \b 举个 🌰:")]),b,s("p",null,[f,n("返回结果是 "),s("a",y,[n("Composer"),e(a)]),n(",提供类似 "),j,n("、"),_,n("、"),x,n(" 等转换函数,在模板中使用。")])])}const C=o(i,[["render",w],["__file","locale.html.vue"]]);export{C as default};