diff --git a/app/.vitepress/src/components/header/AppHeader.vue b/app/.vitepress/src/components/header/AppHeader.vue index afc51b124331d344179424c97b4efe7aa6b58009..2a4b431d0dafa440604966ef086468a9b2546640 100644 --- a/app/.vitepress/src/components/header/AppHeader.vue +++ b/app/.vitepress/src/components/header/AppHeader.vue @@ -5,6 +5,7 @@ import { useData } from 'vitepress'; import { useScreen } from '@/composables/useScreen'; import { useAppearance } from '@/stores/common'; +import { useViewStore } from '@/stores/view'; import ContentWrapper from '@/components/ContentWrapper.vue'; import HeaderNav from '@/components/header/HeaderNav.vue'; @@ -17,8 +18,9 @@ import IconMenu from '~icons/app/icon-header-menu.svg'; const { lang } = useData(); const { lePadV } = useScreen(); +const viewStore = useViewStore(); -const langShow = ref(['zh', 'en']); +const langShow = ref(viewStore.isHomeView ? ['zh', 'en', 'ar'] : ['zh', 'en']); const appearanceStore = useAppearance(); // Logo主题判断 diff --git a/app/.vitepress/src/components/header/HeaderLanguage.vue b/app/.vitepress/src/components/header/HeaderLanguage.vue index 0e6e019f1a97999b045518b02f3e44012f1ab61b..55f25f3744097c6590bce86bb438c31e21daf294 100644 --- a/app/.vitepress/src/components/header/HeaderLanguage.vue +++ b/app/.vitepress/src/components/header/HeaderLanguage.vue @@ -26,8 +26,9 @@ langStore.lang = lang.value === 'zh' ? 'zh' : 'en'; // 选择语言; const langOptions = [ - { id: 'zh', label: '中文' }, - { id: 'en', label: 'English' }, + { id: 'zh', label: '简体中文', simple: '中' }, + { id: 'en', label: 'English', simple: 'EN' }, + { id: 'ar', label: 'العربية', simple: 'AR' }, ]; // 选择语言 @@ -38,7 +39,15 @@ const changeLanguageMobile = (newlang: string) => { }; async function changeLanguage(newlang: string) { - if (lang.value === newlang) return; + if (lang.value === newlang) { + return; + } + + if (newlang === 'ar') { + window.location.href = 'https://ar.openeuler.org/ar/docs/'; + return; + } + const { pathname, search } = window.location; const newHref = pathname.replace(`/${lang.value}/`, `/${newlang}/`); langStore.lang = newlang; @@ -53,6 +62,7 @@ async function changeLanguage(newlang: string) { interface LangType { id: string; label: string; + simple: string; } const langList: Ref = ref([]); const filterLang = () => { @@ -75,9 +85,12 @@ watch( ); const getLang = (lang: string, simple?: boolean) => { - return lePadV.value ? - lang === 'zh' ? '中文' : 'EN' - : lang === 'zh' ? simple ? '中' : '简体中文' : simple ? 'EN' : 'English'; + const item = langOptions.find((el: LangType) => el.id === lang); + if (item) { + return simple ? item.simple : item.label; + } + + return simple ? 'EN': 'English'; }; @@ -93,7 +106,7 @@ const getLang = (lang: string, simple?: boolean) => { @@ -101,7 +114,7 @@ const getLang = (lang: string, simple?: boolean) => {
{{ - getLang(item.id) + getLang(item.id, lePadV) }}
@@ -191,7 +204,7 @@ const getLang = (lang: string, simple?: boolean) => { height: 36px; span { color: var(--o-color-info1); - margin-right: var(--o-gap-3); + margin-right: var(--o-gap-1); text-align: center; @include text1; cursor: pointer; @@ -202,7 +215,7 @@ const getLang = (lang: string, simple?: boolean) => { &:not(:last-child) { &:after { content: '|'; - margin-left: var(--o-gap-3); + margin-left: var(--o-gap-1); color: var(--o-color-info1); } }