This is an automated email from the ASF dual-hosted git repository. robin0716 pushed a commit to branch docs/sync-plugins in repository https://gitbox.apache.org/repos/asf/incubator-answer-website.git
commit 90ad54ed14bae2c385a2e332b8cd28c392c6d4bc Author: robin <[email protected]> AuthorDate: Mon Jul 15 16:10:45 2024 +0800 refactor: Plugin information list supports internationalization --- src/pages/plugins.tsx | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/pages/plugins.tsx b/src/pages/plugins.tsx index fc1f0f96c..8cd5383bb 100644 --- a/src/pages/plugins.tsx +++ b/src/pages/plugins.tsx @@ -1,6 +1,7 @@ import React, { useEffect, useState } from 'react'; import { Container, Row, Col, Card } from 'react-bootstrap'; import Translate, { translate } from '@docusaurus/Translate'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import Layout from '@theme/Layout'; import HeaderSlogan from '../components/HeaderSlogan'; @@ -8,13 +9,30 @@ import HeaderSlogan from '../components/HeaderSlogan'; export default function Plugins(): JSX.Element { const [list, setList] = useState([]); + const { i18n } = useDocusaurusContext(); + useEffect(() => { - fetch('https://raw.githubusercontent.com/apache/incubator-answer-plugins/main/plugins_desc.json').then(res => res.json()).then(data => { - setList(data); - }).catch(err => { - console.error('featch plugins list error', err); - }) + getPluginList(); }, []) + + const getPluginList = async () => { + try { + const res = await fetch( + 'https://raw.githubusercontent.com/apache/incubator-answer-plugins/main/plugins_desc.json' + ); + const data = await res.json(); + + if (Array.isArray(data)) { + setList(data); + } else { + const currentLang = i18n.currentLocale; + const lang = currentLang === 'en' ? 'en_US' : currentLang.replace('-', '_'); + setList(data[lang]); + } + } catch (err) { + console.error('featch plugins list error', err); + } + } return ( <Layout title={translate({ message: 'Plugins' })} @@ -43,12 +61,11 @@ export default function Plugins(): JSX.Element { <h5> <a href={item.link} target='_blank'>{item.name}</a> </h5> - <div>{item.desc}</div> + <div className='text-truncate-4'>{item.desc}</div> </Card.Body> </Card> </Col> })} - </Row> </Container> </Layout>
