diff --git a/data/data-health.json b/data/data-health.json index 7a380cf..47b9ca4 100644 --- a/data/data-health.json +++ b/data/data-health.json @@ -73,59 +73,59 @@ }, "translationsByLocale": { "de": { - "totalStrings": 423, + "totalStrings": 442, "matchingEnglish": 106, - "matchingEnglishPercent": 25.1 + "matchingEnglishPercent": 24 }, "es": { - "totalStrings": 423, + "totalStrings": 442, "matchingEnglish": 98, - "matchingEnglishPercent": 23.2 + "matchingEnglishPercent": 22.2 }, "fr": { - "totalStrings": 423, + "totalStrings": 442, "matchingEnglish": 108, - "matchingEnglishPercent": 25.5 + "matchingEnglishPercent": 24.4 }, "id": { - "totalStrings": 423, + "totalStrings": 442, "matchingEnglish": 142, - "matchingEnglishPercent": 33.6 + "matchingEnglishPercent": 32.1 }, "ja": { - "totalStrings": 423, + "totalStrings": 442, "matchingEnglish": 100, - "matchingEnglishPercent": 23.6 + "matchingEnglishPercent": 22.6 }, "ko": { - "totalStrings": 423, + "totalStrings": 442, "matchingEnglish": 108, - "matchingEnglishPercent": 25.5 + "matchingEnglishPercent": 24.4 }, "pt": { - "totalStrings": 423, + "totalStrings": 442, "matchingEnglish": 108, - "matchingEnglishPercent": 25.5 + "matchingEnglishPercent": 24.4 }, "ru": { - "totalStrings": 423, + "totalStrings": 442, "matchingEnglish": 117, - "matchingEnglishPercent": 27.7 + "matchingEnglishPercent": 26.5 }, "tr": { - "totalStrings": 423, + "totalStrings": 442, "matchingEnglish": 119, - "matchingEnglishPercent": 28.1 + "matchingEnglishPercent": 26.9 }, "zh-Hans": { - "totalStrings": 423, + "totalStrings": 442, "matchingEnglish": 92, - "matchingEnglishPercent": 21.7 + "matchingEnglishPercent": 20.8 }, "zh-Hant": { - "totalStrings": 423, + "totalStrings": 442, "matchingEnglish": 92, - "matchingEnglishPercent": 21.7 + "matchingEnglishPercent": 20.8 } }, "issues": [ diff --git a/docs/DATA-HEALTH.md b/docs/DATA-HEALTH.md index 1b18fd5..2758121 100644 --- a/docs/DATA-HEALTH.md +++ b/docs/DATA-HEALTH.md @@ -37,17 +37,17 @@ Exact English matches are a triage signal; product names and technical terms can | Locale | Comparable strings | Exact English matches | Match rate | | --- | ---: | ---: | ---: | -| de | 423 | 106 | 25.1% | -| es | 423 | 98 | 23.2% | -| fr | 423 | 108 | 25.5% | -| id | 423 | 142 | 33.6% | -| ja | 423 | 100 | 23.6% | -| ko | 423 | 108 | 25.5% | -| pt | 423 | 108 | 25.5% | -| ru | 423 | 117 | 27.7% | -| tr | 423 | 119 | 28.1% | -| zh-Hans | 423 | 92 | 21.7% | -| zh-Hant | 423 | 92 | 21.7% | +| de | 442 | 106 | 24% | +| es | 442 | 98 | 22.2% | +| fr | 442 | 108 | 24.4% | +| id | 442 | 142 | 32.1% | +| ja | 442 | 100 | 22.6% | +| ko | 442 | 108 | 24.4% | +| pt | 442 | 108 | 24.4% | +| ru | 442 | 117 | 26.5% | +| tr | 442 | 119 | 26.9% | +| zh-Hans | 442 | 92 | 20.8% | +| zh-Hant | 442 | 92 | 20.8% | ## Backlog by Issue Type diff --git a/src/app/[locale]/clis/comparison/page.client.tsx b/src/app/[locale]/clis/comparison/page.client.tsx index 0a9525e..75bdf60 100644 --- a/src/app/[locale]/clis/comparison/page.client.tsx +++ b/src/app/[locale]/clis/comparison/page.client.tsx @@ -6,9 +6,13 @@ import { AppleIcon, LinuxIcon, WindowsIcon } from '@/components/controls/Platfor import Footer from '@/components/Footer' import Header from '@/components/Header' import { Breadcrumb } from '@/components/navigation/Breadcrumb' +import ComparisonGuide, { + type ComparisonGuideContent, + type ComparisonGuideItem, + type ComparisonProfileItem, +} from '@/components/product/ComparisonGuide' import ComparisonTable, { type ComparisonColumn } from '@/components/product/ComparisonTable' import { PricingSummaryValue } from '@/components/product/ProductPricing' -import { Link } from '@/i18n/navigation' import { withVendorCommunityUrlsForCatalog } from '@/lib/community-urls' import { clisData, vendorsData } from '@/lib/generated' import { getGithubStars } from '@/lib/generated/github-stars' @@ -28,6 +32,19 @@ type Props = { export default function CLIComparisonPageClient({ locale: _locale }: Props) { const tPage = useTranslations('pages.comparison') const tShared = useTranslations('shared') + const guideContent: ComparisonGuideContent = { + title: tPage('clis.guide.title'), + intro: tPage('clis.guide.intro', { count: clis.length }), + criteria: tPage.raw('clis.guide.criteria') as ComparisonGuideItem[], + shortlistTitle: tPage('clis.guide.shortlistTitle'), + shortlistIntro: tPage('clis.guide.shortlistIntro'), + steps: tPage.raw('clis.guide.steps') as ComparisonGuideItem[], + profilesTitle: tPage('clis.guide.profilesTitle'), + profilesIntro: tPage('clis.guide.profilesIntro'), + profiles: tPage.raw('clis.guide.profiles') as ComparisonProfileItem[], + faqTitle: tPage('clis.guide.faqTitle'), + faqs: tPage.raw('clis.guide.faqs') as ComparisonGuideItem[], + } const columns: ComparisonColumn[] = [ { @@ -279,7 +296,7 @@ export default function CLIComparisonPageClient({ locale: _locale }: Props) { /> {/* Page Header */} -
+

{tPage('clis.title')} @@ -291,28 +308,23 @@ export default function CLIComparisonPageClient({ locale: _locale }: Props) {

{/* Comparison Table */} -
+
[]} columns={columns} itemLinkPrefix={`/clis`} nameColumnLabel={tShared('labels.name')} + caption={tPage('clis.title')} + scrollHint={tPage('table.scrollHint')} />
- {/* Back Navigation */} -
-
- - ← {tPage('clis.backTo')} - -
-
+