Skip to content

Commit 95976df

Browse files
committed
i18n: extract string for translation
use t.rich with embedded component to use as reusable string with variable number attachment; requires .tsx extension on utils.tsx
1 parent f193f88 commit 95976df

File tree

4 files changed

+13
-8
lines changed

4 files changed

+13
-8
lines changed

app/[locale]/developers/_components/VideoCourseCard.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ const VideoCourseCard = ({ course, className }: VideoCourseCardProps) => (
3535
size="small"
3636
className="mb-2 mt-4 rounded-[4px] px-1 py-0 font-bold normal-case"
3737
>
38-
{/* // TODO: Extract intl */}
39-
{Math.round(course.hours)}-hour course
38+
{course.hours}
4039
</Tag>
4140
<h3 className="text-lg font-bold text-body group-hover:underline">
4241
{course.title}

app/[locale]/developers/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@ export type DevelopersPath = CardInfo & {
1515
}
1616

1717
export type VideoCourse = CardInfo & {
18-
hours: number
18+
hours: ReactNode
1919
}

app/[locale]/developers/utils.ts renamed to app/[locale]/developers/utils.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,43 +62,48 @@ export const getVideoCourses = async (): Promise<VideoCourse[]> => {
6262
namespace: "page-developers-index",
6363
})
6464

65+
const getDuration = (hours: number) =>
66+
t.rich("page-developers-course-duration", {
67+
span: () => <span>{hours}</span>,
68+
})
69+
6570
return [
6671
{
6772
title: t("page-developers-course-blockchain-basics-title"),
6873
description: t("page-developers-course-blockchain-basics-desc"),
69-
hours: 3,
74+
hours: getDuration(3),
7075
imgSrc: cyfrinBasicBanner,
7176
imgAlt: t("page-developers-course-blockchain-basics-alt"),
7277
href: "https://updraft.cyfrin.io/courses/blockchain-basics",
7378
},
7479
{
7580
title: t("page-developers-course-solidity-title"),
7681
description: t("page-developers-course-solidity-desc"),
77-
hours: 5,
82+
hours: getDuration(5),
7883
imgSrc: cyfrinSolidityBanner,
7984
imgAlt: t("page-developers-course-solidity-alt"),
8085
href: "https://updraft.cyfrin.io/courses/solidity",
8186
},
8287
{
8388
title: t("page-developers-course-foundry-fundamentals-title"),
8489
description: t("page-developers-course-foundry-fundamentals-desc"),
85-
hours: 10,
90+
hours: getDuration(10),
8691
imgSrc: cyfrinFoundryFundamentalsBanner,
8792
imgAlt: t("page-developers-course-foundry-fundamentals-alt"),
8893
href: "https://updraft.cyfrin.io/courses/foundry",
8994
},
9095
{
9196
title: t("page-developers-course-advanced-foundry-title"),
9297
description: t("page-developers-course-advanced-foundry-desc"),
93-
hours: 13,
98+
hours: getDuration(13),
9499
imgSrc: cyfrinFoundryAdvancedBanner,
95100
imgAlt: t("page-developers-course-advanced-foundry-alt"),
96101
href: "https://updraft.cyfrin.io/courses/advanced-foundry",
97102
},
98103
{
99104
title: t("page-developers-course-security-title"),
100105
description: t("page-developers-course-security-desc"),
101-
hours: 24,
106+
hours: getDuration(24),
102107
imgSrc: cyfrinSecurityBanner,
103108
imgAlt: t("page-developers-course-security-alt"),
104109
href: "https://updraft.cyfrin.io/courses/security",

src/intl/en/page-developers-index.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@
109109
"page-developers-speedrun-token-title": "Create a token",
110110
"page-developers-speedrun-token-desc": "Build a digital currency and a smart contract that trades it.",
111111
"page-developers-speedrun-challenge-2": "Challenge #2",
112+
"page-developers-course-duration": "<span></span>-hour course",
112113
"page-developers-course-blockchain-basics-title": "Blockchain basics",
113114
"page-developers-course-blockchain-basics-desc": "Learn how blockchains and smart contracts work, create a wallet, and sign your first transaction.",
114115
"page-developers-course-blockchain-basics-alt": "Cyfrin Updraft Blockchain basics course banner",

0 commit comments

Comments
 (0)