mirror of
https://github.com/privacy-scaling-explorations/pse.dev.git
synced 2026-01-09 14:18:02 -05:00
@@ -8,25 +8,19 @@ import { Label } from "@/components/ui/label"
|
||||
import { Banner } from "@/components/banner"
|
||||
import { Divider } from "@/components/divider"
|
||||
import { Icons } from "@/components/icons"
|
||||
import { PageHeader } from "@/components/page-header"
|
||||
import { useTranslation } from "@/app/i18n"
|
||||
import { LABELS } from "@/app/labels"
|
||||
import { interpolate } from "@/lib/utils"
|
||||
|
||||
export default async function AboutPage({ params: { lang } }: any) {
|
||||
const { t } = await useTranslation(lang, "about-page")
|
||||
const { t: common } = await useTranslation(lang, "common")
|
||||
|
||||
const principles: any[] =
|
||||
(t("principles", {
|
||||
returnObjects: true,
|
||||
}) as any[]) ?? []
|
||||
export default async function AboutPage() {
|
||||
const principles = LABELS.ABOUT_PAGE.PRINCIPLES
|
||||
|
||||
return (
|
||||
<div className="flex flex-col">
|
||||
<div className="w-full bg-page-header-gradient">
|
||||
<AppContent className="flex flex-col gap-4 py-10 w-full max-w-[978px] mx-auto">
|
||||
<Label.PageTitle label={t("title")} />
|
||||
<Label.PageTitle label={LABELS.ABOUT_PAGE.TITLE} />
|
||||
<h6 className="font-sans text-base font-normal text-tuatara-950 md:text-[18px] md:leading-[27px] md:max-w-[700px]">
|
||||
{t("description")}
|
||||
{LABELS.ABOUT_PAGE.DESCRIPTION}
|
||||
</h6>
|
||||
<Link
|
||||
href={siteConfig.links.discord}
|
||||
@@ -38,7 +32,7 @@ export default async function AboutPage({ params: { lang } }: any) {
|
||||
<Button>
|
||||
<div className="flex items-center gap-2">
|
||||
<span className="text-[14px] uppercase">
|
||||
{common("connectWithUsOnPlatform", {
|
||||
{interpolate(LABELS.COMMON.CONNECT_WITH_US_ON_PLATFORM, {
|
||||
platform: "Discord",
|
||||
})}
|
||||
</span>
|
||||
@@ -53,18 +47,18 @@ export default async function AboutPage({ params: { lang } }: any) {
|
||||
<AppContent className="container flex w-full max-w-[978px] flex-col gap-8 py-10 md:py-16">
|
||||
<Label.Section
|
||||
className="text-center"
|
||||
label={t("our-principles-title")}
|
||||
label={LABELS.ABOUT_PAGE.OUR_PRINCIPLES_TITLE}
|
||||
/>
|
||||
<Accordion
|
||||
type="multiple"
|
||||
items={[
|
||||
...principles.map((principle: any, index: number) => {
|
||||
return {
|
||||
label: principle.title,
|
||||
label: principle.TITLE,
|
||||
value: index.toString(),
|
||||
children: (
|
||||
<span className="flex flex-col gap-6 break-words pb-12 font-sans text-lg font-normal leading-[150%]">
|
||||
{principle.description.map(
|
||||
{principle.DESCRIPTION.map(
|
||||
(description: string, index: number) => {
|
||||
return <p key={index}>{description}</p>
|
||||
}
|
||||
@@ -78,7 +72,10 @@ export default async function AboutPage({ params: { lang } }: any) {
|
||||
</AppContent>
|
||||
</div>
|
||||
|
||||
<Banner title={t("banner.title")} subtitle={t("banner.subtitle")}>
|
||||
<Banner
|
||||
title={LABELS.ABOUT_PAGE.BANNER.TITLE}
|
||||
subtitle={LABELS.ABOUT_PAGE.BANNER.SUBTITLE}
|
||||
>
|
||||
<Link
|
||||
href={siteConfig.links.discord}
|
||||
target="_blank"
|
||||
@@ -90,7 +87,7 @@ export default async function AboutPage({ params: { lang } }: any) {
|
||||
<div className="flex items-center gap-2">
|
||||
<Icons.discord fill="white" className="h-4" />
|
||||
<span className="text-[14px] uppercase">
|
||||
{common("joinOurDiscord")}
|
||||
{LABELS.COMMON.JOIN_OUR_DISCORD}
|
||||
</span>
|
||||
<Icons.externalUrl fill="white" className="h-5" />
|
||||
</div>
|
||||
@@ -73,7 +73,7 @@ export default function BlogArticle({ params }: any) {
|
||||
className={cn(
|
||||
"absolute inset-0 bg-cover",
|
||||
imageAsCover
|
||||
? "bg-cover after:content-[''] after:absolute after:inset-0 after:bg-black after:opacity-20 bg-center"
|
||||
? "bg-cover after:content-[''] after:absolute after:inset-0 after:bg-black after:opacity-60 bg-center"
|
||||
: "bg-cover-gradient"
|
||||
)}
|
||||
style={{
|
||||
@@ -142,7 +142,7 @@ export default function BlogArticle({ params }: any) {
|
||||
</span>
|
||||
<div className="flex flex-wrap gap-2">
|
||||
{post?.tags?.map((tag) => (
|
||||
<Link key={tag} href={`/${params.lang}/blog?tag=${tag}`}>
|
||||
<Link key={tag} href={`/blog?tag=${tag}`}>
|
||||
<Button
|
||||
size="xs"
|
||||
variant={imageAsCover ? "secondary" : "default"}
|
||||
@@ -158,11 +158,7 @@ export default function BlogArticle({ params }: any) {
|
||||
</div>
|
||||
</div>
|
||||
<div className="pt-10 md:pt-16 pb-32">
|
||||
<BlogContent
|
||||
post={post}
|
||||
lang={params.lang}
|
||||
isNewsletter={isNewsletter}
|
||||
/>
|
||||
<BlogContent post={post} isNewsletter={isNewsletter} />
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
@@ -1,4 +1,4 @@
|
||||
import { useTranslation } from "@/app/i18n"
|
||||
import { LABELS } from "@/app/labels"
|
||||
import { AppContent } from "@/components/ui/app-content"
|
||||
import { Label } from "@/components/ui/label"
|
||||
import { Metadata } from "next"
|
||||
@@ -21,7 +21,6 @@ export const metadata: Metadata = {
|
||||
}
|
||||
|
||||
interface BlogPageProps {
|
||||
params: { lang: string }
|
||||
searchParams?: { [key: string]: string | string[] | undefined }
|
||||
}
|
||||
|
||||
@@ -59,8 +58,7 @@ const LoadingSkeleton = () => {
|
||||
)
|
||||
}
|
||||
|
||||
const BlogPage = async ({ params: { lang }, searchParams }: BlogPageProps) => {
|
||||
const { t } = await useTranslation(lang, "blog-page")
|
||||
const BlogPage = async ({ searchParams }: BlogPageProps) => {
|
||||
const tag = searchParams?.tag as string | undefined
|
||||
|
||||
const queryClient = new QueryClient()
|
||||
@@ -93,14 +91,14 @@ const BlogPage = async ({ params: { lang }, searchParams }: BlogPageProps) => {
|
||||
<div className="flex flex-col">
|
||||
<div className="w-full bg-page-header-gradient">
|
||||
<AppContent className="flex flex-col gap-4 py-10 w-full">
|
||||
<Label.PageTitle label={t("title")} />
|
||||
<Label.PageTitle label={LABELS.BLOG_PAGE.TITLE} />
|
||||
{tag && (
|
||||
<h2 className="text-xl font-semibold text-tuatara-800">
|
||||
{`Filtered by tag: "${tag}"`}
|
||||
</h2>
|
||||
)}
|
||||
<h6 className="font-sans text-base font-normal text-tuatara-950 md:text-[18px] md:leading-[27px] md:max-w-[700px]">
|
||||
{t("subtitle")}
|
||||
{LABELS.BLOG_PAGE.SUBTITLE}
|
||||
</h6>
|
||||
</AppContent>
|
||||
</div>
|
||||
@@ -108,11 +106,7 @@ const BlogPage = async ({ params: { lang }, searchParams }: BlogPageProps) => {
|
||||
<AppContent className="flex flex-col gap-10 lg:gap-16 pb-10 lg:py-10 lg:max-w-[978px]">
|
||||
<Suspense fallback={<LoadingSkeleton />}>
|
||||
<HydrationBoundary state={dehydrate(queryClient)}>
|
||||
<ArticlesList
|
||||
lang={lang}
|
||||
tag={tag}
|
||||
fallback={<LoadingSkeleton />}
|
||||
/>
|
||||
<ArticlesList tag={tag} fallback={<LoadingSkeleton />} />
|
||||
</HydrationBoundary>
|
||||
</Suspense>
|
||||
</AppContent>
|
||||
@@ -1,11 +1,9 @@
|
||||
"use client"
|
||||
|
||||
import { useEffect, useState } from "react"
|
||||
import { useState } from "react"
|
||||
import Link from "next/link"
|
||||
import { events } from "@/data/events/devcon-7"
|
||||
import { cva } from "class-variance-authority"
|
||||
import { Button } from "@/components/ui/button"
|
||||
import { useTranslation } from "@/app/i18n/client"
|
||||
|
||||
import { cn } from "@/lib/utils"
|
||||
import { Icons } from "@/components/icons"
|
||||
@@ -143,9 +141,7 @@ const EventCard = ({ event = {}, speakers = [], location = "" }: any) => {
|
||||
)
|
||||
}
|
||||
|
||||
export const Devcon7Section = ({ lang }: any) => {
|
||||
const { t } = useTranslation(lang, "devcon-7")
|
||||
|
||||
export const Devcon7Section = () => {
|
||||
return (
|
||||
<div className="flex flex-col gap-10 relative">
|
||||
<div className="flex flex-col gap-3 lg:gap-10 lg:container">
|
||||
@@ -6,24 +6,16 @@ import { SiteFooter } from "@/components/site-footer"
|
||||
import { SiteHeader } from "@/components/site-header"
|
||||
import { TailwindIndicator } from "@/components/tailwind-indicator"
|
||||
|
||||
import { fallbackLng, languages } from "../i18n/settings"
|
||||
|
||||
export async function generateStaticParams() {
|
||||
return languages.map((language) => ({ language }))
|
||||
}
|
||||
|
||||
interface RootLayoutProps {
|
||||
children: React.ReactNode
|
||||
params: any
|
||||
}
|
||||
|
||||
export default function RootLayout({ children, params }: RootLayoutProps) {
|
||||
const lang = params.lang ?? fallbackLng
|
||||
|
||||
export default function RootLayout({ children }: RootLayoutProps) {
|
||||
return (
|
||||
<>
|
||||
<html
|
||||
lang={lang}
|
||||
lang="en"
|
||||
className={`${fontSans.variable} ${fontDisplay.variable}`}
|
||||
suppressHydrationWarning
|
||||
>
|
||||
@@ -48,9 +40,9 @@ export default function RootLayout({ children, params }: RootLayoutProps) {
|
||||
className={"min-h-screen bg-background antialiased"}
|
||||
>
|
||||
<div className="relative flex min-h-screen flex-col">
|
||||
<SiteHeader lang={lang} />
|
||||
<SiteHeader />
|
||||
<div className="flex-1">{children}</div>
|
||||
<SiteFooter lang={lang} />
|
||||
<SiteFooter />
|
||||
</div>
|
||||
<TailwindIndicator />
|
||||
</body>
|
||||
@@ -8,7 +8,7 @@ import { HomepageHeader } from "@/components/sections/HomepageHeader"
|
||||
import { HomepageBanner } from "@/components/sections/HomepageBanner"
|
||||
import { Suspense } from "react"
|
||||
|
||||
function BlogSection({ lang }: { lang: string }) {
|
||||
function BlogSection() {
|
||||
return (
|
||||
<Suspense
|
||||
fallback={
|
||||
@@ -18,24 +18,24 @@ function BlogSection({ lang }: { lang: string }) {
|
||||
}
|
||||
>
|
||||
{/* @ts-expect-error - This is a valid server component pattern */}
|
||||
<BlogRecentArticles lang={lang} />
|
||||
<BlogRecentArticles />
|
||||
</Suspense>
|
||||
)
|
||||
}
|
||||
|
||||
export default function IndexPage({ params: { lang } }: any) {
|
||||
export default function IndexPage() {
|
||||
return (
|
||||
<section className="flex flex-col">
|
||||
<Divider.Section>
|
||||
<HomepageHeader lang={lang} />
|
||||
<HomepageHeader />
|
||||
|
||||
<BlogSection lang={lang} />
|
||||
<BlogSection />
|
||||
|
||||
<HomepageVideoFeed lang={lang} />
|
||||
<HomepageVideoFeed />
|
||||
|
||||
<WhatWeDo lang={lang} />
|
||||
<WhatWeDo />
|
||||
|
||||
<HomepageBanner lang={lang} />
|
||||
<HomepageBanner />
|
||||
</Divider.Section>
|
||||
</section>
|
||||
)
|
||||
@@ -9,7 +9,7 @@ import { ReactNode } from "react-markdown/lib/ast-to-react"
|
||||
import { twMerge } from "tailwind-merge"
|
||||
|
||||
import { siteConfig } from "@/config/site"
|
||||
import { cn } from "@/lib/utils"
|
||||
import { cn, interpolate } from "@/lib/utils"
|
||||
import { Accordion } from "@/components/ui/accordion"
|
||||
import { Button } from "@/components/ui/button"
|
||||
import { Banner } from "@/components/banner"
|
||||
@@ -17,8 +17,8 @@ import { Card } from "@/components/cards/card"
|
||||
import { Divider } from "@/components/divider"
|
||||
import { Icons } from "@/components/icons"
|
||||
import { PageHeader } from "@/components/page-header"
|
||||
import { useTranslation } from "@/app/i18n/client"
|
||||
import { TableRowCard } from "@/components/cards/table-row-card"
|
||||
import { LABELS } from "@/app/labels"
|
||||
|
||||
type ProgramDetailProps = {
|
||||
region?: string
|
||||
@@ -93,33 +93,17 @@ const ProgramDetail = ({
|
||||
|
||||
const ProgramSections = ["coreProgram", "accelerationProgram"] as const
|
||||
|
||||
export const ProgramPageContent = ({ lang }: any) => {
|
||||
const { t } = useTranslation(lang, "programs-page")
|
||||
const { t: common } = useTranslation(lang, "common")
|
||||
export const ProgramPageContent = () => {
|
||||
const [activeId, setActiveId] = useState("")
|
||||
const [isManualScroll, setIsManualScroll] = useState(false)
|
||||
const SCROLL_OFFSET = -900
|
||||
const sectionsRef = useRef<NodeListOf<HTMLElement> | null>(null)
|
||||
|
||||
const howToApply: any =
|
||||
t("howToApply", {
|
||||
returnObjects: true,
|
||||
}) || []
|
||||
|
||||
const coreProgramDescription: any[] =
|
||||
(t("coreProgram.description", {
|
||||
returnObjects: true,
|
||||
}) as any[]) ?? []
|
||||
|
||||
const accelerationProgramDescription: any[] =
|
||||
(t("accelerationProgram.description", {
|
||||
returnObjects: true,
|
||||
}) as any[]) ?? []
|
||||
|
||||
const curriculum: any[] =
|
||||
(t("curriculum", {
|
||||
returnObjects: true,
|
||||
}) as any[]) ?? []
|
||||
const howToApply = LABELS.PROGRAMS_PAGE.HOW_TO_APPLY
|
||||
const coreProgramDescription = LABELS.PROGRAMS_PAGE.CORE_PROGRAM.DESCRIPTION
|
||||
const accelerationProgramDescription =
|
||||
LABELS.PROGRAMS_PAGE.ACCELERATION_PROGRAM.DESCRIPTION
|
||||
const curriculum = LABELS.PROGRAMS_PAGE.CURRICULUM
|
||||
|
||||
useEffect(() => {
|
||||
if (sectionsRef.current === null)
|
||||
@@ -159,12 +143,23 @@ export const ProgramPageContent = ({ lang }: any) => {
|
||||
setTimeout(() => setIsManualScroll(false), 800)
|
||||
}, [])
|
||||
|
||||
const getSectionTitle = (sectionId: string) => {
|
||||
switch (sectionId) {
|
||||
case "coreProgram":
|
||||
return LABELS.PROGRAMS_PAGE.CORE_PROGRAM.TITLE
|
||||
case "accelerationProgram":
|
||||
return LABELS.PROGRAMS_PAGE.ACCELERATION_PROGRAM.TITLE
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<Divider.Section className="flex flex-col">
|
||||
<div className="bg-second-gradient">
|
||||
<PageHeader
|
||||
title={t("title")}
|
||||
subtitle={t("description")}
|
||||
title={LABELS.PROGRAMS_PAGE.TITLE}
|
||||
subtitle={LABELS.PROGRAMS_PAGE.DESCRIPTION}
|
||||
image={
|
||||
<Image
|
||||
width={280}
|
||||
@@ -184,11 +179,11 @@ export const ProgramPageContent = ({ lang }: any) => {
|
||||
>
|
||||
<div className="absolute right-0 mt-[80px] flex flex-col gap-4 lg:w-[220px] xl:w-[320px] xl:px-8">
|
||||
<h6 className="font-display text-lg font-bold text-tuatara-700">
|
||||
{common("onThisPage")}
|
||||
{LABELS.COMMON.ON_THIS_PAGE}
|
||||
</h6>
|
||||
<ul className="text-normal font-sans text-black">
|
||||
{ProgramSections.map((id: string) => {
|
||||
const label = t(`${id}.title`)
|
||||
const label = getSectionTitle(id)
|
||||
|
||||
if (!label) return null // no label for this section
|
||||
|
||||
@@ -226,7 +221,7 @@ export const ProgramPageContent = ({ lang }: any) => {
|
||||
>
|
||||
<div className="mx-auto flex flex-col md:max-w-2xl">
|
||||
<div className="flex flex-col gap-8">
|
||||
<SectionTitle label={t("coreProgram.title")} />
|
||||
<SectionTitle label={LABELS.PROGRAMS_PAGE.CORE_PROGRAM.TITLE} />
|
||||
<div className="flex flex-col">
|
||||
<div className="grid grid-cols-1 gap-6 md:grid-cols-2">
|
||||
<Card className="flex flex-col gap-10">
|
||||
@@ -240,7 +235,7 @@ export const ProgramPageContent = ({ lang }: any) => {
|
||||
<Link href={siteConfig.links.coreProgram} target="_blank">
|
||||
<Button className="w-full uppercase">
|
||||
<div className="flex items-center gap-3">
|
||||
<span>{t("common.applyNow")}</span>
|
||||
<span>{LABELS.PROGRAMS_PAGE.COMMON.APPLY_NOW}</span>
|
||||
<Icons.arrowRight size={20} />
|
||||
</div>
|
||||
</Button>
|
||||
@@ -257,7 +252,7 @@ export const ProgramPageContent = ({ lang }: any) => {
|
||||
<Link href={siteConfig.links.coreProgram} target="_blank">
|
||||
<Button className="w-full uppercase">
|
||||
<div className="flex items-center gap-3">
|
||||
<span>{t("common.applyNow")}</span>
|
||||
<span>{LABELS.PROGRAMS_PAGE.COMMON.APPLY_NOW}</span>
|
||||
<Icons.arrowRight size={20} />
|
||||
</div>
|
||||
</Button>
|
||||
@@ -279,25 +274,26 @@ export const ProgramPageContent = ({ lang }: any) => {
|
||||
</div>
|
||||
<div className="flex flex-col gap-0 md:mt-4 md:gap-10">
|
||||
<div className="flex flex-col gap-10">
|
||||
<AccordionLabel label={t("common.curriculum")} />
|
||||
<AccordionLabel
|
||||
label={LABELS.PROGRAMS_PAGE.COMMON.CURRICULUM}
|
||||
/>
|
||||
<TableRowCard
|
||||
items={curriculum.map(({ title, items }, index) => ({
|
||||
items={curriculum.map(({ TITLE, ITEMS }, index) => ({
|
||||
title: (
|
||||
<span>
|
||||
{t("common.week", {
|
||||
{interpolate(LABELS.PROGRAMS_PAGE.COMMON.WEEK, {
|
||||
week: index,
|
||||
})}
|
||||
<br />
|
||||
{title}
|
||||
</span>
|
||||
),
|
||||
items,
|
||||
subtitle: TITLE,
|
||||
items: ITEMS,
|
||||
}))}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="flex flex-col">
|
||||
<AccordionLabel label={t("common.faq")} />
|
||||
<AccordionLabel label="FAQ" />
|
||||
<div className="pt-10">
|
||||
<Accordion
|
||||
id="faq"
|
||||
@@ -333,7 +329,9 @@ export const ProgramPageContent = ({ lang }: any) => {
|
||||
className="mx-auto flex flex-col py-10 md:max-w-2xl md:py-16"
|
||||
>
|
||||
<div className="flex flex-col gap-5">
|
||||
<SectionTitle label={t("accelerationProgram.title")} />
|
||||
<SectionTitle
|
||||
label={LABELS.PROGRAMS_PAGE.ACCELERATION_PROGRAM.TITLE}
|
||||
/>
|
||||
<Card className="flex flex-col gap-5">
|
||||
<ProgramDetail
|
||||
title={
|
||||
@@ -353,7 +351,7 @@ export const ProgramPageContent = ({ lang }: any) => {
|
||||
>
|
||||
<Button className="uppercase">
|
||||
<div className="flex items-center gap-3">
|
||||
{t("common.learnMoreOnGithub")}
|
||||
{LABELS.PROGRAMS_PAGE.COMMON.LEARN_MORE_ON_GITHUB}
|
||||
<Icons.arrowRight size={20} />
|
||||
</div>
|
||||
</Button>
|
||||
@@ -375,16 +373,16 @@ export const ProgramPageContent = ({ lang }: any) => {
|
||||
</div>
|
||||
<div className="flex flex-col gap-0 pt-14 md:gap-10">
|
||||
<div className="flex flex-col">
|
||||
<AccordionLabel label={t("common.howToApply")} />
|
||||
<AccordionLabel label={LABELS.COMMON.HOW_TO_APPLY} />
|
||||
<div className="mt-10">
|
||||
<div className="flex flex-col gap-8 pb-10 md:pb-16">
|
||||
<div id="howToApply" className="flex flex-col gap-8">
|
||||
<div>
|
||||
<span className="text-base font-medium text-tuatara-950">
|
||||
{t("howToApply.openTasks.title")}
|
||||
{LABELS.PROGRAMS_PAGE.HOW_TO_APPLY.OPEN_TASKS.TITLE}
|
||||
</span>
|
||||
<ul className="list-decimal">
|
||||
{howToApply?.openTasks?.description?.map(
|
||||
{howToApply.OPEN_TASKS.DESCRIPTION.map(
|
||||
(task: string, index: number) => {
|
||||
return (
|
||||
<li
|
||||
@@ -405,10 +403,13 @@ export const ProgramPageContent = ({ lang }: any) => {
|
||||
</div>
|
||||
<div>
|
||||
<span className="text-base font-medium text-tuatara-950">
|
||||
{t("howToApply.submitIdea.title")}
|
||||
{
|
||||
LABELS.PROGRAMS_PAGE.HOW_TO_APPLY.SUBMIT_IDEA
|
||||
.TITLE
|
||||
}
|
||||
</span>
|
||||
<ul className="list-decimal">
|
||||
{howToApply?.submitIdea?.description?.map(
|
||||
{howToApply.SUBMIT_IDEA.DESCRIPTION.map(
|
||||
(task: string, index: number) => {
|
||||
return (
|
||||
<li
|
||||
@@ -428,14 +429,14 @@ export const ProgramPageContent = ({ lang }: any) => {
|
||||
</ul>
|
||||
</div>
|
||||
<span className="text-base text-tuatara-950">
|
||||
{t("howToApply.description")}
|
||||
{LABELS.PROGRAMS_PAGE.HOW_TO_APPLY.DESCRIPTION}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-col">
|
||||
<AccordionLabel label={t("common.faq")} />
|
||||
<AccordionLabel label="FAQ" />
|
||||
<div className="mt-10 flex flex-col gap-8">
|
||||
<Accordion
|
||||
className="!border-anakiwa-300"
|
||||
@@ -461,7 +462,10 @@ export const ProgramPageContent = ({ lang }: any) => {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<Banner title={common("learnMore")} subtitle={common("learnMoreDiscord")}>
|
||||
<Banner
|
||||
title={LABELS.COMMON.LEARN_MORE}
|
||||
subtitle={LABELS.COMMON.LEARN_MORE_DISCORD}
|
||||
>
|
||||
<Link
|
||||
href={siteConfig.links.discord}
|
||||
target="_blank"
|
||||
@@ -472,7 +476,7 @@ export const ProgramPageContent = ({ lang }: any) => {
|
||||
<div className="flex items-center gap-2">
|
||||
<Icons.discord fill="white" className="h-4" />
|
||||
<span className="text-[14px] uppercase">
|
||||
{common("joinOurDiscord")}
|
||||
{LABELS.COMMON.JOIN_OUR_DISCORD}
|
||||
</span>
|
||||
<Icons.externalUrl fill="white" className="h-5" />
|
||||
</div>
|
||||
@@ -16,10 +16,10 @@ export const metadata: Metadata = {
|
||||
},
|
||||
}
|
||||
|
||||
export default function ProgramsPage({ params: { lang } }: any) {
|
||||
export default function ProgramsPage() {
|
||||
return (
|
||||
<div className="flex flex-col">
|
||||
<ProgramPageContent lang={lang} />
|
||||
<ProgramPageContent />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -2,18 +2,16 @@ import { Metadata } from "next"
|
||||
|
||||
import { getProjectById } from "@/lib/projectsUtils"
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
import { LocaleTypes } from "@/app/i18n/settings"
|
||||
|
||||
import { ProjectContent } from "../sections/ProjectContent"
|
||||
|
||||
type PageProps = {
|
||||
params: { id: string; lang: string }
|
||||
params: { id: string }
|
||||
searchParams: { [key: string]: string | string[] | undefined }
|
||||
}
|
||||
|
||||
export interface ProjectProps {
|
||||
project: ProjectInterface
|
||||
lang: LocaleTypes
|
||||
}
|
||||
|
||||
export async function generateMetadata({
|
||||
@@ -41,7 +39,5 @@ export async function generateMetadata({
|
||||
}
|
||||
|
||||
export default async function ProjectDetailPage({ params }: PageProps) {
|
||||
const lang = params?.lang as LocaleTypes
|
||||
|
||||
return <ProjectContent lang={lang} id={params?.id?.toLowerCase()} />
|
||||
return <ProjectContent id={params?.id?.toLowerCase()} />
|
||||
}
|
||||
@@ -3,11 +3,10 @@ import { Metadata } from "next"
|
||||
|
||||
import { AppContent } from "@/components/ui/app-content"
|
||||
import { Label } from "@/components/ui/label"
|
||||
import { Divider } from "@/components/divider"
|
||||
import ProjectFiltersBar from "@/components/project/project-filters-bar"
|
||||
import { ProjectList } from "@/components/project/project-list"
|
||||
import { ProjectResultBar } from "@/components/project/project-result-bar"
|
||||
import { useTranslation } from "@/app/i18n"
|
||||
import { LABELS } from "@/app/labels"
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Project Library",
|
||||
@@ -15,16 +14,14 @@ export const metadata: Metadata = {
|
||||
"PSE supports projects working on theoretical cryptography research, protocol development, open source tooling, experimental applications, and more.",
|
||||
}
|
||||
|
||||
export default async function ProjectsPage({ params: { lang } }: any) {
|
||||
const { t } = await useTranslation(lang, "projects-page")
|
||||
|
||||
export default async function ProjectsPage() {
|
||||
return (
|
||||
<div className="flex flex-col">
|
||||
<div className="w-full bg-page-header-gradient">
|
||||
<AppContent className="flex flex-col gap-4 py-10 w-full">
|
||||
<Label.PageTitle label={t("title")} />
|
||||
<Label.PageTitle label={LABELS.PROJECTS_PAGE.TITLE} />
|
||||
<h6 className="font-sans text-base font-normal text-tuatara-950 md:text-[18px] md:leading-[27px] md:max-w-[700px]">
|
||||
{t("subtitle")}
|
||||
{LABELS.PROJECTS_PAGE.SUBTITLE}
|
||||
</h6>
|
||||
</AppContent>
|
||||
</div>
|
||||
@@ -32,11 +29,11 @@ export default async function ProjectsPage({ params: { lang } }: any) {
|
||||
<AppContent className="flex flex-col gap-10 py-10">
|
||||
<Suspense fallback={<div>Loading...</div>}>
|
||||
<div className="flex flex-col gap-4">
|
||||
<ProjectFiltersBar lang={lang} />
|
||||
<ProjectResultBar lang={lang} />
|
||||
<ProjectFiltersBar />
|
||||
<ProjectResultBar />
|
||||
</div>
|
||||
</Suspense>
|
||||
<ProjectList lang={lang} />
|
||||
<ProjectList />
|
||||
</AppContent>
|
||||
</div>
|
||||
)
|
||||
@@ -2,14 +2,14 @@
|
||||
|
||||
import Link from "next/link"
|
||||
import { useRouter } from "next/navigation"
|
||||
|
||||
import { siteConfig } from "@/config/site"
|
||||
import { getProjectById } from "@/lib/projectsUtils"
|
||||
import { ProjectCategory, ProjectStatus } from "@/lib/types"
|
||||
|
||||
import { cn } from "@/lib/utils"
|
||||
import { LABELS } from "@/app/labels"
|
||||
import { AppContent } from "@/components/ui/app-content"
|
||||
import { Markdown, createMarkdownElement } from "@/components/ui/markdown"
|
||||
import { WikiCard } from "@/components/cards/wiki-card"
|
||||
import { Divider } from "@/components/divider"
|
||||
import { Icons } from "@/components/icons"
|
||||
import DiscoverMoreProjects from "@/components/project/discover-more-projects"
|
||||
@@ -17,22 +17,14 @@ import { ProjectTags } from "@/components/project/project-detail-tags"
|
||||
import ProjectExtraLinks from "@/components/project/project-extra-links"
|
||||
import { ProjectLinkIconMap } from "@/components/mappings/project-links"
|
||||
import { WikiSideNavigation } from "@/components/wiki-side-navigation"
|
||||
import { useTranslation } from "@/app/i18n/client"
|
||||
import { LocaleTypes } from "@/app/i18n/settings"
|
||||
import { WikiCard } from "@/components/cards/wiki-card"
|
||||
import { ProjectTeamMembers } from "@/components/project/project-team"
|
||||
import { ProjectBlogArticles } from "@/components/blog/project-blog-articles"
|
||||
import { ProjectYouTubeVideos } from "@/components/sections/ProjectYouTubeVideos"
|
||||
import { ProjectTeamMembers } from "@/components/project/project-team"
|
||||
|
||||
export const ProjectContent = ({
|
||||
id,
|
||||
lang = "en",
|
||||
}: {
|
||||
id: string
|
||||
lang: LocaleTypes
|
||||
}) => {
|
||||
export const ProjectContent = ({ id }: { id: string }) => {
|
||||
const router = useRouter()
|
||||
const { project, content } = getProjectById(id) ?? {}
|
||||
const { t } = useTranslation(lang, "common")
|
||||
|
||||
const hasSocialLinks = Object.keys(project?.links ?? {}).length > 0
|
||||
|
||||
@@ -40,8 +32,8 @@ export const ProjectContent = ({
|
||||
|
||||
const ProjectStatusMessageMap: Record<ProjectStatus, string> = {
|
||||
[ProjectStatus.ACTIVE]: "",
|
||||
[ProjectStatus.INACTIVE]: t("projectSunset"),
|
||||
[ProjectStatus.MAINTAINED]: t("projectMaintenance"),
|
||||
[ProjectStatus.INACTIVE]: LABELS.COMMON.PROJECT_SUNSET,
|
||||
[ProjectStatus.MAINTAINED]: LABELS.COMMON.PROJECT_MAINTENANCE,
|
||||
}
|
||||
|
||||
const projectStatusMessage =
|
||||
@@ -84,11 +76,11 @@ export const ProjectContent = ({
|
||||
<div className="flex flex-col gap-6 text-left">
|
||||
<Link
|
||||
className="flex items-center gap-2 text-tuatara-950/80 hover:text-tuatara-950 mr-auto"
|
||||
href={`/${lang}/projects`}
|
||||
href="/projects"
|
||||
>
|
||||
<Icons.arrowLeft />
|
||||
<span className="font-sans text-base">
|
||||
{t("projectLibrary")}
|
||||
{LABELS.COMMON.PROJECT_LIBRARY}
|
||||
</span>
|
||||
</Link>
|
||||
<div className="flex flex-col gap-2">
|
||||
@@ -240,31 +232,26 @@ export const ProjectContent = ({
|
||||
<div className="mt-5">
|
||||
<ProjectYouTubeVideos
|
||||
youtubeLinks={project.youtubeLinks}
|
||||
lang={lang}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{project?.team && project.team.length > 0 && (
|
||||
<div className="mt-5">
|
||||
<ProjectTeamMembers team={project.team} lang={lang} />
|
||||
<ProjectTeamMembers team={project.team} />
|
||||
</div>
|
||||
)}
|
||||
<ProjectTags project={project} lang={lang} />
|
||||
<ProjectTags project={project} />
|
||||
</div>
|
||||
|
||||
<ProjectExtraLinks project={project} lang={lang} />
|
||||
<ProjectExtraLinks project={project} />
|
||||
</div>
|
||||
|
||||
<ProjectBlogArticles project={project} lang={lang} />
|
||||
<ProjectBlogArticles project={project} />
|
||||
</div>
|
||||
</div>
|
||||
{!isResearchProject && (
|
||||
<WikiCard
|
||||
className="lg:sticky lg:top-20"
|
||||
project={project}
|
||||
lang={lang}
|
||||
/>
|
||||
<WikiCard className="lg:sticky lg:top-20" project={project} />
|
||||
)}
|
||||
<div data-section-id="edit-this-page" className="lg:col-start-2">
|
||||
<Link
|
||||
@@ -276,14 +263,14 @@ export const ProjectContent = ({
|
||||
>
|
||||
<Icons.edit />
|
||||
<span className="text-sm duration-200 text-tuatara-950 group-hover:text-white">
|
||||
{t("editThisPage")}
|
||||
{LABELS.COMMON.EDIT_THIS_PAGE}
|
||||
</span>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</AppContent>
|
||||
|
||||
<DiscoverMoreProjects project={project} lang={lang} />
|
||||
<DiscoverMoreProjects project={project} />
|
||||
</Divider.Section>
|
||||
</div>
|
||||
</section>
|
||||
@@ -1,10 +1,6 @@
|
||||
import { Metadata } from "next"
|
||||
import { useTranslation } from "@/app/i18n"
|
||||
import ProjectFiltersBar from "@/components/project/project-filters-bar"
|
||||
import { ProjectList } from "@/components/project/project-list"
|
||||
import { ProjectResultBar } from "@/components/project/project-result-bar"
|
||||
import { LABELS } from "@/app/labels"
|
||||
import { AppContent } from "@/components/ui/app-content"
|
||||
import { Suspense } from "react"
|
||||
import { Label } from "@/components/ui/label"
|
||||
import { ResearchList } from "@/components/research/research-list"
|
||||
|
||||
@@ -14,21 +10,20 @@ export const metadata: Metadata = {
|
||||
"PSE supports projects working on theoretical cryptography research, protocol development, open source tooling, experimental applications, and more.",
|
||||
}
|
||||
|
||||
const ResearchPage = async ({ params: { lang } }: any) => {
|
||||
const { t } = await useTranslation(lang, "research-page")
|
||||
const ResearchPage = async () => {
|
||||
return (
|
||||
<div className="flex flex-col gap-10 lg:gap-32 pb-[128px] ">
|
||||
<div className="w-full bg-page-header-gradient">
|
||||
<AppContent className="flex flex-col gap-4 py-10 w-full">
|
||||
<Label.PageTitle label={t("title")} />
|
||||
<Label.PageTitle label={LABELS.RESEARCH_PAGE.TITLE} />
|
||||
<h6 className="font-sans text-base font-normal text-tuatara-950 md:text-[18px] md:leading-[27px] md:max-w-[700px]">
|
||||
{t("subtitle")}
|
||||
{LABELS.RESEARCH_PAGE.SUBTITLE}
|
||||
</h6>
|
||||
</AppContent>
|
||||
</div>
|
||||
|
||||
<AppContent className="flex flex-col gap-10">
|
||||
<ResearchList lang={lang} />
|
||||
<ResearchList />
|
||||
</AppContent>
|
||||
</div>
|
||||
)
|
||||
@@ -3,17 +3,16 @@
|
||||
import { useCallback, useEffect, useRef, useState } from "react"
|
||||
import Link from "next/link"
|
||||
|
||||
import { LangProps } from "@/types/common"
|
||||
import { cn, interpolate } from "@/lib/utils"
|
||||
import { siteConfig } from "@/config/site"
|
||||
import { cn } from "@/lib/utils"
|
||||
import { AppContent } from "@/components/ui/app-content"
|
||||
import { Button } from "@/components/ui/button"
|
||||
import { Label } from "@/components/ui/label"
|
||||
import { LABELS } from "@/app/labels"
|
||||
|
||||
import { Banner } from "@/components/banner"
|
||||
import { Divider } from "@/components/divider"
|
||||
import { Icons } from "@/components/icons"
|
||||
import { PageHeader } from "@/components/page-header"
|
||||
import { useTranslation } from "@/app/i18n/client"
|
||||
import { AppContent } from "@/components/ui/app-content"
|
||||
import { Button } from "@/components/ui/button"
|
||||
import { Label } from "@/components/ui/label"
|
||||
|
||||
import ResourcesContent from "../content/resources.md"
|
||||
|
||||
@@ -84,17 +83,15 @@ const ResourceCard = ({ id, title, children }: ResourceCardProps) => {
|
||||
)
|
||||
}
|
||||
|
||||
const ResourceNav = ({ lang }: LangProps["params"]) => {
|
||||
const { t } = useTranslation(lang, "resources-page")
|
||||
|
||||
const ResourceNav = () => {
|
||||
const SCROLL_OFFSET = 80
|
||||
const [activeId, setActiveId] = useState("")
|
||||
const [isManualScroll, setIsManualScroll] = useState(false)
|
||||
const ID_LABELS_MAPPING: Record<string, string> = {
|
||||
"get-involved": t("nav.getInvolved"),
|
||||
learn: t("nav.learn"),
|
||||
build: t("nav.build"),
|
||||
design: t("nav.design"),
|
||||
"get-involved": LABELS.RESOURCES_PAGE.NAV.GET_INVOLVED,
|
||||
learn: LABELS.RESOURCES_PAGE.NAV.LEARN,
|
||||
build: LABELS.RESOURCES_PAGE.NAV.BUILD,
|
||||
design: LABELS.RESOURCES_PAGE.NAV.DESIGN,
|
||||
}
|
||||
const sectionsRef = useRef<NodeListOf<HTMLElement> | null>(null) // sections are constant so useRef might be better here
|
||||
|
||||
@@ -138,7 +135,7 @@ const ResourceNav = ({ lang }: LangProps["params"]) => {
|
||||
<div className="flex flex-col gap-6 p-8">
|
||||
<div className="flex flex-col gap-4">
|
||||
<h6 className="font-display text-lg font-bold text-tuatara-700">
|
||||
{t("onThisPage")}
|
||||
{LABELS.RESOURCES_PAGE.ON_THIS_PAGE}
|
||||
</h6>
|
||||
<ul className="text-normal font-sans text-black">
|
||||
{Object.entries(ID_LABELS_MAPPING).map(([id, label]) => {
|
||||
@@ -167,17 +164,14 @@ const ResourceNav = ({ lang }: LangProps["params"]) => {
|
||||
)
|
||||
}
|
||||
|
||||
export default function ResourcePage({ params: { lang } }: LangProps) {
|
||||
const { t } = useTranslation(lang, "resources-page")
|
||||
const { t: common } = useTranslation(lang, "common")
|
||||
|
||||
export default function ResourcePage() {
|
||||
return (
|
||||
<div className="flex flex-col">
|
||||
<div className="w-full bg-page-header-gradient">
|
||||
<AppContent className="flex flex-col gap-4 py-10 w-full">
|
||||
<Label.PageTitle label={t("title")} />
|
||||
<Label.PageTitle label={LABELS.RESOURCES_PAGE.TITLE} />
|
||||
<h6 className="font-sans text-base font-normal text-tuatara-950 md:text-[18px] md:leading-[27px] md:max-w-[700px]">
|
||||
{t("subtitle")}
|
||||
{LABELS.RESOURCES_PAGE.SUBTITLE}
|
||||
</h6>
|
||||
<Link
|
||||
href={siteConfig.addGithubResource}
|
||||
@@ -189,7 +183,7 @@ export default function ResourcePage({ params: { lang } }: LangProps) {
|
||||
<div className="flex items-center gap-1">
|
||||
<Icons.discord size={18} />
|
||||
<span className="pl-2 text-left text-sm font-medium uppercase">
|
||||
{common("addResource")}
|
||||
{LABELS.COMMON.ADD_RESOURCE}
|
||||
</span>
|
||||
<Icons.externalUrl size={22} />
|
||||
</div>
|
||||
@@ -216,7 +210,7 @@ export default function ResourcePage({ params: { lang } }: LangProps) {
|
||||
</div>
|
||||
<section className="relative hidden md:block ">
|
||||
<div className="sticky right-0 top-16 ml-auto">
|
||||
<ResourceNav lang={lang} />
|
||||
<ResourceNav />
|
||||
</div>
|
||||
</section>
|
||||
</AppContent>
|
||||
@@ -224,7 +218,7 @@ export default function ResourcePage({ params: { lang } }: LangProps) {
|
||||
<Banner
|
||||
title={
|
||||
<h3 className="py-2 font-display text-[18px] font-bold text-tuatara-950 md:text-3xl">
|
||||
{t("addResourceQuestion")}
|
||||
{LABELS.RESOURCES_PAGE.ADD_RESOURCE_QUESTION}
|
||||
</h3>
|
||||
}
|
||||
>
|
||||
@@ -240,7 +234,7 @@ export default function ResourcePage({ params: { lang } }: LangProps) {
|
||||
<div className="flex items-center gap-1">
|
||||
<Icons.discord size={18} />
|
||||
<span className="text-[14px] uppercase">
|
||||
{common("connectWithUsOnPlatform", {
|
||||
{interpolate(LABELS.COMMON.CONNECT_WITH_US_ON_PLATFORM, {
|
||||
platform: "Discord",
|
||||
})}
|
||||
</span>
|
||||
@@ -6,11 +6,7 @@ export const revalidate = 3600 // Revalidate every hour
|
||||
|
||||
export async function GET(request: Request) {
|
||||
try {
|
||||
const { searchParams } = new URL(request.url)
|
||||
const lang = searchParams.get("lang") || "en"
|
||||
|
||||
console.log("Generating RSS feed for language:", lang)
|
||||
const feed = await generateRssFeed(lang)
|
||||
const feed = await generateRssFeed()
|
||||
console.log("RSS feed generated successfully")
|
||||
|
||||
return new NextResponse(feed, {
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
"use client"
|
||||
|
||||
import { useEffect, useState } from "react"
|
||||
import i18next from "i18next"
|
||||
import LanguageDetector from "i18next-browser-languagedetector"
|
||||
import resourcesToBackend from "i18next-resources-to-backend"
|
||||
import { useCookies } from "react-cookie"
|
||||
import {
|
||||
initReactI18next,
|
||||
useTranslation as useTranslationOrg,
|
||||
} from "react-i18next"
|
||||
|
||||
import { LocaleTypes, cookieName, getOptions, languages } from "./settings"
|
||||
|
||||
const runsOnServerSide = typeof window === "undefined"
|
||||
|
||||
//
|
||||
export const i18n = i18next
|
||||
.use(initReactI18next)
|
||||
.use(LanguageDetector)
|
||||
.use(
|
||||
resourcesToBackend(
|
||||
(language: string, namespace: string) =>
|
||||
import(`./locales/${language}/${namespace}.json`)
|
||||
)
|
||||
)
|
||||
.init({
|
||||
...getOptions(),
|
||||
debug: false,
|
||||
lng: undefined, // let detect the language on client side
|
||||
detection: {
|
||||
order: ["path", "htmlTag", "cookie", "navigator"],
|
||||
},
|
||||
preload: runsOnServerSide ? languages : [],
|
||||
})
|
||||
|
||||
export function useTranslation(
|
||||
lng: LocaleTypes | string,
|
||||
ns: string,
|
||||
options = {}
|
||||
) {
|
||||
const [cookies, setCookie] = useCookies([cookieName ?? "i18next"])
|
||||
const ret = useTranslationOrg(ns, options)
|
||||
const { i18n } = ret
|
||||
if (runsOnServerSide && lng && i18n.resolvedLanguage !== lng) {
|
||||
i18n.changeLanguage(lng)
|
||||
} else {
|
||||
const [activeLng, setActiveLng] = useState(i18n.resolvedLanguage)
|
||||
useEffect(() => {
|
||||
if (activeLng === i18n.resolvedLanguage) return
|
||||
setActiveLng(i18n.resolvedLanguage)
|
||||
}, [activeLng, i18n.resolvedLanguage])
|
||||
useEffect(() => {
|
||||
if (!lng || i18n.resolvedLanguage === lng) return
|
||||
i18n.changeLanguage(lng)
|
||||
}, [lng, i18n])
|
||||
useEffect(() => {
|
||||
if (cookies.i18next === lng) return
|
||||
if (!lng) return
|
||||
setCookie(cookieName, lng, { path: "/" })
|
||||
}, [lng, cookies.i18next]) // tofix: set cookies.i18next as deps and fix issue with re-rendering
|
||||
}
|
||||
return ret
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
import { createInstance } from "i18next"
|
||||
import resourcesToBackend from "i18next-resources-to-backend"
|
||||
import { initReactI18next } from "react-i18next/initReactI18next"
|
||||
|
||||
import { getOptions } from "./settings"
|
||||
|
||||
const initI18next = async (lng: string, ns: string) => {
|
||||
const i18nInstance = createInstance()
|
||||
await i18nInstance
|
||||
.use(initReactI18next)
|
||||
.use(
|
||||
resourcesToBackend(
|
||||
(language: string, namespace: string) =>
|
||||
import(`./locales/${language}/${namespace}.json`)
|
||||
)
|
||||
)
|
||||
.init(getOptions(lng, ns))
|
||||
return i18nInstance
|
||||
}
|
||||
|
||||
export async function useTranslation(lng: string, ns: string) {
|
||||
const i18nextInstance = await initI18next(lng, ns)
|
||||
return {
|
||||
t: i18nextInstance.getFixedT(lng, Array.isArray(ns) ? ns[0] : ns),
|
||||
i18n: i18nextInstance,
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
{
|
||||
"title": "Über unser Team",
|
||||
"description": "PSE ist ein multidisziplinäres Forschungs- und Entwicklungs-Lab, das von der Ethereum Foundation unterstützt wird. Wir erschaffen Open Source Infrastruktur, Tools und Bildungsmaterialien für den praktischen Einsatz von Kryptographie in Software.",
|
||||
"our-principles-title": "Unsere Grundsätze",
|
||||
"principles": [
|
||||
{
|
||||
"title": "01. Kryptographie für alle",
|
||||
"description": [
|
||||
"Kryptographie ist allgegenwärtig: Jedes Mal, wenn du eine Verbindung zu einer sicheren Website herstellst, dich mit einem Passwort anmeldest oder dein Telefon entsperrst, ist Kryptographie im Einsatz.",
|
||||
"Mit “programmierbarer” Kryptographie (wie z.B. ZK Proofs, Multi-Party Computation oder homomorphe Verschlüsselung) können wir nachprüfbare Aussagen über geheime Informationen machen, ohne die Informationen selbst preiszugeben. Dies kann für Identity Management, Collusion Resistance, die anonyme Kommunikation und vieles mehr genutzt werden.",
|
||||
"Wir bauen Bibliotheken für Entwickler-Tools, schreiben Paper und veröffentlichen Prototypen, die als Open Source und kostenlos für alle zur Verfügung stehen. Wir hoffen, dass das andere inspiriert, die Technologien zu entwickeln, die sie benötigen."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "02. Privatsphäre als Standard",
|
||||
"description": [
|
||||
"Wir glauben, dass Privatsphäre ein Grundrecht ist. Wir möchten am Aufbau eines Internets mitwirken, das auf den invasiven Umgang mit privaten Daten verzichtet und den Menschen stattdessen eine echte Wahl gibt, wer Zugang zu ihren persönlichen Daten hat. Die Erlaubnis dazu sollte zweckgebunden, widerrufbar, informiert und nicht erzwungen sein.",
|
||||
"Wir stellen die Tools bereit, die den Leuten helfen, sich sicher zu authentifizieren, vertrauliche Transaktionen auf der Blockchain durchzuführen und die Privatsphäre der Nutzer zu respektieren und zu schützen."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "03. Skalierung für Gemeinschaften",
|
||||
"description": [
|
||||
"Zero Knowledge Proofs können Berechnungen schnell und effizient verifizieren und helfen dezentralen Systemen wie Ethereum, performanter zu werden. Wir erforschen, entwickeln und teilen Skalierungslösungen, die jeder nutzen kann, um zu einer stärkeren und praktischeren digitalen öffentlichen Infrastruktur beizutragen.",
|
||||
"Wir fördern unsere Gemeinschaft auch, indem wir die nächste Generation von Entwicklern unterstützen. Wir veranstalten spannende Sommerprogramme für Studenten und regelmäßige Live-Vorlesungen, an denen jeder auf der Welt teilnehmen kann."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "04. Open Source als öffentliches Gut",
|
||||
"description": [
|
||||
"Wir bauen ein vielfältiges und multidisziplinäres Team auf, um das neu entstehende Zero Knowledge Ökosystem zu erforschen. PSE besteht aus Programmierern, Entwicklern und Mathematikern, die mit Kreativen und Community-Organisatoren zusammenarbeiten, um gemeinsam das Potenzial von programmierbarer Kryptographie zu erkunden.",
|
||||
"Wir experimentieren in der Öffentlichkeit und freuen uns über Beiträge, Integrationen, Forks oder Feedback zu all unseren Projekten."
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
{
|
||||
"siteTitle": "Privacy & Scaling Explorations",
|
||||
"siteDescription": "Verbesserung von Ethereum durch Forschung in der Kryptographie und gemeinsames Experimentieren.",
|
||||
"menu": {
|
||||
"home": "Home",
|
||||
"projectLibrary": "Projektsammlung",
|
||||
"about": "Über uns",
|
||||
"resources": "Ressourcen",
|
||||
"jobs": "Jobs",
|
||||
"languages": "Sprachen {{locale}}",
|
||||
"blog": "Blog",
|
||||
"activity": "Events",
|
||||
"report": "Berichte",
|
||||
"firstGoodIssue": "Good First Issue"
|
||||
},
|
||||
"footer": {
|
||||
"description": "Privacy + Scaling Explorations ist ein multidisziplinäres Team, das von der Ethereum Foundation unterstützt wird.",
|
||||
"privacyPolicy": "Datenschutzbestimmungen",
|
||||
"termsOfUse": "Nutzungsbedingungen"
|
||||
},
|
||||
"filterOptions": {
|
||||
"random": "Zufällig",
|
||||
"asc": "Titel: A-Z",
|
||||
"desc": "Titel: Z-A",
|
||||
"relevance": "Relevanz"
|
||||
},
|
||||
"filterLabels": {
|
||||
"keywords": "Stichworte",
|
||||
"builtWith": "Entwickelt mit",
|
||||
"themes": "Ausgewählte Themes",
|
||||
"projectStatus": "Projekt Status"
|
||||
},
|
||||
"error": {
|
||||
"404": {
|
||||
"title": "404: Seite nicht gefunden.",
|
||||
"description": "Die Seite, die du suchst, könnte nicht mehr existieren, der Name wurde geändert oder sie ist kurzzeitig nicht mehr verfügbar."
|
||||
}
|
||||
},
|
||||
"tags": {
|
||||
"build": "Entwickeln",
|
||||
"play": "Ausprobieren",
|
||||
"research": "Forschen",
|
||||
"grantee": "Grants",
|
||||
"collaborate": "Zusammenarbeit",
|
||||
"fullyPSE": "PSE"
|
||||
},
|
||||
"status": {
|
||||
"archived": "Archiviert",
|
||||
"active": "Aktiv"
|
||||
},
|
||||
"sortBy": "Sortiere nach: {{option}}",
|
||||
"tryItOut": "Probier's aus!",
|
||||
"learnMore": "Lerne mehr",
|
||||
"buildWithThisTool": "Mit diesem Tool etwas bauen",
|
||||
"deepDiveResearch": "Tiefer in die Forschung eintauchen",
|
||||
"searchProjectPlaceholder": "Nach Projektname oder Stichwort suchen",
|
||||
"close": "Geschlossen",
|
||||
"lastUpdatedAt": "Zuletzt aktualisiert {{date}}",
|
||||
"projectLibrary": "Projektsammlung",
|
||||
"backToProjectLibrary": "Zurück zur Projektsammlung",
|
||||
"discoverMore": "Entdecke mehr",
|
||||
"goToHome": "Gehe zur Homepage",
|
||||
"noResults": "Keine Ergebnisse gefunden.",
|
||||
"noResultsDescription": "Sorry, wir konnten zu deiner Suche keine Ergebnisse finden. Bitte versuche es nochmal mit anderen Stichwörtern.",
|
||||
"exploreProjectLibrary": "Projektsammlung erkunden",
|
||||
"clearAll": "Alles zurücksetzen",
|
||||
"showProjects": "Projekte anschauen",
|
||||
"filters": "Filter",
|
||||
"whatDoYouWantDoToday": "Was möchtest du heute tun?",
|
||||
"showingProjects": "Zeige {{count}} Projekte an.",
|
||||
"showingProjectsWith": "Zeige {{count}} Projekte an mit:"
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"headerTitle": "Privacy + Scaling Explorations",
|
||||
"headerSubtitle": "Ressourcen für die Welt der programmierbaren Kryptographie",
|
||||
"whoWeAre": "Wer wir sind",
|
||||
"whoWeAreDescription": "PSE ist ein Research Lab, das kostenlose Tools entwickelt, welche die Welt der Kryptographie erweitern.",
|
||||
"howToPlugIn": "Wie kann ich mitmachen",
|
||||
"howToPlugInDescription": "Probiere unsere Apps aus, baue auf unseren Tools auf, mache bei unseren Projekten mit, oder informiere dich über unsere offenen Stellen. Wir freuen uns über Beiträge aus der ganzen Welt!",
|
||||
"joinOurDiscord": "Trete uns bei"
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
{
|
||||
"learnAndShare": "Lernen & Teilen",
|
||||
"event": "Event",
|
||||
"blogPost": "Blog Post",
|
||||
"watch": "Anschauen",
|
||||
"read": "Lesen",
|
||||
"attend": "Besuchen",
|
||||
"news": [
|
||||
{
|
||||
"type": "Post",
|
||||
"title": "Erfahrungen von der KZG Zeremonie (English)",
|
||||
"action": {
|
||||
"label": "Lesen",
|
||||
"url": "https://mirror.xyz/privacy-scaling-explorations.eth/naTdx-u7kyirczTLSAnWwH6ZdedfTQu1yCWQj1m_n-E"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Lernen",
|
||||
"title": "Öffentliche Veranstaltungen, die von PSE-Mitgliedern organisiert werden, um mehr über die Projekte der anderen zu erfahren, Ideen auszutauschen und Feedback zu erhalten. (English)",
|
||||
"action": {
|
||||
"label": "Ganzen Plan anschauen",
|
||||
"url": "https://pse-team.notion.site/50dcf22c5191485e93406a902ae9e93b?v=453023f8227646dd949abc34a7a4a138&pvs=4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Lernen",
|
||||
"title": "Folding Circom Circuit: Eine ZKML Fallstudie von Dr. Cathie So (English)",
|
||||
"action": {
|
||||
"label": "Anschauen",
|
||||
"url": "https://www.youtube.com/live/jb6HDEtY4CI"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"subtitle": "Bei PSE gibt es viele Projekte, von Forschung in der Kryptographie bis hin zu Entwickler-Tools, Protokollen und Proof-of-Concept Anwendungen."
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"title": "Ressourcen",
|
||||
"subtitle": "Diese Liste wurde von unserer Community zusammengestellt. Du kannst Issues auf unserer Github-Seite aufmachen, um dieser Liste weitere Ressourcen hinzuzufügen.",
|
||||
"onThisPage": "Auf dieser Seite",
|
||||
"editResources": "Ressourcen bearbeiten",
|
||||
"addSource": "Ressource hinzufügen",
|
||||
"addResourceQuestion": "Nicht gefunden, wonach du suchst?",
|
||||
"nav": {
|
||||
"getInvolved": "Mach mit",
|
||||
"learn": "Lernen",
|
||||
"build": "Entwickeln",
|
||||
"design": "Gestalten"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"whatWeDo": "Was wir machen",
|
||||
"whatWeDoDescription": "PSE ist ein multidisziplinäres Team, das Open Source Tools in den Bereichen Privatsphäre und Skalierung für die nächste Generation des Internets entwickelt.",
|
||||
"privacy": {
|
||||
"title": "Privacy (Privatsphäre)",
|
||||
"description": "Wir glauben, dass Privatsphäre ein gesellschaftliches Gut ist, das für jeden frei zugänglich sein sollte. Deshalb entwickeln wir Open Source Tools, die Menschen dabei helfen, zu entscheiden, was, wie, wann und wo sie teilen möchten."
|
||||
},
|
||||
"scaling": {
|
||||
"title": "Scaling (Skalierung)",
|
||||
"description": "Unsere Infrastruktur trägt dazu bei, Gemeinschaften zu fördern, indem wir Ethereum effizienter und zugänglicher machen. Von Accountabstraktion und der Reduzierung von Transaktionskosten bis hin zu Rollups und zkEVM arbeiten wir an einer interoperablen Zukunft."
|
||||
},
|
||||
"explorations": {
|
||||
"title": "Explorations (Erforschung)",
|
||||
"description": "Wir erkunden das aufstrebende Zero-Knowledge-Ökosystem durch gemeinsame Experimente. Wir arbeiten zusammen, teilen was wir lernen und freuen uns über Beiträge aus der ganzen Welt."
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
"title": "About our team",
|
||||
"description": "PSE is an Ethereum Foundation supported research and development lab dedicated to testing use cases for cryptographic primitives. We build open source infrastructure and tools, host workshops and summer programs, and collaborate with people bringing cryptography to life.",
|
||||
"our-principles-title": "Our Principles",
|
||||
"banner": {
|
||||
"title": "Connect with us",
|
||||
"subtitle": "Join our discord to learn more about our research, connect with our community, and keep posted about jobs and grant opportunities!"
|
||||
},
|
||||
"principles": [
|
||||
{
|
||||
"title": "01. Cryptography for people",
|
||||
"description": [
|
||||
"Cryptography is everywhere: every time you connect to a secure site, log in with a password or unlock your phone, you're seeing cryptography in action. With “programmable” cryptography (like zero knowledge proofs, multi-party computation or homomorphic encryption) we can make verifiable claims about secret information without revealing the information itself.",
|
||||
" This can be applied to identity management, collusion resistance, anonymous communication and so much more. We're building a library of dev tools, research papers, and prototypes that are open source and free for everyone to use. We hope our resources inspire people to innovate the technologies that their communities need."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "02. Prioritizing privacy",
|
||||
"description": [
|
||||
"We believe that privacy is a fundamental right. We want to be part of building an internet that divests from invasive data practices, and instead gives people real choices about who has access to their personal information.",
|
||||
" Permission should be purpose specific, revocable, informed and uncoerced. We make tools that help people to securely authenticate themselves, make confidential transactions on the blockchain, and respect and preserve user privacy."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "03. Scaling for communities",
|
||||
"description": [
|
||||
"Zero knowledge proofs can verify computations quickly and cheaply, helping decentralized systems like Ethereum become more efficient. We research, design and share scaling solutions that anyone can use to contribute to a stronger and more practical digital public infrastructure.",
|
||||
" We also grow our community by supporting the next generation of builders. We host immersive programs for students and lecture series that are open to everyone interested in building with cryptography."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "04. Collective exploration",
|
||||
"description": [
|
||||
"We are cultivating a diverse and multidisciplinary team to explore the emerging zero knowledge ecosystem. PSE is made up of programmers, engineers, and mathematicians working alongside creatives and community organizers to collaboratively discover the potential of programmable cryptography.",
|
||||
"We experiment in the open and welcome contributions, integrations, forks, or feedback on all of our projects."
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"title": "Blog",
|
||||
"subtitle": "Read our latest articles and stay updated on the latest news in the world of cryptography.",
|
||||
"recentArticles": "Recent articles",
|
||||
"seeMore": "See more",
|
||||
"readMore": "Read more"
|
||||
}
|
||||
@@ -1,107 +0,0 @@
|
||||
{
|
||||
"siteTitle": "Privacy & Scaling Explorations",
|
||||
"siteDescription": "Enhancing Ethereum through cryptographic research and collective experimentation.",
|
||||
"activeResearch": "Active Research",
|
||||
"pastResearch": "Past Research",
|
||||
"menu": {
|
||||
"home": "Home",
|
||||
"projectLibrary": "Project Library",
|
||||
"projects": "Projects",
|
||||
"research": "Research",
|
||||
"about": "About",
|
||||
"resources": "Resources",
|
||||
"jobs": "Jobs",
|
||||
"languages": "Languages {{locale}}",
|
||||
"blog": "Blog",
|
||||
"activity": "Activity",
|
||||
"report": "Technical Reports",
|
||||
"firstGoodIssue": "Good First Issue",
|
||||
"programs": "Programs",
|
||||
"openIssues": "Open Issues"
|
||||
},
|
||||
"footer": {
|
||||
"description": "Privacy + Scaling Explorations is a multidisciplinary team supported by the Ethereum Foundation.",
|
||||
"privacyPolicy": "Privacy Policy",
|
||||
"termsOfUse": "Terms of use"
|
||||
},
|
||||
"filterOptions": {
|
||||
"random": "Random",
|
||||
"asc": "Title: A-Z",
|
||||
"desc": "Title: Z-A",
|
||||
"relevance": "Relevance"
|
||||
},
|
||||
"filterLabels": {
|
||||
"keywords": "Keywords",
|
||||
"builtWith": "Built with",
|
||||
"themes": "Themes selected",
|
||||
"projectStatus": "Project status",
|
||||
"fundingSource": "Funding source",
|
||||
"funding": "Funding",
|
||||
"license": "License",
|
||||
"projectType": "Project type"
|
||||
},
|
||||
"error": {
|
||||
"404": {
|
||||
"title": "404: Page not found.",
|
||||
"description": "The page you are looking for might have been removed, had its name changed or is temporarily unavailable."
|
||||
}
|
||||
},
|
||||
"tags": {
|
||||
"build": "Build",
|
||||
"play": "Play",
|
||||
"research": "Research",
|
||||
"grantee": "Grant",
|
||||
"collaborate": "Collaboration",
|
||||
"fullyPSE": "Fully PSE"
|
||||
},
|
||||
"status": {
|
||||
"archived": "Inactive",
|
||||
"active": "Active",
|
||||
"inactive": "Inactive"
|
||||
},
|
||||
"projectSunset": "This project has been sunset and is not actively worked on anymore.",
|
||||
"projectMaintenance": "This project is still being monitored for bug fixes but is not under active feature development",
|
||||
"sortBy": "Sort by: {{option}}",
|
||||
"tryItOut": "Try it out!",
|
||||
"learnMore": "Learn more",
|
||||
"learnMoreDiscord": "Join our Discord to learn more about our programs and other educational opportunities!",
|
||||
"buildWithThisTool": "Build with this tool",
|
||||
"buildWith": "Build with",
|
||||
"deepDiveResearch": "Dive deeper into the research",
|
||||
"searchProjectPlaceholder": "Search project title or keyword",
|
||||
"close": "Close",
|
||||
"lastUpdatedAt": "Last updated {{date}}",
|
||||
"projectLibrary": "Project Library",
|
||||
"backToProjectLibrary": "Back to project library",
|
||||
"discoverMore": "Discover more",
|
||||
"goToHome": "Go to homepage",
|
||||
"noResults": "No results found.",
|
||||
"noResultsDescription": "Sorry, we couldn't find any results for your search. Please try again with different keywords.",
|
||||
"exploreProjectLibrary": "Explore Project Library",
|
||||
"developmentProjects": "Development Projects",
|
||||
"research": "Research",
|
||||
"clearAll": "Clear all",
|
||||
"showProjects": "Show projects",
|
||||
"filters": "Filters",
|
||||
"whatDoYouWantDoToday": "What do you want to do today?",
|
||||
"showingProjects": "Showing {{count}} projects",
|
||||
"showingProjectsWith": "Showing {{count}} projects with:",
|
||||
"connectWithUs": "Connect with us",
|
||||
"connectWithUsDescription": "We welcome contributions from around the world! Join our discord to try out apps, build with our tools, contribute to projects, or check out job openings and grant opportunities.",
|
||||
"ourYearProgram": "Our {{year}} programs",
|
||||
"onThisPage": "On this page",
|
||||
"howToApply": "How to apply",
|
||||
"chooseProgram": "Choose your program",
|
||||
"connectWithUsOnPlatform": "Connect with us on {{platform}}",
|
||||
"addResource": "Add a resource",
|
||||
"notCurrentlyActive": "Not Currently Active",
|
||||
"inactive": "Inactive",
|
||||
"joinOurDiscord": "Join our discord",
|
||||
"prevBrandImage": "Previous branding",
|
||||
"editThisPage": "Edit this page",
|
||||
"contents": "Contents",
|
||||
"projectVideos": "Project Videos",
|
||||
"errorLoadingVideos": "Error loading videos",
|
||||
"projectTeam": "Team",
|
||||
"youtubeVideos": "YouTube Videos"
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"headerTitle": "Privacy + Scaling Explorations",
|
||||
"headerSubtitle": "PSE is a research and development lab with a mission of making cryptography useful for human collaboration. We build open source tooling with things like zero-knowledge proofs, multiparty computation, homomorphic encryption, Ethereum, and more.",
|
||||
"whoWeAre": "Who we are",
|
||||
"whoWeAreDescription": "PSE is a research lab building free tools that expand the world of cryptography.",
|
||||
"howToPlugIn": "How to plug in",
|
||||
"howToPlugInDescription": "Try out our apps, build with our tools, contribute to projects, or check out our job openings. We welcome contributions from around the world!",
|
||||
"joinOurDiscord": "Join our community",
|
||||
"recentUpdates": "Recent updates",
|
||||
"connectWithUs": {
|
||||
"title": "Join our programs",
|
||||
"description": "Want to explore the world of programmable cryptography and learn how to make contributions to open-source projects? Join our free programs to start your journey!"
|
||||
},
|
||||
"videos": "VIDEOS",
|
||||
"visitOurChannel": "VISIT OUR CHANNEL",
|
||||
"errorLoadingVideos": "Error loading videos",
|
||||
"checkOutOurYoutube": "Check out our YouTube to learn the latest in advanced cryptography."
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
{
|
||||
"learnAndShare": "Learn & Share",
|
||||
"event": "Event",
|
||||
"blogPost": "Blog Post",
|
||||
"watch": "Watch",
|
||||
"read": "Read",
|
||||
"attend": "Attend",
|
||||
"recentUpdates": "Recent Updates",
|
||||
"seeAllUpdates": "See more announcements on Discord",
|
||||
"repostOnSocial": "Repost on {{socialName}}"
|
||||
}
|
||||
@@ -1,91 +0,0 @@
|
||||
{
|
||||
"title": "Get started with programmable cryptography",
|
||||
"description": "PSE offers free educational programs to help you dive deep into Zero Knowledge Proofs, Fully Homomorphic Encryption, Multi-Party Computation and the latest in programmable cryptography. Whether you're looking to learn the basics or start making open-source contributions, we have resources for your learning journey!",
|
||||
"common": {
|
||||
"faq": "FAQ",
|
||||
"curriculum": "Curriculum",
|
||||
"howToApply": "How to apply",
|
||||
"applyNow": "Apply now",
|
||||
"learnMoreOnGithub": "Learn more on Github",
|
||||
"week": "Week {{week}}"
|
||||
},
|
||||
"curriculum": [
|
||||
{
|
||||
"title": "PRE-REQUISITES",
|
||||
"items": [
|
||||
"Course overview and resources",
|
||||
"Git, GitHub, and PR workflow basics",
|
||||
"Introduction to ZKPs and Number Theory"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Cryptographic Basics",
|
||||
"items": [
|
||||
"Getting started with Circom",
|
||||
"Basics of encryption and hash functions",
|
||||
"Digital signatures and elliptic curve cryptography"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "More Crypto + ZKPs",
|
||||
"items": [
|
||||
"Circom crash course + practice",
|
||||
"KZG Commitments and zkSNARKs",
|
||||
"Overview of Trusted Setups and Groth16"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Hackathon",
|
||||
"items": [
|
||||
"A break from studying",
|
||||
"One week to build something with your new skills!"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "PLONK Week",
|
||||
"items": [
|
||||
"Learn Rust and complete Rustlings",
|
||||
"Deep dive into PLONK",
|
||||
"Make a presentation and blog post on PLONK"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Technologies + Applications",
|
||||
"items": [
|
||||
"Halo2 introduction and practical",
|
||||
"Study of FHE and MPC",
|
||||
"Explore Semaphore, Bandada, TLSNotary, ZKEmail"
|
||||
]
|
||||
}
|
||||
],
|
||||
"coreProgram": {
|
||||
"title": "Core Program",
|
||||
"description": [
|
||||
"PSE's Core Program is an eight-week introductory course for university students looking to explore the world of programmable cryptography. The program will be run hybrid style with online and in-person sessions in Argentina (Buenos Aires), Costa Rica (San José), Ecuador (Cuenca), Japan (Tokyo), South Korea (Seoul), and Taiwan (Taipei).",
|
||||
"By the end of the program, you will gain comprehensive knowledge about Zero Knowledge Proofs (ZKP), Fully Homomorphic Encryption (FHE), and Multiparty Computation (MPC). You will also bolster your GitHub portfolio, and potentially receive grants for further research and contributions!"
|
||||
]
|
||||
},
|
||||
"accelerationProgram": {
|
||||
"title": "Acceleration program",
|
||||
"description": [
|
||||
"Acceleration program supports alumni of our entry level programs (e.g. Core Program, ZK Summer, ZK Playground) to deepen explorations of ZKP, FHE, MPC, and related technologies through grants and mentorship. This program operates on a round-based application system, focusing on specific open tasks for each round."
|
||||
]
|
||||
},
|
||||
"howToApply": {
|
||||
"description": "We encourage people to apply as each round opens because we review applications on a first-come first-serve basis! If there are multiple proposals about the same issue, we may consider granting multiple applications on a case-by-case basis.",
|
||||
"openTasks": {
|
||||
"title": "To apply for an open task:",
|
||||
"description": [
|
||||
"Explore the <a href='https://github.com/privacy-scaling-explorations/acceleration-program/issues?q=is%3Aopen+is%3Aissue+-label%3A%22Application+Proposal%22+-label%3A%22WIP%22+' target='_blank'>Open Task RFP List</a>",
|
||||
"Apply using this <a href='https://github.com/privacy-scaling-explorations/acceleration-program/issues/new?assignees=&labels=&projects=&template=proposal-for-applicant.md&title=' target='_blank'>template</a>"
|
||||
]
|
||||
},
|
||||
"submitIdea": {
|
||||
"title": "To submit your own idea:",
|
||||
"description": [
|
||||
"Submit your idea using this <a href='https://github.com/privacy-scaling-explorations/acceleration-program/issues/new?assignees=&labels=&projects=&template=propose-your-open-task.md&title=' target='_blank'>template</a>",
|
||||
"You can look into this <a href='https://github.com/privacy-scaling-explorations/acceleration-program/blob/main/Doc/Progcrypto%20Grant%20Program.md' target='_blank'>idea pool</a> and find one and submit here"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"title": "Explore our Project Library",
|
||||
"subtitle": "Everything PSE works on is public and open source. All of our projects, whether research or development, are resources you can learn from and build with."
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"title": "Research",
|
||||
"subtitle": "Our research model is exploratory, iterative, and full-stack. We work on areas that are often overlooked by academia or industry — foundational concepts that need clarity, implementation gaps that have stalled progress, and risky ideas with uncertain but transformative potential. Sometimes our research unlocks a new breakthrough that leads to prototypes, and sometimes we just clarify assumptions and fill in theoretical gaps. We believe meaningful progress comes from applying research to real-world needs. Our work is open source, and we maintain a feedback loop so that challenges from the field can help shape our focus. We aim to support the broader ecosystem by systematizing knowledge, benchmarking new primitives, and offering credible guidance to advance the world of cryptography.",
|
||||
"activeResearch": "Active Research",
|
||||
"pastResearch": "Past Research"
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"title": "Resources",
|
||||
"subtitle": "This list was compiled by our community. Submit an issue on our Github page to add a resource to this list.",
|
||||
"onThisPage": "On this page",
|
||||
"editResources": "Edit resources",
|
||||
"addSource": "Add a source",
|
||||
"addResourceQuestion": "Didn't find what you are looking for?",
|
||||
"nav": {
|
||||
"getInvolved": "Get involved",
|
||||
"learn": "Learn",
|
||||
"build": "Build",
|
||||
"design": "Design"
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"whatWeDo": "What we do",
|
||||
"whatWeDoDescription": "PSE is a multidisciplinary team creating open source privacy and scaling tools for the next generation's internet.",
|
||||
"privacy": {
|
||||
"title": "Privacy",
|
||||
"description": "We believe privacy is a social good that should be accessible to everyone. That's why we're creating open source tools that help people choose what, how, when, and where they share."
|
||||
},
|
||||
"scaling": {
|
||||
"title": "Scaling",
|
||||
"description": "Our infrastructure helps communities grow by making Ethereum more efficient and accessible. From account abstraction and reducing transaction costs, to rollups and zkEVM, we are building towards an interoperable future."
|
||||
},
|
||||
"explorations": {
|
||||
"title": "Explorations",
|
||||
"description": "We are mapping the emerging zero knowledge ecosystem through collective experimentation. We collaborate, share what we learn, and welcome contributions from around the world."
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
{
|
||||
"title": "Acerca de nuestro equipo",
|
||||
"description": "PSE es un laboratorio de investigación y desarrollo multidisciplinario apoyado por la Fundación Ethereum. Creamos infraestructura de código abierto, herramientas y recursos educativos para incorporar criptografía en aplicaciones del mundo real.",
|
||||
"our-principles-title": "Nuestros principios",
|
||||
"principles": [
|
||||
{
|
||||
"title": "01. Criptografía para personas",
|
||||
"description": [
|
||||
"La criptografía está en todas partes: cada vez que te conectas a un sitio seguro, inicias sesión con una contraseña o desbloqueas tu teléfono, estás viendo la criptografía en acción.",
|
||||
"Con la criptografía 'programable' (como pruebas de conocimiento cero, computación multiparte o cifrado homomórfico), podemos hacer afirmaciones verificables sobre información secreta sin revelar la información en sí misma. Esto se puede aplicar a la gestión de identidad, resistencia a la colusión, comunicación anónima y mucho más.",
|
||||
"Estamos construyendo una biblioteca de herramientas de desarrollo, artículos de investigación y prototipos que son de código abierto y gratuitos para que todos los usen. Esperamos que nuestros recursos inspiren a las personas a innovar en las tecnologías que sus comunidades necesitan."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "02. Privacidad por defecto",
|
||||
"description": [
|
||||
"Creemos que la privacidad es un derecho fundamental. Queremos ser parte de la construcción de un internet que se aleje de prácticas invasivas de datos y, en cambio, brinde a las personas opciones reales sobre quién tiene acceso a su información personal. La autorización debe ser específica para el propósito, revocable, informada y no coercitiva.",
|
||||
"Creamos herramientas que ayudan a las personas a autenticarse de manera segura, realizar transacciones confidenciales en la cadena de bloques y respetar y preservar la privacidad del usuario."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "03. Escalabilidad para comunidades",
|
||||
"description": [
|
||||
"Las pruebas de conocimiento cero (zero-knowledge proofs) pueden verificar cálculos de manera rápida y económica, ayudando a sistemas descentralizados como Ethereum a volverse más eficientes. Investigamos, diseñamos y compartimos soluciones de escalabilidad que cualquiera puede usar para contribuir a una infraestructura pública digital más sólida y práctica.",
|
||||
"También hacemos crecer nuestra comunidad apoyando a la próxima generación de constructores. Organizamos programas de verano inmersivos para estudiantes y conferencias en vivo regulares a las que cualquier persona en el mundo puede unirse y aprender."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "04. Bienes públicos de código abierto",
|
||||
"description": [
|
||||
"Estamos cultivando un equipo diverso y multidisciplinario para explorar el emergente ecosistema de conocimiento cero. PSE está compuesto por programadores, ingenieros y matemáticos que trabajan junto a creativos y organizadores comunitarios para descubrir colaborativamente el potencial de la criptografía programable.",
|
||||
"Experimentamos en público y damos la bienvenida a contribuciones, integraciones, bifurcaciones (forks) o comentarios sobre todos nuestros proyectos."
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
{
|
||||
"siteTitle": "Privacy & Scaling Explorations",
|
||||
"siteDescription": "Mejorando Ethereum a través de investigación criptográfica y experimentación colectiva.",
|
||||
"menu": {
|
||||
"home": "Inicio",
|
||||
"projectLibrary": "Biblioteca de Proyectos",
|
||||
"about": "Acerca",
|
||||
"resources": "Recursos",
|
||||
"jobs": "Trabajos",
|
||||
"languages": "Idiomas {{locale}}",
|
||||
"blog": "Blog",
|
||||
"activity": "Actividad",
|
||||
"report": "Informes",
|
||||
"firstGoodIssue": "Good First Issue"
|
||||
},
|
||||
"footer": {
|
||||
"description": "Privacy + Scaling Explorations es un equipo multidisciplinario apoyado por la Ethereum Foundation.",
|
||||
"privacyPolicy": "Política de Privacidad",
|
||||
"termsOfUse": "Términos de Uso"
|
||||
},
|
||||
"filterOptions": {
|
||||
"random": "Aleatorio",
|
||||
"asc": "Título: A-Z",
|
||||
"desc": "Título: Z-A",
|
||||
"relevance": "Relevancia"
|
||||
},
|
||||
"filterLabels": {
|
||||
"keywords": "Palabras clave",
|
||||
"builtWith": "Construido con",
|
||||
"themes": "Temas seleccionados",
|
||||
"projectStatus": "Estado del Proyecto"
|
||||
},
|
||||
"error": {
|
||||
"404": {
|
||||
"title": "404: Página no encontrada.",
|
||||
"description": "La página que estás buscando podría haber sido eliminada, haber cambiado de nombre o estar temporalmente no disponible."
|
||||
}
|
||||
},
|
||||
"tags": {
|
||||
"build": "Construir",
|
||||
"play": "Jugar",
|
||||
"research": "Investigar",
|
||||
"grantee": "Subvención",
|
||||
"collaborate": "Colaboración",
|
||||
"fullyPSE": "Totalmente PSE"
|
||||
},
|
||||
"status": {
|
||||
"archived": "Archivado",
|
||||
"active": "Activo"
|
||||
},
|
||||
"sortBy": "Ordenar por: {{option}}",
|
||||
"tryItOut": "¡Pruébalo!",
|
||||
"learnMore": "Aprende más",
|
||||
"buildWithThisTool": "Construye con esta herramienta",
|
||||
"deepDiveResearch": "Profundiza en la investigaciónh",
|
||||
"searchProjectPlaceholder": "Buscar por título del proyecto o palabra clave",
|
||||
"close": "Cerrar",
|
||||
"lastUpdatedAt": "Última actualización {{date}}",
|
||||
"projectLibrary": "Biblioteca de Proyectos",
|
||||
"backToProjectLibrary": "Volver a la biblioteca de proyectos",
|
||||
"discoverMore": "Descubre más",
|
||||
"goToHome": "Ir a la página de inicio",
|
||||
"noResults": "No se encontraron resultados.",
|
||||
"noResultsDescription": "Lo sentimos, no pudimos encontrar resultados para tu búsqueda. Por favor, inténtalo de nuevo con palabras clave diferentes.",
|
||||
"exploreProjectLibrary": "Explorar Biblioteca de Proyectos",
|
||||
"clearAll": "Borrar todo",
|
||||
"showProjects": "Mostrar proyectos",
|
||||
"filters": "Filtros",
|
||||
"whatDoYouWantDoToday": "¿Qué deseas hacer hoy?",
|
||||
"showingProjects": "Mostrando {{count}} proyectos",
|
||||
"showingProjectsWith": "Mostrando {{count}} proyectos con:"
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"headerTitle": "Privacy + Scaling Explorations",
|
||||
"headerSubtitle": "Construyendo recursos gratuitos para personas que expanden el mundo de la criptografía programable.",
|
||||
"whoWeAre": "Quiénes somos",
|
||||
"whoWeAreDescription": "PSE es un laboratorio de investigación que construye herramientas gratuitas que expanden el mundo de la criptografía.",
|
||||
"howToPlugIn": "Cómo involucrarse",
|
||||
"howToPlugInDescription": "Prueba nuestras aplicaciones, construye con nuestras herramientas, contribuye a proyectos o revisa nuestras ofertas de trabajo. ¡Damos la bienvenida a contribuciones de todo el mundo!",
|
||||
"joinOurDiscord": "Únete a nuestra comunidad"
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
{
|
||||
"learnAndShare": "Aprender y Comparte",
|
||||
"event": "Evento",
|
||||
"blogPost": "Publicación de Blog",
|
||||
"watch": "Ver",
|
||||
"read": "Leer",
|
||||
"attend": "Asistir",
|
||||
"recentUpdates": "Recent Updates",
|
||||
"seeAllUpdates": "See more announcements on Discord",
|
||||
"repostOnSocial": "Repost on {{socialName}}"
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"subtitle": "PSE es el hogar de muchos proyectos, desde investigación en criptografía hasta herramientas para desarrolladores, protocolos y aplicaciones de prueba de concepto."
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"title": "Recursos",
|
||||
"subtitle": "Esta lista fue compilada por nuestra comunidad. Envía un problema en nuestra página de Github para agregar un recurso a esta lista.",
|
||||
"onThisPage": "En esta página",
|
||||
"editResources": "Editar recursos",
|
||||
"addSource": "Agregar una fuente",
|
||||
"addResourceQuestion": "¿No encontraste lo que buscabas?",
|
||||
"nav": {
|
||||
"getInvolved": "Participa",
|
||||
"learn": "Aprende",
|
||||
"build": "Construye",
|
||||
"design": "Diseña"
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"whatWeDo": "Lo que hacemos",
|
||||
"whatWeDoDescription": "PSE es un equipo multidisciplinario que crea herramientas de privacidad y escalabilidad de código abierto para la próxima generación de Internet.",
|
||||
"privacy": {
|
||||
"title": "Privacidad",
|
||||
"description": "Creemos que la privacidad es un bien social que debería ser accesible para todos. Por eso estamos creando herramientas de código abierto que ayudan a las personas a elegir qué, cómo, cuándo y dónde compartir."
|
||||
},
|
||||
"scaling": {
|
||||
"title": "Escalabilidad",
|
||||
"description": "Nuestra infraestructura ayuda a las comunidades a crecer haciendo que Ethereum sea más eficiente y accesible. Desde la abstracción de cuentas y la reducción de costos de transacción, hasta rollups y zkEVM, estamos construyendo hacia un futuro interoperable."
|
||||
},
|
||||
"explorations": {
|
||||
"title": "Exploraciones",
|
||||
"description": "Estamos mapeando el emergente ecosistema de conocimiento cero a través de la experimentación colectiva. Colaboramos, compartimos lo que aprendemos y damos la bienvenida a contribuciones de todo el mundo."
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
{
|
||||
"title": "Notre équipe",
|
||||
"description": "L'équipe PSE est un laboratoire en recherche et développement multidisciplinaire soutenu par la Fondation Ethereum. Nous nous appliquons à créer une infrastructure open source, ainsi que des outils et ressources éducatives pour aider à l'implémentation de la cryptographie dans des applications grand public.",
|
||||
"our-principles-title": "Nos principes",
|
||||
"principles": [
|
||||
{
|
||||
"title": "01. De la cryptographie pour tous",
|
||||
"description": [
|
||||
"La cryptographie est partout. À chaque fois que vous vous connectez à un site sécurisé, que vous vous authentifiez avec un mot de passe ou que vous déverrouillez votre téléphone, il y a de la cryptographie dans les coulisses.",
|
||||
"Grâce à la cryptographie programmable, nous pouvons certifier et vérifier des allégations sans révéler aucune information secrète qu'elles contiennent. Cette technologie, qui comprend les preuves à divulgation nulle de connaissance (zk-SNARKs), le calcul multipartite sécurisé (MPC) et le chiffrement homomorphique, peut être utilisée dans un grand nombre de scénarios, comme la gestion d'identités, la prévention des collisions, et les communications anonymes.",
|
||||
"Nous construisons des bibliothèques d'outils de développement, publions des papiers de recherche et implémentons des prototypes en open source et gratuit d'utilisation pour tous. Nous espérons que ceux-ci aideront et inspireront toutes et tous à innover dans leurs projets et leurs communautés."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "02. La confidentialité par défaut",
|
||||
"description": [
|
||||
"Nous considérons la confidentialité, également appelée protection de la vie privée, comme un droit fondamental. Nous souhaitons contribuer à bâtir un Internet intègre, exempt de vols de données invasifs ; un Internet contrôlable, où chacun peut décider qui a accès à ses données personnelles ; un Internet où les autorisations sont données à des fins précises, révocables, consenties et sans contraintes.",
|
||||
"Nous développons des outils pour permettre à chacun de s'authentifier de manière autonome et en toute sécurité, d'effectuer des transactions en toute confidentialité sur les blockchains et de respecter et préserver la confidentialité des utilisateurs."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "03. Un impact à grande échelle",
|
||||
"description": [
|
||||
"Les preuves à divulgation nulle de connaissance permettent la vérification rapide et écononomique marché de programmes, et peuvent ainsi aider les systèmes décentralisés comme Ethereum. Nous recherchons, concevons et partageons des solutions de mise à l'échelle qui peuvent être utilisées par tous pour contribuer à une infrastructure numérique public plus pratique et robuste.",
|
||||
"Nous développons aussi notre communauté en supportant la nouvelle génération. Nous organisons des stages estivaux pour les étudiants et régulièrement des conférences en présentiel auxquelles tout le monde peut se joindre et apprendre."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "04. Les biens publics open source",
|
||||
"description": [
|
||||
"Notre équipe cultive une culture diverse et multidisciplinaire dans le but d'explorer ces nouveaux écosystèmes zero-knowlegdge. L'équipe PSE est composée de développeurs, ingénieurs, et mathématiciens travaillant en collaboration avec des créateurs et organisateurs de communautés pour dénicher le potentiel de la cryptographie programmable.",
|
||||
"Nous expérimentons au vu et su de tous et accueillons toutes contributions, intégrations, forks et retours sur tous nos projets."
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
{
|
||||
"siteTitle": "Privacy & Scaling Explorations",
|
||||
"siteDescription": "Améliorons Ethereum grâce à la recherche cryptographique et l'expérimentation collective.",
|
||||
"menu": {
|
||||
"home": "Page d'accueil",
|
||||
"projectLibrary": "Nos projets",
|
||||
"about": "À propos",
|
||||
"resources": "Ressources",
|
||||
"jobs": "Jobs",
|
||||
"languages": "Langages {{locale}}",
|
||||
"blog": "Blog",
|
||||
"activity": "Activité",
|
||||
"report": "Rapports techniques",
|
||||
"firstGoodIssue": "Premièrs Bons Tickets"
|
||||
},
|
||||
"footer": {
|
||||
"description": "Privacy + Scaling Explorations est une équipe multidisciplinaraire soutenue par la Fondation Ethereum.",
|
||||
"privacyPolicy": "Politique de Confidentialité",
|
||||
"termsOfUse": "Conditions d'utilisations"
|
||||
},
|
||||
"filterOptions": {
|
||||
"random": "Aléatoire",
|
||||
"asc": "Titre: A-Z",
|
||||
"desc": "Titre: Z-A",
|
||||
"relevance": "Pertinence"
|
||||
},
|
||||
"filterLabels": {
|
||||
"keywords": "Mots-clés",
|
||||
"builtWith": "Construits avec",
|
||||
"themes": "Thèmes sélectionnés",
|
||||
"projectStatus": "Status du projet"
|
||||
},
|
||||
"error": {
|
||||
"404": {
|
||||
"title": "404: Page non trouvée.",
|
||||
"description": "La page que vous cherchez a pû être supprimée, déplacée ou renommée, ou encore est temporairement indisponible."
|
||||
}
|
||||
},
|
||||
"tags": {
|
||||
"build": "Construire",
|
||||
"play": "Jouer",
|
||||
"research": "Recherche",
|
||||
"grantee": "Bourse",
|
||||
"collaborate": "Collaboration",
|
||||
"fullyPSE": "Fully PSE"
|
||||
},
|
||||
"status": {
|
||||
"archived": "Archivé",
|
||||
"active": "Actif"
|
||||
},
|
||||
"sortBy": "Trier par: {{option}}",
|
||||
"tryItOut": "Essayez!",
|
||||
"learnMore": "En apprendre plus",
|
||||
"buildWithThisTool": "Construire avec cet outils",
|
||||
"deepDiveResearch": "Appronfondir dans la recherche",
|
||||
"searchProjectPlaceholder": "Rechercher avec un nom de projet ou mot-clé",
|
||||
"close": "Fermé",
|
||||
"lastUpdatedAt": "Mis-à-jour en dernier {{date}}",
|
||||
"projectLibrary": "Nos projets",
|
||||
"backToProjectLibrary": "Retour à nos projets",
|
||||
"discoverMore": "En découvrir plus",
|
||||
"goToHome": "Retour à la page d'accueil",
|
||||
"noResults": "Aucun résultat trouvé.",
|
||||
"noResultsDescription": "Désolé, nous n'avons pas pu accéder à votre demande. Veuillez réessayer avec d'autres mots-clés.",
|
||||
"exploreProjectLibrary": "Explorez nos projets",
|
||||
"clearAll": "Tout effacer",
|
||||
"showProjects": "Montrer les projets",
|
||||
"filters": "Filtres",
|
||||
"whatDoYouWantDoToday": "Que voulez-vous faire aujourd'hui?",
|
||||
"showingProjects": "{{count}} projets listés",
|
||||
"showingProjectsWith": "{{count}} projets listés avec:"
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"headerTitle": "Privacy + Scaling Explorations",
|
||||
"headerSubtitle": "Nous construisons des ressources gratuites pour que tous puissent agrandir le monde de la cryptographie programmable.",
|
||||
"whoWeAre": "Qui sommes nous",
|
||||
"whoWeAreDescription": "PSE est un laboratoire de recherche qui construits des outils gratuits pour agrandir le monde de la cryptoraphie.",
|
||||
"howToPlugIn": "Comment nous rejoindre",
|
||||
"howToPlugInDescription": "Essayez nos apps, construisez avec nos outils, contribuez sur nos projets, ou jetez un coup d'oeil à nos offres d'emplois. Nous accueillons toute contributions du monde entier!",
|
||||
"joinOurDiscord": "Rejoignez notre communauté"
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
{
|
||||
"learnAndShare": "Learn & Share",
|
||||
"event": "Évènement",
|
||||
"blogPost": "Blogpost",
|
||||
"watch": "Regarder",
|
||||
"read": "Lire",
|
||||
"attend": "Assister",
|
||||
"news": [
|
||||
{
|
||||
"type": "post",
|
||||
"title": "Learnings from the KZG Ceremony",
|
||||
"action": {
|
||||
"label": "Lire",
|
||||
"url": "https://mirror.xyz/privacy-scaling-explorations.eth/naTdx-u7kyirczTLSAnWwH6ZdedfTQu1yCWQj1m_n-E"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "apprendre",
|
||||
"title": "Public events hosted by PSE members to learn about each other's projects, share ideas, and get feedback.",
|
||||
"action": {
|
||||
"label": "Voir le calendrier complet",
|
||||
"url": "https://pse-team.notion.site/50dcf22c5191485e93406a902ae9e93b?v=453023f8227646dd949abc34a7a4a138&pvs=4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "apprendre",
|
||||
"title": "Folding Circom Circuit: A ZKML Case Study by Dr. Cathie So",
|
||||
"action": {
|
||||
"label": "Regarder",
|
||||
"url": "https://www.youtube.com/live/jb6HDEtY4CI"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"subtitle": "PSE abrite une large gamme de projets, allant de la recherche en cryptographie aux outils de développement, protocoles and prototypes d'applications."
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"title": "Ressources",
|
||||
"subtitle": "Cette liste à été compilée par notre communauté. Soumettez un ticket sur notre page Github pour rajouter des ressources à cette liste.",
|
||||
"onThisPage": "Sur cette page",
|
||||
"editResources": "Éditer les ressources",
|
||||
"addSource": "Ajouter une source",
|
||||
"addResourceQuestion": "Vous n'avez pas trouvé ce que vous recherchiez?",
|
||||
"nav": {
|
||||
"getInvolved": "Participer",
|
||||
"learn": "Apprendre",
|
||||
"build": "Construire",
|
||||
"design": "Concevoir"
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"whatWeDo": "Que faisons-nous",
|
||||
"whatWeDoDescription": "PSE est une équipe multidisciplinaire qui créée des outils open source de protection de la vie privée et des outils de mise à l'échelle pour la prochaine génération d'Internet.",
|
||||
"privacy": {
|
||||
"title": "Confidentialité",
|
||||
"description": "Nous croyons que la confidentialité est un bien commun et devrait être accessible à tous. C'est pourquoi nous créons des outils open source qui aident chacun à choisir quoi partagez où, quand et comment."
|
||||
},
|
||||
"scaling": {
|
||||
"title": "Mise à l'échelle",
|
||||
"description": "Notre infrastructure aide les communautés à s'agrandir en rendant Ethereum plus efficace et accessible. Depuis l'account abstraction et la réduction des coûts de transactions, aux rollups et zkEVM, nous construisons un futur interopérable."
|
||||
},
|
||||
"explorations": {
|
||||
"title": "Explorations",
|
||||
"description": "Nous cartographions les ecosystèmes zero-knowledge émergents grâce à l'expérimentation collective. Nous collaborons, partageons ce que nous apprenons et acceptons toute contribution du monde entier."
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
{
|
||||
"title": "Il nostro team",
|
||||
"description": "PSE è un team di ricerca e sviluppo multidisciplinare supportato dalla Fondazione Ethereum. Creiamo infrastrutture, strumenti e risorse formative open source per integrare la crittografia in applicazioni del mondo reale.",
|
||||
"our-principles-title": "I nostri principi",
|
||||
"principles": [
|
||||
{
|
||||
"title": "01. Crittografia per le persone",
|
||||
"description": [
|
||||
"La crittografia è ovunque: ogni volta che ti connetti a un sito sicuro, accedi con una password o sblocchi il telefono, vedi la crittografia in azione.",
|
||||
"Con la crittografia “programmabile” (come le prove di conoscenza zero, il calcolo multi-party o la crittografia omomorfica) possiamo fare affermazioni verificabili sulle informazioni segrete senza rivelare le informazioni stesse. Ciò può essere applicato alla gestione dell'identità, alla resistenza alla collusione, alla comunicazione anonima e molto altro ancora.",
|
||||
"Stiamo creando una libreria di strumenti di sviluppo, documenti di ricerca e prototipi open source e gratuiti per tutti. Ci auguriamo che le nostre risorse ispirino le persone a innovare le tecnologie di cui le loro comunità hanno bisogno."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "02. Privacy di default",
|
||||
"description": [
|
||||
"Crediamo che la privacy sia un diritto fondamentale. Vogliamo contribuire alla costruzione di un Internet che si allontani dalle pratiche invasive relative ai dati e offra invece alle persone scelte reali su chi ha accesso alle loro informazioni personali. L'autorizzazione dovrebbe essere specifica per lo scopo, revocabile, informata e non coercitiva.",
|
||||
"Realizziamo strumenti che aiutano le persone ad autenticarsi in modo sicuro, a effettuare transazioni riservate sulla blockchain e a rispettare e preservare la privacy degli utenti."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "03. Scalabilità per le comunità",
|
||||
"description": [
|
||||
"Le prove di conoscenza zero possono verificare i calcoli in modo rapido ed economico, aiutando i sistemi decentralizzati come Ethereum a diventare più efficienti. Ricerchiamo, progettiamo e condividiamo soluzioni scalabili che chiunque può utilizzare per contribuire a un'infrastruttura pubblica digitale più forte e più pratica.",
|
||||
"Inoltre, facciamo crescere la nostra comunità supportando la prossima generazione di costruttori. Ospitiamo programmi estivi coinvolgenti per studenti e lezioni regolari dal vivo a cui chiunque nel mondo può partecipare e da cui imparare."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "04. Open-source un bene pubblico",
|
||||
"description": [
|
||||
"Stiamo coltivando un team diversificato e multidisciplinare per esplorare l'ecosistema emergente della conoscenza zero. PSE è composta da programmatori, ingegneri e matematici che lavorano a fianco di creativi e organizzatori di comunità per scoprire in modo collaborativo il potenziale della crittografia programmabile.",
|
||||
"Sperimentiamo apertamente e accogliamo con favore contributi, integrazioni, fork o feedback su tutti i nostri progetti."
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,67 +0,0 @@
|
||||
{
|
||||
"menu": {
|
||||
"home": "Home",
|
||||
"projectLibrary": "Libreria progetti",
|
||||
"about": "Chi siamo",
|
||||
"resources": "Risorse",
|
||||
"jobs": "Lavora con noi",
|
||||
"languages": "Lingue {{locale}}"
|
||||
},
|
||||
"footer": {
|
||||
"description": "Privacy + Scaling Explorations è un team multidisciplinare supportato da Ethereum Foundation.",
|
||||
"privacyPolicy": "Privacy Policy",
|
||||
"termsOfUse": "Termini di utilizzo"
|
||||
},
|
||||
"filterOptions": {
|
||||
"random": "Casuale",
|
||||
"asc": "Titolo: A-Z",
|
||||
"desc": "Titolo: Z-A",
|
||||
"relevance": "Rilevanza"
|
||||
},
|
||||
"filterLabels": {
|
||||
"keywords": "Parole chiave",
|
||||
"builtWith": "Sviluppato con",
|
||||
"themes": "Temi selezionati",
|
||||
"projectStatus": "Stato progetto"
|
||||
},
|
||||
"error": {
|
||||
"404": {
|
||||
"title": "404: Pagina non trovata.",
|
||||
"description": "La pagina che stai cercando potrebbe essere stata rimossa o è temporaneamente non disponibile."
|
||||
}
|
||||
},
|
||||
"tags": {
|
||||
"build": "Sviluppa",
|
||||
"play": "Sperimenta",
|
||||
"research": "Ricerca",
|
||||
"grantee": "Grant",
|
||||
"collaborate": "Collaborazione",
|
||||
"fullyPSE": "Interamente PSE"
|
||||
},
|
||||
"status": {
|
||||
"archived": "Archiviato",
|
||||
"active": "Attivo",
|
||||
"inactive": "Inattivo"
|
||||
},
|
||||
"sortBy": "Ordina per: {{option}}",
|
||||
"tryItOut": "Prova!",
|
||||
"learnMore": "Scopri di piú",
|
||||
"buildWithThisTool": "Sviluppato con questi strumenti",
|
||||
"deepDiveResearch": "Immergiti più a fondo nella ricerca",
|
||||
"searchProjectPlaceholder": "Ricerca progetto per parola chiave",
|
||||
"close": "Chiudi",
|
||||
"lastUpdatedAt": "Ultimo aggiornamento {{date}}",
|
||||
"projectLibrary": "Libreria progetti",
|
||||
"backToProjectLibrary": "Ritorna alla libreria progetti",
|
||||
"discoverMore": "Scopri di piú",
|
||||
"goToHome": "Va alla pagina iniziale",
|
||||
"noResults": "Nessun risultato trovato.",
|
||||
"noResultsDescription": "Siamo spiacenti, non siamo riusciti a trovare alcun risultato per la tua ricerca. Riprova con parole chiave diverse.",
|
||||
"exploreProjectLibrary": "Esplora la libreria dei progetti",
|
||||
"clearAll": "Rimuovi tutti",
|
||||
"showProjects": "Mostra progetti",
|
||||
"filters": "Filtri",
|
||||
"whatDoYouWantDoToday": "Cosa vuoi fare oggi?",
|
||||
"showingProjects": "Mostrando {{count}} progetti",
|
||||
"showingProjectsWith": "Mostrando {{count}} progetti con:"
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"headerTitle": "Privacy + Scaling Explorations",
|
||||
"headerSubtitle": "Creare risorse gratuite per chi espande il mondo della crittografia programmabile.",
|
||||
"whoWeAre": "Chi siamo",
|
||||
"whoWeAreDescription": "PSE è un laboratorio di ricerca che crea strumenti gratuiti che espandono il mondo della crittografia.",
|
||||
"howToPlugIn": "Come contribuire",
|
||||
"howToPlugInDescription": "Prova le nostre app, crea con i nostri strumenti, contribuisci ai progetti o dai un'occhiata alle nostre offerte di lavoro. Diamo il benvenuto a contributi da tutto il mondo!",
|
||||
"joinOurDiscord": "Vieni a trovarci su Discord"
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
{
|
||||
"learnAndShare": "Impara & condividi",
|
||||
"event": "Eventi",
|
||||
"blogPost": "Blog",
|
||||
"watch": "Guarda",
|
||||
"read": "Leggi",
|
||||
"attend": "Partecipa",
|
||||
"recentUpdates": "Aggiornamenti recenti",
|
||||
"seeAllUpdates": "Ultimi aggiornamenti",
|
||||
"repostOnSocial": "Condividi su {{socialName}}"
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"subtitle": "PSE ospita numerosi progetti, dalla ricerca sulla crittografia agli strumenti di sviluppo, ai protocolli e alle applicazioni proof-of-concept."
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"title": "Risorse",
|
||||
"subtitle": "Questo elenco è stato compilato dalla nostra comunità. Invia un problema sulla nostra pagina Github per aggiungere una risorsa a questo elenco.",
|
||||
"onThisPage": "In questa pagina",
|
||||
"editResources": "Modifica risorse",
|
||||
"addSource": "Aggiungi risorse",
|
||||
"addResourceQuestion": "Non hai trovato quello che cercavi?",
|
||||
"nav": {
|
||||
"getInvolved": "Coinvolgiti",
|
||||
"learn": "Impara",
|
||||
"build": "Sviluppa",
|
||||
"design": "Design"
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
"whatWeDo": "Cosa facciamo",
|
||||
"privacy": {
|
||||
"title": "Privacy",
|
||||
"description": "Crediamo che la privacy sia un bene sociale che dovrebbe essere accessibile a tutti. Ecco perché stiamo creando strumenti open source che aiutano le persone a scegliere cosa, come, quando e dove condividere."
|
||||
},
|
||||
"scaling": {
|
||||
"title": "Scaling",
|
||||
"description": "La nostra infrastruttura aiuta le comunità a crescere rendendo Ethereum più efficiente e accessibile. Dall'astrazione degli account e dalla riduzione dei costi di transazione, ai rollup e zkEVM, stiamo costruendo verso un futuro interoperabile."
|
||||
},
|
||||
"explorations": {
|
||||
"title": "Explorations",
|
||||
"description": "Stiamo mappando l'ecosistema emergente della conoscenza zero attraverso la sperimentazione collettiva. Collaboriamo, condividiamo ciò che impariamo e accogliamo con favore contributi da tutto il mondo."
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
"title": "チームについて",
|
||||
"description": "PSEはイーサリアムファウンデーションが支援する研究開発ラボで、暗号プリミティブのユースケースを試すことに専念しています。私たちは、オープンソースのインフラやツールの開発、ワークショップやサマープログラムの開催、そして暗号学を現実のものにしようとする人々とのコラボレーションなどを行います。",
|
||||
"our-principles-title": "私たちの理念",
|
||||
"banner": {
|
||||
"title": "私たちとつながる",
|
||||
"subtitle": "Discordに参加して、もっと研究について学び、コミュニティとつながり、そして求人や助成金の情報を入手しましょう!"
|
||||
},
|
||||
"principles": [
|
||||
{
|
||||
"title": "01. 人のための暗号技術",
|
||||
"description": [
|
||||
"暗号技術はあらゆる場所で活用されています。安全なサイトに接続するとき、パスワードでログインするとき、携帯のロックを解除するとき、そのたびに暗号技術が利用されているのが確認できます。ゼロ知識証明、マルチパーティ計算、準同型暗号などの「プログラム可能な」暗号技術を活用すると、秘密情報自体を公開せずに、その情報について検証可能な主張を行うことができます。",
|
||||
" これは、ID管理、共謀耐性、匿名通信などに応用できます。私たちは、オープンソースで誰もが無料で利用できる開発ツール、リサーチペーパー、プロトタイプのライブラリを開発しています。これらのリソースがさらなるコミュニティによる技術革新につながることを願っています。"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "02. プライバシーを優先する",
|
||||
"description": [
|
||||
"私たちは、プライバシーは基本的人権であると考えています。プライバシーの侵害につながるようなデータに関する慣習から脱却し、代わりに、ユーザーの個人情報へのアクセス権を実質的に制御する選択肢を提供できるようなインターネットの構築に貢献したいと考えています。",
|
||||
" パーミッションは、特定の目的に対して定められ、取り消し可能で、ユーザーに通知され、そして強制ではないものでなければなりません。私たちは、人々が安全に認証を行い、ブロックチェーン上で機密性の高いトランザクションを実行し、ユーザーのプライバシーを尊重し保護するためのツールを作成しています。"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "03. コミュニティのためのスケーリング",
|
||||
"description": [
|
||||
"ゼロ知識証明は計算を迅速かつ安価に検証することができ、イーサリアムのような分散型システムの効率化に貢献します。私たちは、誰もが使用してより強固で実用的なデジタル公共インフラの構築に貢献できるようなスケーリングソリューションを研究、設計、共有しています。",
|
||||
" また、次世代の構築者を支援することでコミュニティを拡大させています。学生向けの没入型プログラムや、暗号を使用した構築に興味のあるすべての人を対象とした講義シリーズを開催しています。"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "04. コレクティブな探求",
|
||||
"description": [
|
||||
"私たちは、出現しつつあるゼロ知識エコシステムを探るために、多様性があり学際的なチームを育成しています。PSEは、プログラマー、エンジニア、数学者がクリエイターやコミュニティオーガナイザーと協力して、プログラム可能な暗号の可能性を共同で発見するチームです。",
|
||||
"私たちはオープンに実験を行い、すべてのプロジェクトへの貢献、統合、フォーク、フィードバックを歓迎します。"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
{
|
||||
"siteTitle": "Privacy & Scaling Explorations",
|
||||
"siteDescription": "暗号学研究とコレクティブな実験を通じてイーサリアムをよりよくする",
|
||||
"menu": {
|
||||
"home": "ホーム",
|
||||
"projectLibrary": "プロジェクトライブラリ",
|
||||
"about": "このサイトについて",
|
||||
"resources": "リソース",
|
||||
"jobs": "求人",
|
||||
"languages": "言語 {{locale}}",
|
||||
"blog": "ブログ",
|
||||
"activity": "アクティビティ",
|
||||
"report": "レポート",
|
||||
"firstGoodIssue": "Good First Issues",
|
||||
"programs": "プログラム",
|
||||
"openIssues": "Open Issues"
|
||||
},
|
||||
"footer": {
|
||||
"description": "PSEは、イーサリアムファウンデーションによって支援される多分野チームです",
|
||||
"privacyPolicy": "プライバシーポリシー",
|
||||
"termsOfUse": "利用規約"
|
||||
},
|
||||
"filterOptions": {
|
||||
"random": "ランダム",
|
||||
"asc": "タイトル:昇順",
|
||||
"desc": "タイトル:降順",
|
||||
"relevance": "関連性"
|
||||
},
|
||||
"filterLabels": {
|
||||
"keywords": "キーワード",
|
||||
"builtWith": "開発ツール",
|
||||
"themes": "選択されたテーマ",
|
||||
"projectStatus": "プロジェクトステータス",
|
||||
"fundingSource": "資金源"
|
||||
},
|
||||
"error": {
|
||||
"404": {
|
||||
"title": "404: ページが見つかりません",
|
||||
"description": "探しているページは削除されたか、名前が変更されたか、一時的に利用できない可能性があります"
|
||||
}
|
||||
},
|
||||
"tags": {
|
||||
"build": "開発",
|
||||
"play": "使ってみる",
|
||||
"research": "研究",
|
||||
"grantee": "グランティー",
|
||||
"collaborate": "コラボレーション",
|
||||
"fullyPSE": "PSE"
|
||||
},
|
||||
"status": {
|
||||
"archived": "アーカイブ",
|
||||
"active": "アクティブ",
|
||||
"inactive": "非アクティブ"
|
||||
},
|
||||
"sortBy": "ソート: {{option}}",
|
||||
"tryItOut": "試してみる",
|
||||
"learnMore": "詳細はこちら",
|
||||
"learnMoreDiscord": "プログラムやその他の教育機会について詳しく知るために、Discordに参加してください",
|
||||
"buildWithThisTool": "このツールを使って開発する",
|
||||
"deepDiveResearch": "研究をさらに詳しく調べる",
|
||||
"searchProjectPlaceholder": "プロジェクトタイトルまたはキーワードを検索",
|
||||
"close": "閉じる",
|
||||
"lastUpdatedAt": "最終更新日 {{date}}",
|
||||
"projectLibrary": "プロジェクトライブラリ",
|
||||
"backToProjectLibrary": "プロジェクトライブラリに戻る",
|
||||
"discoverMore": "もっと調べる",
|
||||
"goToHome": "ホームページ",
|
||||
"noResults": "検索結果が見つかりません",
|
||||
"noResultsDescription": "申し訳ありませんが、検索に一致する結果が見つかりませんでした。別のキーワードで再度お試しください",
|
||||
"exploreProjectLibrary": "プロジェクトライブラリから探す",
|
||||
"clearAll": "すべてクリア",
|
||||
"showingProjectsWith": "{{count}} 件のプロジェクトを表示しています",
|
||||
"connectWithUs": "私たちとつながる",
|
||||
"connectWithUsDescription": "世界中からの貢献を歓迎します! Discordに参加して、アプリを試したり、ツールを使って開発したり、プロジェクトに貢献したり、求人情報や助成金の機会をチェックしたりしましょう",
|
||||
"ourYearProgram": "{{year}} 年度プログラム",
|
||||
"onThisPage": "このページで",
|
||||
"howToApply": "応募方法",
|
||||
"chooseProgram": "プログラムを選択してください",
|
||||
"connectWithUsOnPlatform": "{{platform}}で私たちとつながる",
|
||||
"addResource": "リソースを追加する",
|
||||
"notCurrentlyActive": "現在アクティブではありません",
|
||||
"joinOurDiscord": "Discordに参加する"
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"headerTitle": "Privacy + Scaling Explorations",
|
||||
"headerSubtitle": "プログラマブルな暗号技術の世界を広げるための無料リソースを開発する",
|
||||
"whoWeAre": "私たちについて",
|
||||
"whoWeAreDescription": "PSEは、暗号技術の世界を広げるための無料ツールを開発する研究ラボです",
|
||||
"howToPlugIn": "活用の方法",
|
||||
"howToPlugInDescription": "アプリを試したり、ツールを使って構築したり、プロジェクトに貢献したり、求人情報をチェックしたりしましょう。世界中からの貢献を歓迎します! ",
|
||||
"joinOurDiscord": "コミュニティに参加する",
|
||||
"recentUpdates": "最近のアップデート",
|
||||
"connectWithUs": {
|
||||
"title": "プログラムに参加する",
|
||||
"description": "プログラマブルな暗号技術の世界を探求し、オープンソースプロジェクトへの貢献方法を学びたいですか? 無料プログラムに参加して、あなたの旅を始めましょう! "
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
{
|
||||
"learnAndShare": "Learn and Share",
|
||||
"event": "イベント",
|
||||
"blogPost": "ブログ",
|
||||
"watch": "見る",
|
||||
"read": "読む",
|
||||
"attend": "参加する",
|
||||
"recentUpdates": "最近のアップデート",
|
||||
"seeAllUpdates": "すべてのアップデートを見る",
|
||||
"repostOnSocial": "{{socialName}}でリポストする"
|
||||
}
|
||||
@@ -1,91 +0,0 @@
|
||||
{
|
||||
"title": "プログラマブルな暗号技術を学ぼう!",
|
||||
"description": "PSEは、ゼロ知識証明、完全準同型暗号、マルチパーティ計算、そして最新のプログラマブルな暗号技術について深く学ぶための無料の教育プログラムを提供します。基礎を学びたい方にも、オープンソースへの貢献を始めたい方にも、学習に役立つリソースを用意しています!",
|
||||
"common": {
|
||||
"faq": "よくある質問",
|
||||
"curriculum": "カリキュラム",
|
||||
"howToApply": "応募方法",
|
||||
"applyNow": "今すぐ応募する",
|
||||
"learnMoreOnGithub": "GitHubで詳細を見る",
|
||||
"week": "第{{week}}週"
|
||||
},
|
||||
"curriculum": [
|
||||
{
|
||||
"title": "必須条件",
|
||||
"items": [
|
||||
"コースの概要とリソース",
|
||||
"Git、GitHub、およびPRワークフローの基本",
|
||||
"ゼロ知識証明 (ZKPs) と数論の入門"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "暗号学の基礎",
|
||||
"items": [
|
||||
"Circom入門",
|
||||
"暗号化とハッシュ関数の基礎",
|
||||
"デジタル署名と楕円曲線暗号"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "より高度な暗号技術とZKP",
|
||||
"items": [
|
||||
"Circom 集中講座 + 実践",
|
||||
"KZGコミットメントと zkSNARKs",
|
||||
"トラステッドセットアップと Groth16 の概要"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "ハッカソン",
|
||||
"items": [
|
||||
"いざ実践へ",
|
||||
"さぁ、新しいスキルを使って何かを開発する1週間です!"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "PLONK ウィーク",
|
||||
"items": [
|
||||
"Rustを学び、Rustlingsを完了する",
|
||||
"PLONKの深掘り",
|
||||
"PLONKに関するプレゼンテーションとブログ記事の作成"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "技術とアプリケーション",
|
||||
"items": [
|
||||
"Halo2の入門と実践",
|
||||
"FHEとMPCの学習",
|
||||
"Semaphore、Bandada、TLSNotary、ZKEmail を調べる"
|
||||
]
|
||||
}
|
||||
],
|
||||
"coreProgram": {
|
||||
"title": "コアプログラム",
|
||||
"description": [
|
||||
"PSEのコアプログラムは、プログラマブルな暗号技術の世界を探求したい学生向けの8週間の入門コースです。このプログラムは、オンラインのコースとアルゼンチン (ブエノスアイレス)、コスタリカ (サンホセ)、エクアドル (クエンカ)、日本 (東京)、韓国 (ソウル)、台湾 (台北) で開催される対面のセッションを組み合わせたハイブリッド形式で開催されます。",
|
||||
"プログラムの終了までに、ゼロ知識証明 (ZKP)、完全準同型暗号 (FHE)、およびマルチパーティ計算 (MPC) に関する包括的な知識を習得できます。また、GitHubのポートフォリオを強化し、さらなる研究や貢献のための助成金を受け取る可能性もあります。 "
|
||||
]
|
||||
},
|
||||
"accelerationProgram": {
|
||||
"title": "アクセラレータプログラム",
|
||||
"description": [
|
||||
"アクセラレーター・プログラムは、ZKP、FHE、MPC、および関連技術の探求を深めるためのエントリー・レベル・プログラム(コア・プログラム、ZKサマー、ZKプレイグラウンドなど)の修了生を、助成金やメンターシップを通じて支援するものです。このプログラムは、ラウンド・ベースの応募システムで運営され、各ラウンドの特定のオープン・タスクに焦点を当てます。"
|
||||
]
|
||||
},
|
||||
"howToApply": {
|
||||
"description": "先着順で審査を行いますので、各ラウンドの開始と同時に応募されることをお勧めします!同じ案件について複数の応募があった場合、ケース・バイ・ケースで複数の応募への助成を検討することがあります。",
|
||||
"openTasks": {
|
||||
"title": "オープンタスクに応募する:",
|
||||
"description": [
|
||||
"探す <a href='https://github.com/privacy-scaling-explorations/acceleration-program/issues?q=is%3Aopen+is%3Aissue+-label%3A%22Application+Proposal%22+-label%3A%22WIP%22+' target='_blank'>Open Task RFP List</a>",
|
||||
"お申し込みはこちらから <a href='https://github.com/privacy-scaling-explorations/acceleration-program/issues/new?assignees=&labels=&projects=&template=proposal-for-applicant.md&title=' target='_blank'>template</a>"
|
||||
]
|
||||
},
|
||||
"submitIdea": {
|
||||
"title": "自分のアイデアを提出するには:",
|
||||
"description": [
|
||||
"アイデアを投稿する <a href='https://github.com/privacy-scaling-explorations/acceleration-program/issues/new?assignees=&labels=&projects=&template=propose-your-open-task.md&title=' target='_blank'>template</a>",
|
||||
"こちらを参照 <a href='https://github.com/privacy-scaling-explorations/acceleration-program/blob/main/Doc/Idea%20Pool.md' target='_blank'>idea pool</a> and find one and submit here"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"title": "ライブラリーを探す",
|
||||
"subtitle": "PSEは、暗号研究、開発者ツール、プロトコル、PoCアプリケーションなど、多くのプロジェクトを扱っている。"
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"title": "リソース",
|
||||
"subtitle": "このリストはコミュニティによって編集されました。 このリストにリソースを追加するには、GitHubページでイシューを作成してください。",
|
||||
"onThisPage": "このページで",
|
||||
"editResources": "リソースを編集",
|
||||
"addSource": "ソースを追加",
|
||||
"addResourceQuestion": "探しているものが見つかりませんか?",
|
||||
"nav": {
|
||||
"getInvolved": "参加する",
|
||||
"learn": "学ぶ",
|
||||
"build": "開発",
|
||||
"design": "デザイン"
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"whatWeDo": "活動内容",
|
||||
"whatWeDoDescription": "PSEは、次世代インターネットのためのオープンソースのプライバシー保護とスケーリングツールを開発する、多分野にわたるチームです。",
|
||||
"privacy": {
|
||||
"title": "プライバシー",
|
||||
"description": "私たちは、プライバシーは社会にとって重要であり、誰もが利用できるべきだと考えています。そのため、人々が何を、どのように、いつ、どこで共有するかを選択できるオープンソースツールを作成しています。"
|
||||
},
|
||||
"scaling": {
|
||||
"title": "スケーリング",
|
||||
"description": "私たちのインフラは、イーサリアムをより効率的でアクセスしやすくすることで、コミュニティの成長を支援します。アカウント抽象化、トランザクションコストの削減、ロールアップ、zkEVM など、相互運用可能な未来に向けて開発しています。"
|
||||
},
|
||||
"explorations": {
|
||||
"title": "探究",
|
||||
"description": "私たちは、コレクティブな実験を通じて、台頭しつつあるゼロ知識エコシステムのマッピングを行っています。私たちは協力し、学んだことを共有し、世界中からの貢献を歓迎します。"
|
||||
}
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
{
|
||||
"title": "우리 팀에 대하여",
|
||||
"description": "PSE는 암호화 기초 구성요소에 대한 사용 사례를 시험하는데 전념하는 이더리움 재단 지원 연구 및 개발 연구소입니다. 우리는 오픈 소스 인프라와 도구를 구축하고, 워크숍과 여름 프로그램을 주최하며, 암호화에 생명을 불어넣는 사람들과 협력합니다.",
|
||||
"our-principles-title": "우리의 원칙",
|
||||
"principles": [
|
||||
{
|
||||
"title": "01. 사람들을 위한 암호학",
|
||||
"description": [
|
||||
"암호화는 어디에나 있습니다. 보안 사이트에 연결하거나 비밀번호로 로그인하거나 휴대폰을 잠금 해제할 때마다 암호화가 작동하는 모습을 볼 수 있습니다. 영지식 증명, 다자간 계산, 동형 암호화와 같은 “프로그래밍 가능한” 암호화를 사용하면 정보 자체를 공개하지 않고도 비밀 정보에 대해 검증 가능한 요청을 수행할 수 있습니다. 이는 신원 관리, 충돌 저항, 익명 커뮤니케이션 등에 적용될 수 있습니다. 우리는 누구나 무료로 사용할 수 있는 오픈 소스 개발 도구, 연구 논문, 프로토타입 라이브러리를 구축하고 있습니다. 우리의 자원들이 사람들이 지역 사회에 필요한 기술을 혁신하도록 영감을 주기를 바랍니다."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "02. 개인정보 우선화",
|
||||
"description": [
|
||||
"우리는 개인정보 보호가 기본적인 권리라고 믿습니다. 우리는 데이터 침해적인 관행에서 벗어나 자신의 개인 정보에 접근할 수 있는 사람이 누구인지에 대한 실질적인 선택권을 사람들에게 제공하는 인터넷을 구축하는데 기여하고자 합니다. 권한은 목적이 구체적이고, 취소 가능하고, 정보에 입각하고, 강제되지 않아야 합니다. 우리는 사람들이 자신을 안전하게 인증하고, 블록체인에서 기밀 거래를 하고, 사용자 개인 정보를 존중하고 보존하는 데 도움이 되는 도구를 만듭니다."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "03. 커뮤니티를 위한 확장",
|
||||
"description": [
|
||||
"영지식 증명은 빠르고 저렴하게 계산을 검증할 수 있어 이더리움과 같은 분산형 시스템이 더욱 효율적이도록 돕습니다. 우리는 더욱 강력하고 실용적인 디지털 공공 인프라에 기여하기 위해 누구나 사용할 수 있는 확장 솔루션을 연구, 설계 및 공유합니다. 우리는 또한 다음 세대의 빌더들을 지원함으로써 커뮤니티를 성장시킵니다. 우리는 학생들을 위한 집중 프로그램과 암호학을 사용하여 무엇인가를 구축하는 데 관심이 있는 모든 사람에게 열려 있는 강의 시리즈를 주최합니다."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "04. 집단 탐사",
|
||||
"description": [
|
||||
"우리는 새롭게 떠오르는 영지식 생태계를 탐구하기 위해 다양한 다분야의 팀을 육성하고 있습니다. PSE는 프로그래밍 가능한 암호화의 잠재력을 위해 창작자 및 커뮤니티 조직자와 함께 일하는 프로그래머, 엔지니어 및 수학자들로 구성됩니다. 우리는 모든 프로젝트에 대해 공개적이고 환영받는 기여, 통합, 포크 또는 피드백을 실험합니다."
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
{
|
||||
"siteTitle": "Privacy & Scaling Explorations",
|
||||
"siteDescription": "Enhancing Ethereum through cryptographic research and collective experimentation.",
|
||||
"menu": {
|
||||
"home": "Home",
|
||||
"projectLibrary": "Project Library",
|
||||
"about": "About",
|
||||
"resources": "Resources",
|
||||
"jobs": "Jobs",
|
||||
"languages": "Languages {{locale}}",
|
||||
"blog": "Blog",
|
||||
"activity": "Activity",
|
||||
"report": "Report",
|
||||
"firstGoodIssue": "First Good Issue"
|
||||
},
|
||||
"footer": {
|
||||
"description": "Privacy + Scaling Explorations is a multidisciplinary team supported by the Ethereum Foundation.",
|
||||
"privacyPolicy": "Privacy Policy",
|
||||
"termsOfUse": "Terms of use"
|
||||
},
|
||||
"filterOptions": {
|
||||
"random": "Random",
|
||||
"asc": "Title: A-Z",
|
||||
"desc": "Title: Z-A",
|
||||
"relevance": "Relevance"
|
||||
},
|
||||
"filterLabels": {
|
||||
"keywords": "Keywords",
|
||||
"builtWith": "Built with",
|
||||
"themes": "Themes selected",
|
||||
"projectStatus": "Project status"
|
||||
},
|
||||
"error": {
|
||||
"404": {
|
||||
"title": "404: Page not found.",
|
||||
"description": "The page you are looking for might have been removed, had its name changed or is temporarily unavailable."
|
||||
}
|
||||
},
|
||||
"tags": {
|
||||
"build": "Build",
|
||||
"play": "Play",
|
||||
"research": "Research",
|
||||
"grantee": "Grant",
|
||||
"collaborate": "Collaboration",
|
||||
"fullyPSE": "Fully PSE"
|
||||
},
|
||||
"status": {
|
||||
"archived": "Archived",
|
||||
"active": "Active"
|
||||
},
|
||||
"sortBy": "Sort by: {{option}}",
|
||||
"tryItOut": "Try it out!",
|
||||
"learnMore": "Learn more",
|
||||
"buildWithThisTool": "Build with this tool",
|
||||
"deepDiveResearch": "Dive deeper into the research",
|
||||
"searchProjectPlaceholder": "Search project title or keyword",
|
||||
"close": "Close",
|
||||
"lastUpdatedAt": "Last updated {{date}}",
|
||||
"projectLibrary": "Project Library",
|
||||
"backToProjectLibrary": "Back to project library",
|
||||
"discoverMore": "Discover more",
|
||||
"goToHome": "Go to homepage",
|
||||
"noResults": "No results found.",
|
||||
"noResultsDescription": "Sorry, we couldn't find any results for your search. Please try again with different keywords.",
|
||||
"exploreProjectLibrary": "Explore Project Library",
|
||||
"clearAll": "Clear all",
|
||||
"showProjects": "Show projects",
|
||||
"filters": "Filters",
|
||||
"whatDoYouWantDoToday": "What do you want to do today?",
|
||||
"showingProjects": "Showing {{count}} projects",
|
||||
"showingProjectsWith": "Showing {{count}} projects with:"
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"headerTitle": "Privacy + Scaling Explorations",
|
||||
"headerSubtitle": "프로그래밍 가능한 세계를 확장하려는 사람들을 위한 무료 자원을 구축합니다.",
|
||||
"whoWeAre": "우리는",
|
||||
"whoWeAreDescription": "PSE는 암호화 세계를 확장하는 무료 도구를 구축하는 연구소입니다.",
|
||||
"howToPlugIn": "적용하는 방법",
|
||||
"howToPlugInDescription": "우리의 앱을 사용해보고, 우리의 도구와 구축해보고, 프로젝트들에 기여하거나, 우리의 채용공고를 확인하세요. 우리는 전세계의 기여자들을 환영합니다!",
|
||||
"joinOurDiscord": "우리 커뮤니티에 참여하세요"
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
{
|
||||
"learnAndShare": "Learn & Share",
|
||||
"event": "Event",
|
||||
"blogPost": "Blog Post",
|
||||
"watch": "Watch",
|
||||
"read": "Read",
|
||||
"attend": "Attend",
|
||||
"recentUpdates": "Recent Updates",
|
||||
"seeAllUpdates": "See more announcements on Discord",
|
||||
"reportOnSocial": "Report on {{socialName}}"
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"subtitle": "PSE는 암호화 연구에서 프로토콜 및 개념 증명 애플리케이션까지, 많은 프로젝트들의 본거지 입니다."
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"title": "자원들",
|
||||
"subtitle": "이 목록은 우리 커뮤니티에 의해 작성되었습니다. 이 목록에 자원을 추가하기 위해 우리의 Github 페이지에 이슈를 제출하세요.",
|
||||
"onThisPage": "이 목록에서",
|
||||
"editResources": "자원 편집",
|
||||
"addSource": "자원 추가",
|
||||
"addResourceQuestion": "원하는것을 찾지 못하셨나요?",
|
||||
"nav": {
|
||||
"getInvolved": "참여하기",
|
||||
"learn": "배우기",
|
||||
"build": "구축하기",
|
||||
"design": "설계하기"
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"whatWeDo": "What we do",
|
||||
"whatWeDoDescription": "PSE is a multidisciplinary team creating open source privacy and scaling tools for the next generation's internet.",
|
||||
"privacy": {
|
||||
"title": "Privacy",
|
||||
"description": "We believe privacy is a social good that should be accessible to everyone. That's why we're creating open source tools that help people choose what, how, when, and where they share."
|
||||
},
|
||||
"scaling": {
|
||||
"title": "Scaling",
|
||||
"description": "Our infrastructure helps communities grow by making Ethereum more efficient and accessible. From account abstraction and reducing transaction costs, to rollups and zkEVM, we are building towards an interoperable future."
|
||||
},
|
||||
"explorations": {
|
||||
"title": "Explorations",
|
||||
"description": "We are mapping the emerging zero knowledge ecosystem through collective experimentation. We collaborate, share what we learn, and welcome contributions from around the world."
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
{
|
||||
"title": "Giới thiệu về nhóm của chúng tôi",
|
||||
"description": "PSE là phòng thí nghiệm nghiên cứu và phát triển đa ngành được Ethereum Foundation hỗ trợ. Chúng tôi tạo ra cơ sở hạ tầng, công cụ và tài nguyên giáo dục nguồn mở để ứng dụng/ tích hợp mật mã vào các ứng dụng trong thế giới thực.",
|
||||
"our-principles-title": "Các nguyên tắc của chúng tôi",
|
||||
"principles": [
|
||||
{
|
||||
"title": "01. Mật mã cho mọi người",
|
||||
"description": [
|
||||
"Mật mã có ở mọi nơi: mỗi khi bạn kết nối với một trang web được bảo mật, đăng nhập bằng mật khẩu hoặc mở khóa điện thoại, bạn sẽ thấy hoạt động của mật mã.",
|
||||
"Với mật mã “khả lập trình” (như bằng chứng phi tri thức, tính toán nhiều bên hoặc mã hoá đồng cấu), chúng tôi có thể đưa ra các tuyên bố có thể kiểm chứng về thông tin bí mật mà không tiết lộ chính thông tin đó. Điều này có thể được áp dụng để quản lý danh tính, chống sự cấu kết, giao tiếp ẩn danh và nhiều hơn thế nữa.",
|
||||
"Chúng tôi đang xây dựng một thư viện gồm các công cụ dành cho nhà phát triển, tài liệu nghiên cứu và ứng dụng mẫu mã nguồn mở và miễn phí cho mọi người sử dụng. Chúng tôi hy vọng tài nguyên của chúng tôi sẽ truyền cảm hứng cho mọi người đổi mới công nghệ mà cộng đồng của họ cần."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "02. Quyền riêng tư được mặc định",
|
||||
"description": [
|
||||
"Chúng tôi tin rằng quyền riêng tư là quyền cơ bản. Chúng tôi muốn trở thành một phần trong việc xây dựng một mạng Internet loại bỏ các hoạt động thu thập dữ liệu mang tính xâm lấn và thay vào đó đưa cho mọi người quyền quản lý thực sự về việc ai có quyền truy cập vào thông tin cá nhân của họ. Quyền phải có mục đích cụ thể, có thể thu hồi, được thông báo đầy đủ và không bị ép buộc.",
|
||||
"Chúng tôi tạo ra các công cụ giúp người dùng xác thực bản thân một cách an toàn, thực hiện các giao dịch được bảo mật trên blockchain và tôn trọng và bảo vệ quyền riêng tư người dùng."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "03. Khả năng mở rộng cho cộng đồng",
|
||||
"description": [
|
||||
"Bằng chứng phi tri thức có thể xác minh các phép tính một cách nhanh chóng với chi phí thấp, giúp các hệ thống phi tập trung như Ethereum trở nên hiệu quả hơn. Chúng tôi nghiên cứu, thiết kế và chia sẻ các giải pháp mở rộng quy mô mà bất kỳ ai cũng có thể sử dụng để đóng góp cho cơ sở hạ tầng công cộng kỹ thuật số mạnh mẽ hơn và thiết thực hơn.",
|
||||
"Chúng tôi cũng phát triển cộng đồng của mình bằng cách hỗ trợ thế hệ những nhà phát triển ứng dụng tiếp theo. Chúng tôi tổ chức các chương trình mùa hè hấp dẫn dành cho sinh viên và các bài giảng trực tiếp thường xuyên mà bất kỳ ai trên thế giới đều có thể tham gia và học hỏi."
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "04. Sản phẩm công cộng",
|
||||
"description": [
|
||||
"Chúng tôi đang xây dựng một nhóm đa dạng và đa ngành để khám phá hệ sinh thái bằng chứng phi tri thức mới nổi. PSE bao gồm các lập trình viên, kỹ sư và nhà toán học làm việc cùng với các nhà sáng tạo và nhà tổ chức cộng đồng để cùng nhau khám phá tiềm năng của mật mã khả lập trình.",
|
||||
"Chúng tôi thử nghiệm những đóng góp, tích hợp, phân nhánh hoặc phản hồi cởi mở và hoan nghênh đối với tất cả các dự án của mình."
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
{
|
||||
"siteTitle": "Khám Phá Quyền Riêng Tư & Khả năng mở rộng",
|
||||
"siteDescription": "Phát triển Ethereum thông qua nghiên cứu mật mã và thử nghiệm mang tính công chúng.",
|
||||
"menu": {
|
||||
"home": "Trang chủ",
|
||||
"projectLibrary": "Thư viện Dự án",
|
||||
"about": "Giới thiệu",
|
||||
"resources": "Tài nguyên",
|
||||
"jobs": "Công việc",
|
||||
"languages": "Ngôn ngữ {{locale}}",
|
||||
"blog": "Blog",
|
||||
"activity": "Hoạt động",
|
||||
"report": "Báo cáo",
|
||||
"firstGoodIssue": "Vấn đề Tốt Đầu Tiên"
|
||||
},
|
||||
"footer": {
|
||||
"description": "Khám Phá Quyền Riêng Tư + Khả năng mở rộng là một đội ngũ đa ngành được hỗ trợ bởi Quỹ Ethereum.",
|
||||
"privacyPolicy": "Chính sách Quyền Riêng Tư",
|
||||
"termsOfUse": "Điều khoản sử dụng"
|
||||
},
|
||||
"filterOptions": {
|
||||
"random": "Ngẫu nhiên",
|
||||
"asc": "Tiêu đề: A-Z",
|
||||
"desc": "Tiêu đề: Z-A",
|
||||
"relevance": "Liên quan"
|
||||
},
|
||||
"filterLabels": {
|
||||
"keywords": "Từ khóa",
|
||||
"builtWith": "Xây dựng với",
|
||||
"themes": "Chủ đề đã chọn",
|
||||
"projectStatus": "Trạng thái Dự án"
|
||||
},
|
||||
"error": {
|
||||
"404": {
|
||||
"title": "404: Trang không được tìm thấy.",
|
||||
"description": "Trang bạn đang tìm kiếm có thể đã bị xóa, đã thay đổi tên hoặc tạm thời không khả dụng."
|
||||
}
|
||||
},
|
||||
"tags": {
|
||||
"build": "Xây dựng",
|
||||
"play": "Chơi",
|
||||
"research": "Nghiên cứu",
|
||||
"grantee": "Được tài trợ",
|
||||
"collaborate": "Hợp tác",
|
||||
"fullyPSE": "Toàn bộ PSE"
|
||||
},
|
||||
"status": {
|
||||
"archived": "Đã lưu trữ",
|
||||
"active": "Hoạt động"
|
||||
},
|
||||
"sortBy": "Sắp xếp theo: {{option}}",
|
||||
"tryItOut": "Thử nghiệm!",
|
||||
"learnMore": "Tìm hiểu thêm",
|
||||
"buildWithThisTool": "Xây dựng với công cụ này",
|
||||
"deepDiveResearch": "Nghiên cứu sâu rộng hơn",
|
||||
"searchProjectPlaceholder": "Tìm kiếm tiêu đề dự án hoặc từ khóa",
|
||||
"close": "Đóng",
|
||||
"lastUpdatedAt": "Cập nhật lần cuối vào {{date}}",
|
||||
"projectLibrary": "Thư viện Dự án",
|
||||
"backToProjectLibrary": "Quay lại thư viện dự án",
|
||||
"discoverMore": "Khám phá thêm",
|
||||
"goToHome": "Điều hướng đến trang chủ",
|
||||
"noResults": "Không có kết quả.",
|
||||
"noResultsDescription": "Xin lỗi, chúng tôi không thể tìm thấy kết quả nào cho tìm kiếm của bạn. Vui lòng thử lại với từ khóa khác.",
|
||||
"exploreProjectLibrary": "Khám phá Thư viện Dự án",
|
||||
"clearAll": "Xóa tất cả",
|
||||
"showProjects": "Hiển thị dự án",
|
||||
"filters": "Bộ lọc",
|
||||
"whatDoYouWantDoToday": "Bạn muốn làm gì hôm nay?",
|
||||
"showingProjects": "Hiển thị {{count}} dự án",
|
||||
"showingProjectsWith": "Hiển thị {{count}} dự án với:"
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"headerTitle": "Khám Phá Quyền Riêng Tư + Khả năng mở rộng",
|
||||
"headerSubtitle": "Xây dựng tài nguyên miễn phí cho những người mở rộng thế giới của mật mã khả lập trình.",
|
||||
"whoWeAre": "Chúng tôi là ai",
|
||||
"whoWeAreDescription": "PSE là một phòng thí nghiệm nghiên cứu xây dựng các công cụ miễn phí mở rộng thế giới của mật mã.",
|
||||
"howToPlugIn": "Cách tham gia",
|
||||
"howToPlugInDescription": "Thử nghiệm ứng dụng của chúng tôi, xây dựng với các công cụ của chúng tôi, đóng góp vào các dự án hoặc kiểm tra các cơ hội việc làm của chúng tôi. Chúng tôi hoan nghênh sự đóng góp từ khắp nơi trên thế giới!",
|
||||
"joinOurDiscord": "Tham gia cộng đồng của chúng tôi"
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
{
|
||||
"learnAndShare": "Học và Chia sẻ",
|
||||
"event": "Sự kiện",
|
||||
"blogPost": "Bài đăng trên Blog",
|
||||
"watch": "Xem",
|
||||
"read": "Đọc",
|
||||
"attend": "Tham gia",
|
||||
"news": [
|
||||
{
|
||||
"type": "post",
|
||||
"title": "Những Bài Học từ Nghi thức KZG",
|
||||
"action": {
|
||||
"label": "Đọc",
|
||||
"url": "https://mirror.xyz/privacy-scaling-explorations.eth/naTdx-u7kyirczTLSAnWwH6ZdedfTQu1yCWQj1m_n-E"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "learn",
|
||||
"title": "Các sự kiện công khai do các thành viên của PSE tổ chức để tìm hiểu về các dự án của nhau, chia sẻ ý tưởng và nhận phản hồi.",
|
||||
"action": {
|
||||
"label": "Xem lịch đầy đủ",
|
||||
"url": "https://pse-team.notion.site/50dcf22c5191485e93406a902ae9e93b?v=453023f8227646dd949abc34a7a4a138&pvs=4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "learn",
|
||||
"title": "Mạch Folding Circom: Một nghiên cứu về ZKML do Dr. Cathie So thực hiện",
|
||||
"action": {
|
||||
"label": "Xem",
|
||||
"url": "https://www.youtube.com/live/jb6HDEtY4CI"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"subtitle": "PSE là nơi chứa đựng nhiều dự án, từ nghiên cứu mật mã đến công cụ phát triển, giao thức và ứng dụng chứng minh khái niệm."
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"title": "Tài Nguyên",
|
||||
"subtitle": "Danh sách này được tổng hợp bởi cộng đồng của chúng tôi. Gửi một vấn đề trên trang Github của chúng tôi để thêm một tài nguyên vào danh sách này.",
|
||||
"onThisPage": "Trên trang này",
|
||||
"editResources": "Chỉnh sửa tài nguyên",
|
||||
"addSource": "Thêm nguồn",
|
||||
"addResourceQuestion": "Không tìm thấy điều bạn đang tìm kiếm?",
|
||||
"nav": {
|
||||
"getInvolved": "Tham gia",
|
||||
"learn": "Học",
|
||||
"build": "Xây dựng",
|
||||
"design": "Thiết kế"
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"whatWeDo": "Chúng tôi làm gì",
|
||||
"whatWeDoDescription": "PSE là một nhóm đa ngành sáng tạo các công cụ mã nguồn mở về quyền riêng tư và khả năng mở rộng mở rộng cho thế hệ internet tiếp theo.",
|
||||
"privacy": {
|
||||
"title": "Quyền Riêng Tư",
|
||||
"description": "Chúng tôi tin rằng quyền riêng tư là một giá trị xã hội mà mọi người nên có thể tiếp cận. Đó là lý do tại sao chúng tôi đang tạo ra các công cụ mã nguồn mở giúp mọi người chọn lựa cái gì, như thế nào, khi nào và nơi nào họ muốn chia sẻ."
|
||||
},
|
||||
"scaling": {
|
||||
"title": "Mở Rộng",
|
||||
"description": "Hạ tầng của chúng tôi giúp cộng đồng phát triển bằng cách làm cho Ethereum trở nên hiệu quả và tiếp cận hơn. Từ Account Abstraction và giảm chi phí giao dịch, đến rollups và zkEVM, chúng tôi đang xây dựng hướng tới một tương lai có khả năng tương tác."
|
||||
},
|
||||
"explorations": {
|
||||
"title": "Khám Phá",
|
||||
"description": "Chúng tôi đang định hình hệ sinh thái bằng chứng phi tri thức đang là trào lưu thông qua thử nghiệm đại chúng. Chúng tôi hợp tác, chia sẻ những gì chúng tôi học được và hoan nghênh sự đóng góp từ khắp nơi trên thế giới."
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
{
|
||||
"title": "關於我們",
|
||||
"description": "PSE 是由以太坊基金會資助的跨領域研究和開發實驗室。我們打造開源基礎設施、工具和教育資源,將密碼學應用於現實世界。",
|
||||
"our-principles-title": "我們的原則",
|
||||
"principles": [
|
||||
{
|
||||
"title": "01. 面向大眾的密碼學",
|
||||
"description": [
|
||||
"密碼學無處不在:每次您連接到安全網站、使用密碼登錄或解鎖手機時,都在使用密碼學。",
|
||||
"通過「可程式化」密碼學 (例如零知識證明 (ZKP)、多方計算(MPC)或同態加密(FHE)),我們可以對秘密訊息產生可驗證的聲明,而不必揭露訊息本身。這可以應用於身份管理、抵抗共謀、匿名通訊等眾多領域。",
|
||||
"我們正在建立一系列開源且自由供所有人使用的開發工具、研究論文和軟體原型。我們希望我們的資源能啟發人們去創造他們社群所需的新科技。"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "02. 設計始於隱私",
|
||||
"description": [
|
||||
"我們認為隱私是一項基本權利。我們希望建立不再對資料強取豪奪的網路,讓人們真正有權選擇誰可以造訪他們的個人資料。資料授權應該可限定目的、可撤銷、使用者知情、且非強迫性的。",
|
||||
"我們製作的工具可以幫助人們安全地驗證身份,在區塊鏈上進行保密交易,並尊重和保護使用者的隱私。"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "03. 為社群擴展",
|
||||
"description": [
|
||||
"零知識證明可以快速且便宜地驗證計算,有助於像以太坊這樣的去中心化系統變得更加高效。我們研究、設計並分享任何人都可以用來貢獻更強大且實用的數位公共基礎建設的擴展解決方案。",
|
||||
"我們栽培下一代開發者來讓我們的社群茁壯。我們為學生舉辦暑期計劃,也定期舉辦直播講座供人們學習。"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "04. 開源公共財",
|
||||
"description": [
|
||||
"我們正在培養一支多元且跨領域的團隊,探索新興的零知識生態系統。PSE 由程式設計師、工程師和數學家以及創意人士和社群組織者組成,共同發現可程式化密碼學的潛力。",
|
||||
"我們以公開方式開發軟體,所有專案都歡迎人們來貢獻、整合、分叉與回饋。"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
{
|
||||
"siteTitle": "隱私與擴展探索團隊",
|
||||
"siteDescription": "通過密碼學研究和合作實驗來改進以太坊。",
|
||||
"menu": {
|
||||
"home": "首頁",
|
||||
"projectLibrary": "專案集",
|
||||
"about": "關於",
|
||||
"resources": "資源",
|
||||
"jobs": "工作機會",
|
||||
"languages": "語言 {{locale}}",
|
||||
"blog": "部落格",
|
||||
"activity": "活動",
|
||||
"report": "報告",
|
||||
"firstGoodIssue": "好上手的開源貢獻"
|
||||
},
|
||||
"footer": {
|
||||
"description": "隱私與擴展探索團隊是由以太坊基金會資助的跨領域團隊。",
|
||||
"privacyPolicy": "隱私政策",
|
||||
"termsOfUse": "使用條款"
|
||||
},
|
||||
"filterOptions": {
|
||||
"random": "隨機",
|
||||
"asc": "標題:A-Z",
|
||||
"desc": "標題:Z-A",
|
||||
"relevance": "相關性"
|
||||
},
|
||||
"filterLabels": {
|
||||
"keywords": "關鍵詞",
|
||||
"builtWith": "開發工具",
|
||||
"themes": "佈景主題",
|
||||
"projectStatus": "專案狀態"
|
||||
},
|
||||
"error": {
|
||||
"404": {
|
||||
"title": "404:找不到頁面。",
|
||||
"description": "您查詢的頁面可能已刪除,其名稱已更改或暫時無法造訪。"
|
||||
}
|
||||
},
|
||||
"tags": {
|
||||
"build": "打造",
|
||||
"play": "試用",
|
||||
"research": "研究",
|
||||
"grantee": "授資助者",
|
||||
"collaborate": "合作",
|
||||
"fullyPSE": "純PSE"
|
||||
},
|
||||
"status": {
|
||||
"archived": "已封存",
|
||||
"active": "活躍"
|
||||
},
|
||||
"sortBy": "排序方式:{{option}}",
|
||||
"tryItOut": "試用一下!",
|
||||
"learnMore": "了解更多",
|
||||
"buildWithThisTool": "使用此工具構建",
|
||||
"deepDiveResearch": "深入研究",
|
||||
"searchProjectPlaceholder": "搜索專案標題或關鍵詞",
|
||||
"close": "關閉",
|
||||
"lastUpdatedAt": "上次更新於 {{date}}",
|
||||
"projectLibrary": "專案集",
|
||||
"backToProjectLibrary": "返回專案集",
|
||||
"discoverMore": "發現更多",
|
||||
"goToHome": "前往首頁",
|
||||
"noResults": "未找到結果。",
|
||||
"noResultsDescription": "抱歉,我們找不到與您的搜索相關的結果。請嘗試使用不同的關鍵詞再次搜索。",
|
||||
"exploreProjectLibrary": "探索專案集",
|
||||
"clearAll": "清除所有",
|
||||
"showProjects": "顯示專案",
|
||||
"filters": "篩選器",
|
||||
"whatDoYouWantDoToday": "今天想做點什麼呢?",
|
||||
"showingProjects": "顯示 {{count}} 個專案",
|
||||
"showingProjectsWith": "顯示 {{count}} 個帶有:"
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"headerTitle": "隱私與擴展探索團隊",
|
||||
"headerSubtitle": "為擴展可程式化密碼學世界的人們建立開源資源。",
|
||||
"whoWeAre": "我們是誰",
|
||||
"whoWeAreDescription": "PSE 是一個研究實驗室,建立開源工具來開拓密碼學的世界。",
|
||||
"howToPlugIn": "如何參與",
|
||||
"howToPlugInDescription": "試用我們的應用程式,使用我們的工具構建,為專案做出貢獻,或查看我們的職缺。我們歡迎來自世界各地的貢獻!",
|
||||
"joinOurDiscord": "加入我們的社群"
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
{
|
||||
"learnAndShare": "學習與分享",
|
||||
"event": "活動",
|
||||
"blogPost": "部落格文章",
|
||||
"watch": "觀看",
|
||||
"read": "閱讀",
|
||||
"attend": "參加",
|
||||
"recentUpdates": "Recent Updates",
|
||||
"seeAllUpdates": "See more announcements on Discord",
|
||||
"repostOnSocial": "Repost on {{socialName}}"
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"subtitle": "PSE 是許多專案的家,從密碼學研究到開發者工具、協定和概念驗證應用程式。"
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"title": "資源",
|
||||
"subtitle": "這個清單由我們的社群共同編製。來我們的 Github 頁面上發起議題(issue)以將新的資源加入清單。",
|
||||
"onThisPage": "在這個頁面上",
|
||||
"editResources": "編輯資源",
|
||||
"addSource": "新增來源",
|
||||
"addResourceQuestion": "找不到您正在尋找的內容嗎?",
|
||||
"nav": {
|
||||
"getInvolved": "參與",
|
||||
"learn": "學習",
|
||||
"build": "打造",
|
||||
"design": "設計"
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"whatWeDo": "我們在做什麼",
|
||||
"whatWeDoDescription": "PSE 是一支跨領域團隊,為下一世代的網際網路打造開源的隱私和擴展工具。",
|
||||
"privacy": {
|
||||
"title": "隱私",
|
||||
"description": "我們相信隱私是一種社會福祉,應該人人可及。這是為什麼我們正在打造開源工具,幫助人們選擇何時、如何、何地以及與誰分享。"
|
||||
},
|
||||
"scaling": {
|
||||
"title": "擴展",
|
||||
"description": "我們的基礎設施使以太坊更高效且更可及,並幫助社群成長。從帳戶抽象和降低交易成本到Rollups和zkEVM,我們正在建設一個互通性的未來。"
|
||||
},
|
||||
"explorations": {
|
||||
"title": "探索",
|
||||
"description": "我們通過合作實驗來繪製新興的零知識生態系統地圖。我們協作,分享我們所學,並歡迎來自世界各地的貢獻。"
|
||||
}
|
||||
}
|
||||
@@ -1,112 +0,0 @@
|
||||
import type { InitOptions } from "i18next"
|
||||
|
||||
import { siteConfig } from "@/config/site"
|
||||
|
||||
export const fallbackLng = "en"
|
||||
|
||||
export const defaultNS = "translation"
|
||||
export const cookieName = "i18next"
|
||||
|
||||
interface Language {
|
||||
key: string
|
||||
label: string
|
||||
enabled?: boolean
|
||||
}
|
||||
|
||||
/**
|
||||
* List of languages
|
||||
* @param key - language key
|
||||
* @param label - language label
|
||||
* @param enabled - enable or disable language (when disabled, it will not be shown in the language switcher)
|
||||
*/
|
||||
export const languageList: Language[] = [
|
||||
{
|
||||
key: "en",
|
||||
label: "English",
|
||||
enabled: true,
|
||||
},
|
||||
{
|
||||
key: "es",
|
||||
label: "Español",
|
||||
enabled: true,
|
||||
},
|
||||
{
|
||||
key: "zh-TW",
|
||||
label: "正體中文",
|
||||
enabled: true,
|
||||
},
|
||||
{
|
||||
key: "it",
|
||||
label: "Italiano",
|
||||
enabled: true,
|
||||
},
|
||||
{
|
||||
key: "vi",
|
||||
label: "Tiếng Việt",
|
||||
enabled: true,
|
||||
},
|
||||
{
|
||||
key: "ko",
|
||||
label: "한국어",
|
||||
enabled: false,
|
||||
},
|
||||
{
|
||||
key: "fr",
|
||||
label: "Français",
|
||||
enabled: true,
|
||||
},
|
||||
{
|
||||
key: "de",
|
||||
label: "Deutsch",
|
||||
enabled: true,
|
||||
},
|
||||
{
|
||||
key: "ja",
|
||||
label: "日本語",
|
||||
enabled: true,
|
||||
},
|
||||
{
|
||||
key: "ar",
|
||||
label: "Arabic",
|
||||
enabled: false,
|
||||
},
|
||||
{
|
||||
key: "zh-CN",
|
||||
label: "中文",
|
||||
enabled: false,
|
||||
},
|
||||
]
|
||||
|
||||
// list of language keys based on the languageList
|
||||
const languageKeys = languageList
|
||||
.map((item) => item.key)
|
||||
.filter((item) => item !== fallbackLng)
|
||||
|
||||
export const languages = [fallbackLng, ...languageKeys] as const
|
||||
|
||||
export type LocaleTypes = (typeof languages)[number]
|
||||
|
||||
// list of only enabled languages
|
||||
export const enabledLanguagesItems: { label: string; value: string }[] =
|
||||
languageList
|
||||
.filter((item) =>
|
||||
siteConfig.showOnlyEnabledLanguages ? item.enabled : true
|
||||
)
|
||||
.map(({ key: value, label }) => {
|
||||
return {
|
||||
label,
|
||||
value,
|
||||
}
|
||||
}) ?? []
|
||||
|
||||
export function getOptions(lng = fallbackLng, ns = defaultNS): InitOptions {
|
||||
return {
|
||||
debug: false,
|
||||
supportedLngs: languages,
|
||||
fallbackLng,
|
||||
lng,
|
||||
fallbackNS: defaultNS,
|
||||
defaultNS,
|
||||
ns,
|
||||
}
|
||||
}
|
||||
339
app/labels.ts
Normal file
339
app/labels.ts
Normal file
@@ -0,0 +1,339 @@
|
||||
export const LABELS = {
|
||||
ABOUT_PAGE: {
|
||||
TITLE: "About our team",
|
||||
DESCRIPTION:
|
||||
"PSE is an Ethereum Foundation supported research and development lab dedicated to testing use cases for cryptographic primitives. We build open source infrastructure and tools, host workshops and summer programs, and collaborate with people bringing cryptography to life.",
|
||||
OUR_PRINCIPLES_TITLE: "Our Principles",
|
||||
BANNER: {
|
||||
TITLE: "Connect with us",
|
||||
SUBTITLE:
|
||||
"Join our discord to learn more about our research, connect with our community, and keep posted about jobs and grant opportunities!",
|
||||
},
|
||||
PRINCIPLES: [
|
||||
{
|
||||
TITLE: "01. Cryptography for people",
|
||||
DESCRIPTION: [
|
||||
'Cryptography is everywhere: every time you connect to a secure site, log in with a password or unlock your phone, you\'re seeing cryptography in action. With "programmable" cryptography (like zero knowledge proofs, multi-party computation or homomorphic encryption) we can make verifiable claims about secret information without revealing the information itself.',
|
||||
" This can be applied to identity management, collusion resistance, anonymous communication and so much more. We're building a library of dev tools, research papers, and prototypes that are open source and free for everyone to use. We hope our resources inspire people to innovate the technologies that their communities need.",
|
||||
],
|
||||
},
|
||||
{
|
||||
TITLE: "02. Prioritizing privacy",
|
||||
DESCRIPTION: [
|
||||
"We believe that privacy is a fundamental right. We want to be part of building an internet that divests from invasive data practices, and instead gives people real choices about who has access to their personal information.",
|
||||
" Permission should be purpose specific, revocable, informed and uncoerced. We make tools that help people to securely authenticate themselves, make confidential transactions on the blockchain, and respect and preserve user privacy.",
|
||||
],
|
||||
},
|
||||
{
|
||||
TITLE: "03. Scaling for communities",
|
||||
DESCRIPTION: [
|
||||
"Zero knowledge proofs can verify computations quickly and cheaply, helping decentralized systems like Ethereum become more efficient. We research, design and share scaling solutions that anyone can use to contribute to a stronger and more practical digital public infrastructure.",
|
||||
" We also grow our community by supporting the next generation of builders. We host immersive programs for students and lecture series that are open to everyone interested in building with cryptography.",
|
||||
],
|
||||
},
|
||||
{
|
||||
TITLE: "04. Collective exploration",
|
||||
DESCRIPTION: [
|
||||
"We are cultivating a diverse and multidisciplinary team to explore the emerging zero knowledge ecosystem. PSE is made up of programmers, engineers, and mathematicians working alongside creatives and community organizers to collaboratively discover the potential of programmable cryptography.",
|
||||
"We experiment in the open and welcome contributions, integrations, forks, or feedback on all of our projects.",
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
BLOG_PAGE: {
|
||||
TITLE: "Blog",
|
||||
SUBTITLE:
|
||||
"Read our latest articles and stay updated on the latest news in the world of cryptography.",
|
||||
RECENT_ARTICLES: "Recent articles",
|
||||
SEE_MORE: "See more",
|
||||
READ_MORE: "Read more",
|
||||
},
|
||||
COMMON: {
|
||||
SITE_TITLE: "Privacy & Scaling Explorations",
|
||||
SITE_DESCRIPTION:
|
||||
"Enhancing Ethereum through cryptographic research and collective experimentation.",
|
||||
ACTIVE_RESEARCH: "Active Research",
|
||||
PAST_RESEARCH: "Past Research",
|
||||
MENU: {
|
||||
HOME: "Home",
|
||||
PROJECT_LIBRARY: "Project Library",
|
||||
PROJECTS: "Projects",
|
||||
RESEARCH: "Research",
|
||||
ABOUT: "About",
|
||||
RESOURCES: "Resources",
|
||||
JOBS: "Jobs",
|
||||
BLOG: "Blog",
|
||||
ACTIVITY: "Activity",
|
||||
REPORT: "Technical Reports",
|
||||
FIRST_GOOD_ISSUE: "Good First Issue",
|
||||
PROGRAMS: "Programs",
|
||||
OPEN_ISSUES: "Open Issues",
|
||||
},
|
||||
FOOTER: {
|
||||
DESCRIPTION:
|
||||
"Privacy + Scaling Explorations is a multidisciplinary team supported by the Ethereum Foundation.",
|
||||
PRIVACY_POLICY: "Privacy Policy",
|
||||
TERMS_OF_USE: "Terms of use",
|
||||
},
|
||||
FILTER_OPTIONS: {
|
||||
RANDOM: "Random",
|
||||
ASC: "Title: A-Z",
|
||||
DESC: "Title: Z-A",
|
||||
RELEVANCE: "Relevance",
|
||||
},
|
||||
FILTER_LABELS: {
|
||||
KEYWORDS: "Keywords",
|
||||
BUILT_WITH: "Built with",
|
||||
THEMES: "Themes selected",
|
||||
PROJECT_STATUS: "Project status",
|
||||
FUNDING_SOURCE: "Funding source",
|
||||
FUNDING: "Funding",
|
||||
LICENSE: "License",
|
||||
PROJECT_TYPE: "Project type",
|
||||
},
|
||||
ERROR: {
|
||||
404: {
|
||||
TITLE: "404: Page not found.",
|
||||
DESCRIPTION:
|
||||
"The page you are looking for might have been removed, had its name changed or is temporarily unavailable.",
|
||||
},
|
||||
},
|
||||
TAGS: {
|
||||
BUILD: "Build",
|
||||
PLAY: "Play",
|
||||
RESEARCH: "Research",
|
||||
GRANTEE: "Grant",
|
||||
COLLABORATE: "Collaboration",
|
||||
FULLY_PSE: "Fully PSE",
|
||||
},
|
||||
STATUS: {
|
||||
ARCHIVED: "Inactive",
|
||||
ACTIVE: "Active",
|
||||
INACTIVE: "Inactive",
|
||||
},
|
||||
PROJECT_SUNSET:
|
||||
"This project has been sunset and is not actively worked on anymore.",
|
||||
PROJECT_MAINTENANCE:
|
||||
"This project is still being monitored for bug fixes but is not under active feature development",
|
||||
SORT_BY: "Sort by: {{option}}",
|
||||
TRY_IT_OUT: "Try it out!",
|
||||
LEARN_MORE: "Learn more",
|
||||
LEARN_MORE_DISCORD:
|
||||
"Join our Discord to learn more about our programs and other educational opportunities!",
|
||||
BUILD_WITH_THIS_TOOL: "Build with this tool",
|
||||
BUILD_WITH: "Build with",
|
||||
DEEP_DIVE_RESEARCH: "Dive deeper into the research",
|
||||
SEARCH_PROJECT_PLACEHOLDER: "Search project title or keyword",
|
||||
CLOSE: "Close",
|
||||
LAST_UPDATED_AT: "Last updated {{date}}",
|
||||
PROJECT_LIBRARY: "Project Library",
|
||||
BACK_TO_PROJECT_LIBRARY: "Back to project library",
|
||||
DISCOVER_MORE: "Discover more",
|
||||
GO_TO_HOME: "Go to homepage",
|
||||
NO_RESULTS: "No results found.",
|
||||
NO_RESULTS_DESCRIPTION:
|
||||
"Sorry, we couldn't find any results for your search. Please try again with different keywords.",
|
||||
EXPLORE_PROJECT_LIBRARY: "Explore Project Library",
|
||||
DEVELOPMENT_PROJECTS: "Development Projects",
|
||||
RESEARCH: "Research",
|
||||
CLEAR_ALL: "Clear all",
|
||||
SHOW_PROJECTS: "Show projects",
|
||||
FILTERS: "Filters",
|
||||
WHAT_DO_YOU_WANT_DO_TODAY: "What do you want to do today?",
|
||||
SHOWING_PROJECTS: "Showing {{count}} projects",
|
||||
SHOWING_PROJECTS_WITH: "Showing {{count}} projects with:",
|
||||
CONNECT_WITH_US: "Connect with us",
|
||||
CONNECT_WITH_US_DESCRIPTION:
|
||||
"We welcome contributions from around the world! Join our discord to try out apps, build with our tools, contribute to projects, or check out job openings and grant opportunities.",
|
||||
OUR_YEAR_PROGRAM: "Our {{year}} programs",
|
||||
ON_THIS_PAGE: "On this page",
|
||||
HOW_TO_APPLY: "How to apply",
|
||||
CHOOSE_PROGRAM: "Choose your program",
|
||||
CONNECT_WITH_US_ON_PLATFORM: "Connect with us on {{platform}}",
|
||||
ADD_RESOURCE: "Add a resource",
|
||||
NOT_CURRENTLY_ACTIVE: "Not Currently Active",
|
||||
INACTIVE: "Inactive",
|
||||
JOIN_OUR_DISCORD: "Join our discord",
|
||||
PREV_BRAND_IMAGE: "Previous branding",
|
||||
EDIT_THIS_PAGE: "Edit this page",
|
||||
CONTENTS: "Contents",
|
||||
PROJECT_VIDEOS: "Project Videos",
|
||||
ERROR_LOADING_VIDEOS: "Error loading videos",
|
||||
PROJECT_TEAM: "Team",
|
||||
YOUTUBE_VIDEOS: "YouTube Videos",
|
||||
},
|
||||
HOMEPAGE: {
|
||||
HEADER_TITLE: "Privacy + Scaling Explorations",
|
||||
HEADER_SUBTITLE:
|
||||
"PSE is a research and development lab with a mission of making cryptography useful for human collaboration. We build open source tooling with things like zero-knowledge proofs, multiparty computation, homomorphic encryption, Ethereum, and more.",
|
||||
WHO_WE_ARE: "Who we are",
|
||||
WHO_WE_ARE_DESCRIPTION:
|
||||
"PSE is a research lab building free tools that expand the world of cryptography.",
|
||||
HOW_TO_PLUG_IN: "How to plug in",
|
||||
HOW_TO_PLUG_IN_DESCRIPTION:
|
||||
"Try out our apps, build with our tools, contribute to projects, or check out our job openings. We welcome contributions from around the world!",
|
||||
JOIN_OUR_DISCORD: "Join our community",
|
||||
RECENT_UPDATES: "Recent updates",
|
||||
CONNECT_WITH_US: {
|
||||
TITLE: "Join our programs",
|
||||
DESCRIPTION:
|
||||
"Want to explore the world of programmable cryptography and learn how to make contributions to open-source projects? Join our free programs to start your journey!",
|
||||
},
|
||||
VIDEOS: "VIDEOS",
|
||||
VISIT_OUR_CHANNEL: "VISIT OUR CHANNEL",
|
||||
ERROR_LOADING_VIDEOS: "Error loading videos",
|
||||
CHECK_OUT_OUR_YOUTUBE:
|
||||
"Check out our YouTube to learn the latest in advanced cryptography.",
|
||||
},
|
||||
NEWS_SECTION: {
|
||||
LEARN_AND_SHARE: "Learn & Share",
|
||||
EVENT: "Event",
|
||||
BLOG_POST: "Blog Post",
|
||||
WATCH: "Watch",
|
||||
READ: "Read",
|
||||
ATTEND: "Attend",
|
||||
RECENT_UPDATES: "Recent Updates",
|
||||
SEE_ALL_UPDATES: "See more announcements on Discord",
|
||||
REPOST_ON_SOCIAL: "Repost on {{socialName}}",
|
||||
},
|
||||
PROGRAMS_PAGE: {
|
||||
TITLE: "Get started with programmable cryptography",
|
||||
DESCRIPTION:
|
||||
"PSE offers free educational programs to help you dive deep into Zero Knowledge Proofs, Fully Homomorphic Encryption, Multi-Party Computation and the latest in programmable cryptography. Whether you're looking to learn the basics or start making open-source contributions, we have resources for your learning journey!",
|
||||
COMMON: {
|
||||
FAQ: "FAQ",
|
||||
CURRICULUM: "Curriculum",
|
||||
HOW_TO_APPLY: "How to apply",
|
||||
APPLY_NOW: "Apply now",
|
||||
LEARN_MORE_ON_GITHUB: "Learn more on Github",
|
||||
WEEK: "Week {{week}}",
|
||||
},
|
||||
CURRICULUM: [
|
||||
{
|
||||
TITLE: "PRE-REQUISITES",
|
||||
ITEMS: [
|
||||
"Course overview and resources",
|
||||
"Git, GitHub, and PR workflow basics",
|
||||
"Introduction to ZKPs and Number Theory",
|
||||
],
|
||||
},
|
||||
{
|
||||
TITLE: "Cryptographic Basics",
|
||||
ITEMS: [
|
||||
"Getting started with Circom",
|
||||
"Basics of encryption and hash functions",
|
||||
"Digital signatures and elliptic curve cryptography",
|
||||
],
|
||||
},
|
||||
{
|
||||
TITLE: "More Crypto + ZKPs",
|
||||
ITEMS: [
|
||||
"Circom crash course + practice",
|
||||
"KZG Commitments and zkSNARKs",
|
||||
"Overview of Trusted Setups and Groth16",
|
||||
],
|
||||
},
|
||||
{
|
||||
TITLE: "Hackathon",
|
||||
ITEMS: [
|
||||
"A break from studying",
|
||||
"One week to build something with your new skills!",
|
||||
],
|
||||
},
|
||||
{
|
||||
TITLE: "PLONK Week",
|
||||
ITEMS: [
|
||||
"Learn Rust and complete Rustlings",
|
||||
"Deep dive into PLONK",
|
||||
"Make a presentation and blog post on PLONK",
|
||||
],
|
||||
},
|
||||
{
|
||||
TITLE: "Technologies + Applications",
|
||||
ITEMS: [
|
||||
"Halo2 introduction and practical",
|
||||
"Study of FHE and MPC",
|
||||
"Explore Semaphore, Bandada, TLSNotary, ZKEmail",
|
||||
],
|
||||
},
|
||||
],
|
||||
CORE_PROGRAM: {
|
||||
TITLE: "Core Program",
|
||||
DESCRIPTION: [
|
||||
"PSE's Core Program is an eight-week introductory course for university students looking to explore the world of programmable cryptography. The program will be run hybrid style with online and in-person sessions in Argentina (Buenos Aires), Costa Rica (San José), Ecuador (Cuenca), Japan (Tokyo), South Korea (Seoul), and Taiwan (Taipei).",
|
||||
"By the end of the program, you will gain comprehensive knowledge about Zero Knowledge Proofs (ZKP), Fully Homomorphic Encryption (FHE), and Multiparty Computation (MPC). You will also bolster your GitHub portfolio, and potentially receive grants for further research and contributions!",
|
||||
],
|
||||
},
|
||||
ACCELERATION_PROGRAM: {
|
||||
TITLE: "Acceleration program",
|
||||
DESCRIPTION: [
|
||||
"Acceleration program supports alumni of our entry level programs (e.g. Core Program, ZK Summer, ZK Playground) to deepen explorations of ZKP, FHE, MPC, and related technologies through grants and mentorship. This program operates on a round-based application system, focusing on specific open tasks for each round.",
|
||||
],
|
||||
},
|
||||
HOW_TO_APPLY: {
|
||||
DESCRIPTION:
|
||||
"We encourage people to apply as each round opens because we review applications on a first-come first-serve basis! If there are multiple proposals about the same issue, we may consider granting multiple applications on a case-by-case basis.",
|
||||
OPEN_TASKS: {
|
||||
TITLE: "To apply for an open task:",
|
||||
DESCRIPTION: [
|
||||
"Explore the <a href='https://github.com/privacy-scaling-explorations/acceleration-program/issues?q=is%3Aopen+is%3Aissue+-label%3A%22Application+Proposal%22+-label%3A%22WIP%22+' target='_blank'>Open Task RFP List</a>",
|
||||
"Apply using this <a href='https://github.com/privacy-scaling-explorations/acceleration-program/issues/new?assignees=&labels=&projects=&template=proposal-for-applicant.md&title=' target='_blank'>template</a>",
|
||||
],
|
||||
},
|
||||
SUBMIT_IDEA: {
|
||||
TITLE: "To submit your own idea:",
|
||||
DESCRIPTION: [
|
||||
"Submit your idea using this <a href='https://github.com/privacy-scaling-explorations/acceleration-program/issues/new?assignees=&labels=&projects=&template=propose-your-open-task.md&title=' target='_blank'>template</a>",
|
||||
"You can look into this <a href='https://github.com/privacy-scaling-explorations/acceleration-program/blob/main/Doc/Progcrypto%20Grant%20Program.md' target='_blank'>idea pool</a> and find one and submit here",
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
PROJECTS_PAGE: {
|
||||
TITLE: "Explore our Project Library",
|
||||
SUBTITLE:
|
||||
"Everything PSE works on is public and open source. All of our projects, whether research or development, are resources you can learn from and build with.",
|
||||
},
|
||||
RESEARCH_PAGE: {
|
||||
TITLE: "Research",
|
||||
SUBTITLE:
|
||||
"Our research model is exploratory, iterative, and full-stack. We work on areas that are often overlooked by academia or industry — foundational concepts that need clarity, implementation gaps that have stalled progress, and risky ideas with uncertain but transformative potential. Sometimes our research unlocks a new breakthrough that leads to prototypes, and sometimes we just clarify assumptions and fill in theoretical gaps. We believe meaningful progress comes from applying research to real-world needs. Our work is open source, and we maintain a feedback loop so that challenges from the field can help shape our focus. We aim to support the broader ecosystem by systematizing knowledge, benchmarking new primitives, and offering credible guidance to advance the world of cryptography.",
|
||||
ACTIVE_RESEARCH: "Active Research",
|
||||
PAST_RESEARCH: "Past Research",
|
||||
},
|
||||
RESOURCES_PAGE: {
|
||||
TITLE: "Resources",
|
||||
SUBTITLE:
|
||||
"This list was compiled by our community. Submit an issue on our Github page to add a resource to this list.",
|
||||
ON_THIS_PAGE: "On this page",
|
||||
EDIT_RESOURCES: "Edit resources",
|
||||
ADD_SOURCE: "Add a source",
|
||||
ADD_RESOURCE_QUESTION: "Didn't find what you are looking for?",
|
||||
NAV: {
|
||||
GET_INVOLVED: "Get involved",
|
||||
LEARN: "Learn",
|
||||
BUILD: "Build",
|
||||
DESIGN: "Design",
|
||||
},
|
||||
},
|
||||
WHAT_WE_DO_SECTION: {
|
||||
WHAT_WE_DO: "What we do",
|
||||
WHAT_WE_DO_DESCRIPTION:
|
||||
"PSE is a multidisciplinary team creating open source privacy and scaling tools for the next generation's internet.",
|
||||
PRIVACY: {
|
||||
TITLE: "Privacy",
|
||||
DESCRIPTION:
|
||||
"We believe privacy is a social good that should be accessible to everyone. That's why we're creating open source tools that help people choose what, how, when, and where they share.",
|
||||
},
|
||||
SCALING: {
|
||||
TITLE: "Scaling",
|
||||
DESCRIPTION:
|
||||
"Our infrastructure helps communities grow by making Ethereum more efficient and accessible. From account abstraction and reducing transaction costs, to rollups and zkEVM, we are building towards an interoperable future.",
|
||||
},
|
||||
EXPLORATIONS: {
|
||||
TITLE: "Explorations",
|
||||
DESCRIPTION:
|
||||
"We are mapping the emerging zero knowledge ecosystem through collective experimentation. We collaborate, share what we learn, and welcome contributions from around the world.",
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -2,7 +2,6 @@ import "@/styles/globals.css"
|
||||
import { Metadata, Viewport } from "next"
|
||||
|
||||
import { siteConfig } from "@/config/site"
|
||||
import { languages } from "./i18n/settings"
|
||||
import { QueryClientProviderLayout } from "@/components/layouts/QueryProviderLayout"
|
||||
|
||||
import { DM_Sans, Inter, Space_Grotesk } from "next/font/google"
|
||||
@@ -39,10 +38,6 @@ const sans = DM_Sans({
|
||||
|
||||
const fonts = [inter, display, sans]
|
||||
|
||||
export async function generateStaticParams() {
|
||||
return languages.map((language) => ({ language }))
|
||||
}
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: {
|
||||
default: siteConfig.name,
|
||||
|
||||
@@ -5,33 +5,29 @@ import React from "react"
|
||||
import Image from "next/image"
|
||||
import Link from "next/link"
|
||||
import { Metadata } from "next"
|
||||
import { AppContent } from "@/components/ui/app-content"
|
||||
|
||||
import { LangProps } from "@/types/common"
|
||||
import { fontDisplay, fontSans } from "@/lib/fonts"
|
||||
import { Button } from "@/components/ui/button"
|
||||
import { SiteHeader } from "@/components/site-header"
|
||||
import { TailwindIndicator } from "@/components/tailwind-indicator"
|
||||
|
||||
import { useTranslation } from "./i18n/client"
|
||||
import { LABELS } from "./labels"
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "404: Page Not Found",
|
||||
}
|
||||
|
||||
export default function NotFound({ lang }: LangProps["params"]) {
|
||||
const { t } = useTranslation(lang, "common")
|
||||
|
||||
export default function NotFound() {
|
||||
return (
|
||||
<html
|
||||
lang={lang}
|
||||
lang="en"
|
||||
className={`${fontSans.variable} ${fontDisplay.variable}`}
|
||||
suppressHydrationWarning
|
||||
>
|
||||
<head />
|
||||
<body className="min-h-screen">
|
||||
<div className="relative flex h-screen flex-col bg-anakiwa-50">
|
||||
<SiteHeader lang={lang} />
|
||||
<SiteHeader />
|
||||
<div className="container m-auto">
|
||||
<div className="-mt-16 flex flex-col gap-7">
|
||||
<div className="flex flex-col items-center justify-center gap-3 text-center">
|
||||
@@ -46,15 +42,15 @@ export default function NotFound({ lang }: LangProps["params"]) {
|
||||
</div>
|
||||
<div className="flex flex-col gap-5">
|
||||
<span className="font-display text-2xl font-bold text-tuatara-950 md:text-6xl">
|
||||
{t("error.404.title")}
|
||||
{LABELS.COMMON.ERROR["404"].TITLE}
|
||||
</span>
|
||||
<span className="font-sans text-base font-normal md:text-lg">
|
||||
{t("error.404.description")}
|
||||
{LABELS.COMMON.ERROR["404"].DESCRIPTION}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<Link href="/" className="mx-auto">
|
||||
<Button variant="black">{t("goToHome")}</Button>
|
||||
<Button variant="black">{LABELS.COMMON.GO_TO_HOME}</Button>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -5,7 +5,6 @@ import { Article } from "@/lib/blog"
|
||||
import { ArticleListCard } from "./article-list-card"
|
||||
import { cn, getBackgroundImage } from "@/lib/utils"
|
||||
import Link from "next/link"
|
||||
import { useTranslation } from "react-i18next"
|
||||
import { cva } from "class-variance-authority"
|
||||
|
||||
const ArticleTitle = cva(
|
||||
@@ -42,8 +41,6 @@ const ArticleInEvidenceCard = ({
|
||||
contentClassName?: string
|
||||
showDate?: boolean
|
||||
}) => {
|
||||
const { t } = useTranslation("blog-page")
|
||||
|
||||
const hideTldr = variant === "compact"
|
||||
|
||||
const formatDate = (dateString: string) => {
|
||||
@@ -161,13 +158,11 @@ async function fetchArticles(tag?: string) {
|
||||
}
|
||||
|
||||
interface ArticlesListProps {
|
||||
lang: string
|
||||
tag?: string
|
||||
fallback?: React.ReactNode
|
||||
}
|
||||
|
||||
const ArticlesList: React.FC<ArticlesListProps> = ({
|
||||
lang,
|
||||
tag,
|
||||
fallback = null,
|
||||
}: ArticlesListProps) => {
|
||||
@@ -226,9 +221,7 @@ const ArticlesList: React.FC<ArticlesListProps> = ({
|
||||
)}
|
||||
<div className="flex flex-col gap-5 lg:gap-14">
|
||||
{otherArticles.map((article: Article) => {
|
||||
return (
|
||||
<ArticleListCard key={article.id} lang={lang} article={article} />
|
||||
)
|
||||
return <ArticleListCard key={article.id} article={article} />
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -5,7 +5,7 @@ import { Button } from "../ui/button"
|
||||
import { Article } from "@/lib/blog"
|
||||
import { cn } from "@/lib/utils"
|
||||
import Link from "next/link"
|
||||
import { useTranslation } from "react-i18next"
|
||||
import { LABELS } from "@/app/labels"
|
||||
|
||||
interface ArticleInEvidenceCardProps {
|
||||
article: Article
|
||||
@@ -48,8 +48,6 @@ export const ArticleInEvidenceCard = async ({
|
||||
contentClassName = "",
|
||||
showDate = true,
|
||||
}: ArticleInEvidenceCardProps) => {
|
||||
const { t } = useTranslation("blog-page")
|
||||
|
||||
const hideTldr = variant === "compact"
|
||||
|
||||
const formatDate = (dateString: string) => {
|
||||
@@ -126,7 +124,9 @@ export const ArticleInEvidenceCard = async ({
|
||||
<Link href={`/blog/${article.id}`} className="ml-auto mt-4">
|
||||
<Button className="uppercase ml-auto" variant="secondary">
|
||||
<div className="flex items-center gap-2">
|
||||
<span className="!text-center">{t("readMore")}</span>
|
||||
<span className="!text-center">
|
||||
{LABELS.BLOG_PAGE.READ_MORE}
|
||||
</span>
|
||||
<Icons.arrowRight className="w-4 h-4" />
|
||||
</div>
|
||||
</Button>
|
||||
|
||||
@@ -5,15 +5,13 @@ import { Article } from "@/lib/blog"
|
||||
import { getBackgroundImage } from "@/lib/utils"
|
||||
|
||||
export const ArticleListCard = ({
|
||||
lang,
|
||||
article,
|
||||
lineClamp = false,
|
||||
}: {
|
||||
lang: string
|
||||
article: Article
|
||||
lineClamp?: boolean
|
||||
}) => {
|
||||
const url = `/${lang}/blog/${article.id}`
|
||||
const url = `/blog/${article.id}`
|
||||
|
||||
const formattedDate = new Date(article.date).toLocaleDateString("en-US", {
|
||||
month: "long",
|
||||
|
||||
@@ -1,17 +1,14 @@
|
||||
"use client"
|
||||
|
||||
import { LocaleTypes } from "@/app/i18n/settings"
|
||||
import { useProjectFiltersState } from "@/state/useProjectFiltersState"
|
||||
import ProjectCard from "../project/project-card"
|
||||
|
||||
interface BlogArticleRelatedProjectsProps {
|
||||
projectsIds: string[]
|
||||
lang: LocaleTypes
|
||||
}
|
||||
|
||||
export const BlogArticleRelatedProjects = ({
|
||||
projectsIds,
|
||||
lang,
|
||||
}: BlogArticleRelatedProjectsProps) => {
|
||||
const { projects: allProjects, researchs: allResearchs } =
|
||||
useProjectFiltersState((state) => state)
|
||||
@@ -32,7 +29,6 @@ export const BlogArticleRelatedProjects = ({
|
||||
<ProjectCard
|
||||
key={project.id}
|
||||
project={project}
|
||||
lang={lang}
|
||||
showBanner
|
||||
border
|
||||
showLinks={false}
|
||||
|
||||
@@ -3,7 +3,6 @@ import Link from "next/link"
|
||||
import { BlogArticleCard } from "./blog-article-card"
|
||||
|
||||
interface BlogArticlesProps {
|
||||
lang: string
|
||||
tag?: string
|
||||
}
|
||||
|
||||
@@ -14,13 +13,7 @@ async function fetchArticles(tag?: string) {
|
||||
})
|
||||
}
|
||||
|
||||
function ArticlesGrid({
|
||||
articles,
|
||||
lang,
|
||||
}: {
|
||||
articles: Article[]
|
||||
lang: string
|
||||
}) {
|
||||
function ArticlesGrid({ articles }: { articles: Article[] }) {
|
||||
return (
|
||||
<div className="grid grid-cols-1 lg:grid-cols-3 gap-8">
|
||||
{articles.length === 0 && (
|
||||
@@ -30,7 +23,7 @@ function ArticlesGrid({
|
||||
)}
|
||||
{articles.map(
|
||||
({ id, title, image, tldr = "", date, authors, content }: Article) => {
|
||||
const url = `/${lang}/blog/${id}`
|
||||
const url = `/blog/${id}`
|
||||
return (
|
||||
<div key={id} className="flex h-full">
|
||||
<Link
|
||||
@@ -55,7 +48,7 @@ function ArticlesGrid({
|
||||
)
|
||||
}
|
||||
|
||||
export async function BlogArticles({ lang, tag }: BlogArticlesProps) {
|
||||
export async function BlogArticles({ tag }: BlogArticlesProps) {
|
||||
const articles = await fetchArticles(tag)
|
||||
return <ArticlesGrid articles={articles} lang={lang} />
|
||||
return <ArticlesGrid articles={articles} />
|
||||
}
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
import Blog, { Article, getArticles } from "@/lib/blog"
|
||||
import { Article, getArticles } from "@/lib/blog"
|
||||
import Link from "next/link"
|
||||
import { AppContent } from "../ui/app-content"
|
||||
import { Markdown } from "../ui/markdown"
|
||||
import { BlogArticleCard } from "./blog-article-card"
|
||||
import { BlogArticleRelatedProjects } from "./blog-article-related-projects"
|
||||
import { LocaleTypes } from "@/app/i18n/settings"
|
||||
import { ArticleListCard } from "./article-list-card"
|
||||
import Image from "next/image"
|
||||
|
||||
interface BlogContentProps {
|
||||
post: Article
|
||||
lang: LocaleTypes
|
||||
isNewsletter?: boolean
|
||||
}
|
||||
|
||||
@@ -48,11 +45,7 @@ export function BlogImage({ image, alt, description }: BlogImageProps) {
|
||||
)
|
||||
}
|
||||
|
||||
export function BlogContent({
|
||||
post,
|
||||
lang,
|
||||
isNewsletter = false,
|
||||
}: BlogContentProps) {
|
||||
export function BlogContent({ post, isNewsletter = false }: BlogContentProps) {
|
||||
const articles = getArticles() ?? []
|
||||
const articleIndex = articles.findIndex((article) => article.id === post.id)
|
||||
|
||||
@@ -71,10 +64,7 @@ export function BlogContent({
|
||||
</div>
|
||||
|
||||
{!isNewsletter && (
|
||||
<BlogArticleRelatedProjects
|
||||
projectsIds={post.projects ?? []}
|
||||
lang={lang}
|
||||
/>
|
||||
<BlogArticleRelatedProjects projectsIds={post.projects ?? []} />
|
||||
)}
|
||||
|
||||
{moreArticles?.length > 0 && (
|
||||
@@ -95,7 +85,6 @@ export function BlogContent({
|
||||
return (
|
||||
<ArticleListCard
|
||||
key={article.id}
|
||||
lang={lang}
|
||||
article={article}
|
||||
lineClamp
|
||||
/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { useTranslation } from "@/app/i18n"
|
||||
import { LABELS } from "@/app/labels"
|
||||
import { AppContent } from "../ui/app-content"
|
||||
import { getArticles, Article } from "@/lib/blog"
|
||||
import Link from "next/link"
|
||||
@@ -133,9 +133,8 @@ const ArticleInEvidenceCard = ({
|
||||
)
|
||||
}
|
||||
|
||||
export async function BlogRecentArticles({ lang }: { lang: any }) {
|
||||
export async function BlogRecentArticles() {
|
||||
const articles = getArticles({ limit: 4 })
|
||||
const { t } = await useTranslation(lang, "blog-page")
|
||||
|
||||
const lastArticle = articles[0]
|
||||
const otherArticles = articles.slice(1)
|
||||
@@ -145,7 +144,7 @@ export async function BlogRecentArticles({ lang }: { lang: any }) {
|
||||
<AppContent>
|
||||
<div className="flex flex-col gap-10">
|
||||
<h3 className="text-base font-bold font-sans text-center uppercase tracking-[3.36px]">
|
||||
{t("recentArticles")}
|
||||
{LABELS.BLOG_PAGE.RECENT_ARTICLES}
|
||||
</h3>
|
||||
<div className="grid grid-cols-1 lg:grid-cols-5 gap-10 lg:gap-x-14 lg:max-w-[1200px] mx-auto relative">
|
||||
<div className="inset-0 relative lg:col-span-3">
|
||||
@@ -178,7 +177,7 @@ export async function BlogRecentArticles({ lang }: { lang: any }) {
|
||||
<Link href="/blog" className="mt-auto">
|
||||
<Button className="uppercase">
|
||||
<div className="flex items-center gap-2">
|
||||
<span>{t("seeMore")}</span>
|
||||
<span>{LABELS.BLOG_PAGE.SEE_MORE}</span>
|
||||
<Icons.arrowRight className="w-4 h-4" />
|
||||
</div>
|
||||
</Button>
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
"use client"
|
||||
|
||||
import { LocaleTypes } from "@/app/i18n/settings"
|
||||
import { ProjectInterface } from "@/lib/types"
|
||||
import { AppContent } from "../ui/app-content"
|
||||
import { Article } from "@/lib/blog"
|
||||
@@ -9,10 +8,8 @@ import { useGetProjectRelatedArticles } from "@/hooks/useGetProjectRelatedArticl
|
||||
|
||||
export const ProjectBlogArticles = ({
|
||||
project,
|
||||
lang,
|
||||
}: {
|
||||
project: ProjectInterface
|
||||
lang: LocaleTypes
|
||||
}) => {
|
||||
const { articles, loading } = useGetProjectRelatedArticles({
|
||||
projectId: project.id,
|
||||
@@ -73,9 +70,7 @@ export const ProjectBlogArticles = ({
|
||||
</p>
|
||||
)}
|
||||
{articles.map((article: Article) => {
|
||||
return (
|
||||
<ArticleListCard key={article.id} lang={lang} article={article} />
|
||||
)
|
||||
return <ArticleListCard key={article.id} article={article} />
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user