41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
import type { StrapiLocale } from '@nuxtjs/strapi';
|
|
import type { Language as ElementLanguage } from 'element-plus/es/locale';
|
|
import zhCn from 'element-plus/es/locale/lang/zh-cn';
|
|
import en from 'element-plus/es/locale/lang/en';
|
|
|
|
// Strapi本地化映射
|
|
export const strapiLocales: Record<string, StrapiLocale> = {
|
|
zh: 'zh-CN',
|
|
en: 'en',
|
|
};
|
|
|
|
// Element Plus本地化映射
|
|
export const elementPlusLocales: Record<string, ElementLanguage> = {
|
|
zh: zhCn,
|
|
en: en,
|
|
};
|
|
|
|
export const useLocalizations = () => {
|
|
const { locale } = useI18n();
|
|
|
|
// 获取Strapi本地化代码
|
|
const getStrapiLocale = (nuxtLocale?: string): StrapiLocale => {
|
|
const currentLocale = nuxtLocale || locale.value;
|
|
return strapiLocales[currentLocale] || 'zh-Hans';
|
|
};
|
|
|
|
// 获取Element Plus本地化
|
|
const getElementPlusLocale = (nuxtLocale?: string) => {
|
|
const currentLocale = nuxtLocale || locale.value;
|
|
const elementPlusLocale =
|
|
elementPlusLocales[currentLocale] || elementPlusLocales['zh'];
|
|
return elementPlusLocale;
|
|
};
|
|
|
|
return {
|
|
locale: readonly(locale),
|
|
getStrapiLocale,
|
|
getElementPlusLocale,
|
|
};
|
|
};
|