Skip to content

国际化 (i18n)

SXO 提供了一个轻量级的国际化系统,支持动态语言切换和带参数的消息翻译。

使用方法

全局配置

在应用顶层使用 I18nProvider

vue
<script setup>
import { I18nProvider } from '@sxo/vue';

const messages = {
  en: {
    welcome: 'Welcome, {0}!',
    submit: 'Submit',
    errors: {
      required: 'This field is required'
    }
  },
  zh: {
    welcome: '欢迎,{0}!',
    submit: '提交',
    errors: {
      required: '此字段为必填项'
    }
  }
};
</script>

<template>
  <I18nProvider locale="zh" :messages="messages">
    <App />
  </I18nProvider>
</template>

在组件中使用

使用 useI18n 钩子:

vue
<script setup>
import { useI18n } from '@sxo/vue';

const { t, locale, setLocale } = useI18n();

const changeLang = () => {
  setLocale(locale === 'zh' ? 'en' : 'zh');
};
</script>

<template>
  <div>
    <p>{{ t('welcome', 'SXO') }}</p>
    <button @click="changeLang">切换语言 (当前: {{ locale }})</button>
  </div>
</template>

API

I18nProvider Props

属性类型默认值说明
localestring'en'初始语言
messagesI18nMessages-语言包数据

useI18n Return

属性类型说明
localestring当前语言标识
t(key, ...args) => string翻译函数,支持 {0}, {1} 占位符
setLocale(locale: string) => void切换当前语言