mirror of
https://github.com/Awuqing/BackupX.git
synced 2026-07-07 01:11:21 +08:00
修复: 中文 i18n 目录名从 zh-Hans 改为 zh-CN,首页 SSR 翻译现已生效 (#42)
Docusaurus 3.10 会把 locale id 'zh-Hans' 规范化为 BCP 47 的 'zh-CN' 来
读取 i18n/ 目录。之前手工创建的 i18n/zh-Hans/ 目录 Docusaurus 识别不到,
导致中文版 SSR 输出仍是英文字符串,只有 URL 路由 /zh-Hans/ 生效。
同时修复 index.tsx 中 <Translate id={labelId}> 动态 id 问题:
write-translations 工具要求静态字符串,已拆分为三个独立的 Translate 元素。
This commit is contained in:
@@ -44,11 +44,26 @@ function HomepageHeader() {
|
|||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
<div className={styles.metrics}>
|
<div className={styles.metrics}>
|
||||||
<MetricItem labelId="home.metric.backends" valueClass={styles.metricValue}>70+</MetricItem>
|
<div className={styles.metric}>
|
||||||
|
<div className={styles.metricValue}>70+</div>
|
||||||
|
<div className={styles.metricLabel}>
|
||||||
|
<Translate id="home.metric.backends">Storage backends</Translate>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div className={styles.metricDivider} />
|
<div className={styles.metricDivider} />
|
||||||
<MetricItem labelId="home.metric.backupTypes" valueClass={styles.metricValue}>5</MetricItem>
|
<div className={styles.metric}>
|
||||||
|
<div className={styles.metricValue}>5</div>
|
||||||
|
<div className={styles.metricLabel}>
|
||||||
|
<Translate id="home.metric.backupTypes">Backup types</Translate>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div className={styles.metricDivider} />
|
<div className={styles.metricDivider} />
|
||||||
<MetricItem labelId="home.metric.license" valueClass={styles.metricValue}>Apache 2.0</MetricItem>
|
<div className={styles.metric}>
|
||||||
|
<div className={styles.metricValue}>Apache 2.0</div>
|
||||||
|
<div className={styles.metricLabel}>
|
||||||
|
<Translate id="home.metric.license">License</Translate>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className={styles.heroCode}>
|
<div className={styles.heroCode}>
|
||||||
@@ -81,21 +96,6 @@ function HomepageHeader() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function MetricItem({children, labelId, valueClass}: {children: ReactNode; labelId: string; valueClass: string}) {
|
|
||||||
return (
|
|
||||||
<div className={styles.metric}>
|
|
||||||
<div className={valueClass}>{children}</div>
|
|
||||||
<div className={styles.metricLabel}>
|
|
||||||
<Translate id={labelId}>
|
|
||||||
{labelId === 'home.metric.backends' ? 'Storage backends'
|
|
||||||
: labelId === 'home.metric.backupTypes' ? 'Backup types'
|
|
||||||
: 'License'}
|
|
||||||
</Translate>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function Home(): ReactNode {
|
export default function Home(): ReactNode {
|
||||||
const {siteConfig} = useDocusaurusContext();
|
const {siteConfig} = useDocusaurusContext();
|
||||||
return (
|
return (
|
||||||
|
|||||||
Reference in New Issue
Block a user