Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Translatathon pages #13444

Merged
merged 56 commits into from
Jul 25, 2024
Merged
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
3b686d1
setup translatathon pages
corwintines Jul 14, 2024
d32056c
setup hero
corwintines Jul 15, 2024
757658c
setup details page
corwintines Jul 15, 2024
b11cb53
details page
corwintines Jul 16, 2024
4b303c8
local communities page
corwintines Jul 16, 2024
b7f7bd5
update ApplyNow date
corwintines Jul 16, 2024
559113b
DateAndTimeline
corwintines Jul 16, 2024
2db8fb5
TranslatathonInANutshell component
corwintines Jul 16, 2024
caa64b5
who should participate section
corwintines Jul 16, 2024
cd09c51
callout components
corwintines Jul 18, 2024
fb94aaa
updating content
corwintines Jul 18, 2024
ad62743
Add instructions
corwintines Jul 22, 2024
62f58ea
fix image
corwintines Jul 22, 2024
59c69a1
image path issue
corwintines Jul 22, 2024
e00fa2d
Merge branch 'dev' into translatathonPages
wackerow Jul 22, 2024
23a576b
chore: update blur placeholders
wackerow Jul 22, 2024
6a223f9
chore: linting
wackerow Jul 22, 2024
5720686
fix: typo
wackerow Jul 22, 2024
8b572f4
content update
corwintines Jul 23, 2024
ab4b27c
TranslatathonBanner
corwintines Jul 23, 2024
656d70a
CountdownBanner
corwintines Jul 23, 2024
069cc7a
Add page 2 content
lukassim Jul 24, 2024
b1fc117
Some fixes & emojis
lukassim Jul 24, 2024
6b4d029
More fixes
lukassim Jul 24, 2024
6482231
change requests
corwintines Jul 24, 2024
82a4fd3
update apply link
corwintines Jul 24, 2024
0d06d30
Update public/content/translatathon/details/index.md
corwintines Jul 24, 2024
513f93e
edit
corwintines Jul 24, 2024
604965d
Update public/content/translatathon/index.md
corwintines Jul 24, 2024
1f77cfe
spacing
corwintines Jul 24, 2024
b58a527
Update public/content/translatathon/details/index.md
corwintines Jul 24, 2024
43a4e24
Update public/content/translatathon/index.md
lukassim Jul 24, 2024
092c837
Update public/content/translatathon/index.md
lukassim Jul 24, 2024
099da0b
Update src/components/Translatathon/StepByStepInstructions.tsx
lukassim Jul 24, 2024
e87e947
Update src/components/Translatathon/StepByStepInstructions.tsx
lukassim Jul 24, 2024
edeb85e
Updates from feedback
lukassim Jul 24, 2024
79424fd
Merge branch 'translatathonPages' of https://github.com/ethereum/ethe…
lukassim Jul 24, 2024
6ed5028
content: readability adjustments
wackerow Jul 24, 2024
78df12b
fix: container and cards positioning
wackerow Jul 24, 2024
feed60e
refactor: use svg hero image
wackerow Jul 25, 2024
0d15098
content: capitalization and typo polishes
wackerow Jul 25, 2024
39b2418
fix: use specific time and timezone
wackerow Jul 25, 2024
f99b099
refactor: use margin over line breaks
wackerow Jul 25, 2024
55bd989
chore: disable only apply button
wackerow Jul 25, 2024
d86fdb1
refactor: extract and use reusable constants
wackerow Jul 25, 2024
4473882
fix: disable apply button logic
wackerow Jul 25, 2024
1cde113
chore: clean up links and cta button labels
wackerow Jul 25, 2024
c058db9
chore: increase dolphin image quality
wackerow Jul 25, 2024
d3459bf
chore: update menu label
wackerow Jul 25, 2024
b535499
chore: linting, fix link
wackerow Jul 25, 2024
b4b7b27
Merge branch 'staging' into translatathonPages
corwintines Jul 25, 2024
c6e6eff
Update content-developers-docs-design-and-ux-dex-design-best-practice…
corwintines Jul 25, 2024
ef42935
copy
corwintines Jul 25, 2024
58ae555
fix prop
corwintines Jul 25, 2024
6b1aca2
fix href
corwintines Jul 25, 2024
3ee5f2d
move to /contributing/translatathon
corwintines Jul 25, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 78 additions & 0 deletions public/content/translatathon/details/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
---
title: Details and rules
lang: en
template: translatathon
---

![](./participate.png)

The Translatathon is open and anyone can participate by filling out the application form and joining the project in Crowdin.

Translators collect points by suggesting translations for untranslated strings in their language in the Crowdin editor during the translation period (August 9th - August 18th).

Each participants final score is determined by the number of words they have translated during the translation period and any potential multipliers they’ve collected.

### Getting started

The translation process takes place in the ethereum.org project in Crowdin and translators suggest their translations for untranslated strings, made up of almost all of content from the ethereum.org website.

Translations are suggested directly in the online editor so there is no need to download or upload any files or deliverables. Each translated word is tracked and counted.

**1) Join the project**
- To start contributing, you will need to join the [ethereum.org project in Crowdin](https://crowdin.com/project/ethereum-org)
- You will need to sign in or create an account - all that is required is an email address and password

**2) Select your language**
- Find your language on the list of target languages and open it by clicking on its name or flag
- If you would like to translate into a language that isn’t available, reach out to [Ethereum.org Team](https://crowdin.com/profile/ethdotorg) on crowdin or send us an email to translations@ethereum.org and we will add new additional target languages per request

**3) Open an untranslated file**
- Find the first untranslated file to start translating. The folders containing the source files are based on priority - (1) Homepage, 2) Essential learning, 3) Essentials, 4) Exploring, etc. so you should start translating the first folder that contains untranslated files
- Each file has a progress indicator showing how much of the translatable content in the file has been translated and approved… if translation progress for any file is below 100%, please translate it

**4) Translate the untranslated strings**
- When you open a file to translate, make sure you are only translating untranslated strings!
- Each string has a status indicator that shows whether it’s *Translated*, *Untranslated*, or *Approved*. If a source string already has a suggested translation in your language, there is no need to translate it
- You can also filter strings in the editor to show *Untranslated first* or *Untranslated only*

For a detailed guide to navigating and using the Crowdin online editor, we recommend all Translatathon participants to read our ‘[How to translate](https://ethereum.org/en/contributing/translation-program/how-to-translate/)’ guide.

To learn more about the conventions and best practices for translating ethereum.org content, yo can also check out our [translation style guide](https://ethereum.org/en/contributing/translation-program/translators-guide/).

### Prizes

The total prize pool for the Translatathon is 30,000$.

A detailed breakdown of prizes will be announced at the end of the application period.

### Evaluation process

We work with [Acolad](https://www.acolad.com/), a leading localization agency, on all review and QA processes for ethereum.org content.
Copy link
Contributor

@konopkja konopkja Jul 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dont understand why this sentence is here, seems excessive and could be deleted. Is there any particular reason? Did they want to be mentioned?


As part of the evaluation process for the Translatathon, all translations will be subject to a QA and feedback step, where professional linguists will evaluate submissions by individual translators based on quality and accuracy.
wackerow marked this conversation as resolved.
Show resolved Hide resolved

We will also be running anti-machine translation measures, with Crowdin providing some tools that automatically detect machine translations.
corwintines marked this conversation as resolved.
Show resolved Hide resolved

While translation quality will not play a critical role in the scoring, any participants found using machine translation or suggesting low-quality and inaccurate translations will be disqualified and not eligible to compete for prizes!
corwintines marked this conversation as resolved.
Show resolved Hide resolved

The evaluation period will take place between August 19th-28th and the results will be announced on the ethereum.org community call on August 29th.

All translations will also be subject to a thorough review before being added to the website.

### FAQ - Frequently asked questions

<ExpandableCard title="Who can I contact if I need help or have questions, feedback, or ideas?">
<ul>
<li>In Crowdin, you can send a direct message to <a href="https://crowdin.com/profile/ethdotorg"><strong>Ethereum.org Team</strong></a></li>
corwintines marked this conversation as resolved.
Show resolved Hide resolved
<li>On the ethereum.org Discord, you can send a message in the <strong>#translatathon</strong> & <strong>#translate</strong> channels</li>
<li>You can send an email to <strong>translations@ethereum.org</strong></li>
</ul>
</ExpandableCard>

<ExpandableCard title="Which languages can I translate into?">
You can translate into any language! It is recommended to only translate into your native language to ensure sufficient quality, but in short, all language available in Crowdin are in scope for the Translatathon.

If you want to translate into a language that isn't available in Crowdin, reach out to us and we will add any language per request.
</ExpandableCard>

<ApplyNow />
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
99 changes: 99 additions & 0 deletions public/content/translatathon/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
---
title: Translatathon hub
lang: en
template: translatathon
---

<CardContainer>
<EmojiCard
emoji=':globe_with_meridians:'
title='Translate ethereum.org'
description='Translate ethereum.org content into your language and help make the website more accessible'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
description='Translate ethereum.org content into your language and help make the website more accessible'
description='Translate our articles into your language so that more people can learn about Ethereum'

/>
<EmojiCard
emoji=':trophy:'
title='Win prizes'
description='Compete for your share of 30,000$ in prizes and opportunities to win Devcon tickets'
/>
<EmojiCard
emoji=':bulb:'
title='Learn about Ethereum'
description='Learn about different Ethereum related topics while contributing and competing'
lukassim marked this conversation as resolved.
Show resolved Hide resolved
/>
</CardContainer>

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there needs to be more space between the cards and the first headline on the page

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@corwintines Could you look into this please?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking into this now

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pushed a commit changing the layout styes for this CardContainer component. Should fix this issue.

## Introduction

The ethereum.org Translation program is an initiative to translate the website into as many languages as possible in order to make educational content around Ethereum content and onboarding resources for beginners accessible to everyone, regardless of the language they speak.
lukassim marked this conversation as resolved.
Show resolved Hide resolved

As part of the Translation program, we are organizing the 2nd edition of the Translatation with the aim of incentivizing translation contributions in less active languages, increasing the number of languages and amount of content available on the site, onboard new contributors and reward our existing ones.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
As part of the Translation program, we are organizing the 2nd edition of the Translatation with the aim of incentivizing translation contributions in less active languages, increasing the number of languages and amount of content available on the site, onboard new contributors and reward our existing ones.
As part of the Translation program, we are organizing the 2nd edition of the Translatathon. Our aim is to promote translation contributions to less active languages and increase the amount of translated articles on the website.


If you are bilingual and want to help make Ethereum content more accessible while competing for prizes, read on to learn more!

[Learn more about the translation program](/contributing/translation-program/)

## Dates and timeline

Here are the important dates for the 2024 Translatathon
corwintines marked this conversation as resolved.
Show resolved Hide resolved

<DatesAndTimeline />

<br/><br/>

<TranslatathonInANutshell />

## Participate

![](./participate.png)

### Who should participate

<TwoColumnContent>
<CardContent>
<h3>Who can participate?</h3>
wackerow marked this conversation as resolved.
Show resolved Hide resolved
In order to participate, you need to be older than 18 years and fluent in at least one language in addition to English.
wackerow marked this conversation as resolved.
Show resolved Hide resolved
</CardContent>
<CardContent>
<h3>Do I need to be a translator?</h3>
No. You simply have to be bilingual and suggest human translations (using machine translation is forbidden!) to the best of your ability, no professional experience required.
</CardContent>
</TwoColumnContent>

<TwoColumnContent>
<CardContent>
<h3>How much time do I have to commit?</h3>
As much as you want. The minimum threshold to be eligible for participatory prizes is 100 translated words, which takes about 10-20 minutes to complete, while competing for the top prizes will require a larger time commitment.
</CardContent>
<CardContent>
<h3>Do I need to be familiar with Ethereum?</h3>
No. While being familiar with Ethereum can help with your productivity and quality, the Translatathon is as much a learning experience as it is a competition, and everyone is invited to join and learn more about Ethereum while participating.
</CardContent>
</TwoColumnContent>

<TwoColumnContent>
<CardContent>
<h3>What do I need to participate?</h3>
We recommend using a computer to translate since using Crowdin will be optimal on desktop. You’ll also need an internet connection and you’re good to go.
wackerow marked this conversation as resolved.
Show resolved Hide resolved
</CardContent>
</TwoColumnContent>

For more details, [see the full Terms & conditions](/translatathon/terms-and-conditions)

### Step by step instructions

<StepByStepInstructions />

## Stay up to date

<!-- TODO: Uncomment when the hubs page is ready -->
<!-- <TranslationHubCallout>
<h3 style={{margin:0}}>Translataton hubs</h3>

THis year we bring IRL community hugs to join local communities and help translate.

this hubs are located all over the world, find out if there is one close to you and jion the community
</TranslationHubCallout> -->

<TranslatathonCalendar />

<ApplyNow />
Binary file added public/content/translatathon/participate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
43 changes: 43 additions & 0 deletions public/content/translatathon/terms-and-conditions/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
title: Terms and conditions
lang: en
template: translatathon
---

The Ethereum.org Translation Competition, also referred to as the “Translatathon”, is an experimental initiative by the ethereum.org team to incentivise and reward contributions to the ethereum.org Translation Program.

## Modification and Termination.

We reserve the right to modify the rules or to terminate the Translatathon at any time, without prior notice. All changes will be effective immediately upon announcement.

## Eligibility, Judging, and Prizes

The determination of eligibility, scoring and judging methodology, and prize distribution fall solely and irrevocably under our discretion.

## Data Privacy

By submitting the application form, applicants and participants confirm that they have read and agree to our Privacy Policy and consent to share with us the requested information, which may include information that constitutes personal data. We will keep all information provided confidential, except for the participants’ provided Crowdin usernames and profile images which may be used in public announcements related to competition results and winners.

## Translation Standards

The use of machine translation tools, as determined by us in our sole discretion, may result in disqualification from the competition. In addition, the submission of incorrect and/or inaccurate translations, as determined by us in our sole discretion, may result in ineligibility for prize consideration. Further, any contributions towards strings that have already been translated or reviewed, as determined by us in our sole discretion, will not be included in the participants’ final score. We reserve the right to make such determinations, which shall be final and binding.

## Intellectual Property

Participants agree that by submitting a translation work during the Translatathon, they grant the Ethereum Foundation an irrevocable, non-exclusive, royalty-free licence to use, reproduce, distribute, display, modify, adapt, create derivative works from, and otherwise alter their translation work. Further, participants agree that their translation works may be made publicly available on the ethereum.org website under an open-source licence, including a Creative Commons licence, which allows others to use, share, and build upon the work.

## Taxes

Any tax implications arising from the receipt of prizes are the sole responsibility of the prize recipient.

## Comprehensively Sanctioned Countries

Participants from regions or countries that are subject to comprehensive international sanctions (including, but not limited to Iran, Cuba, Syria, North Korea, and the Crimea, Donetsk People's Republic and Luhansk People's Republic regions of Ukraine) will not be eligible for participation.

## Waiver of Liability

Participants agree that the Ethereum Foundation, its affiliates, and all of their respective officers, directors, employees, and agents will have no liability whatsoever for any injuries, losses, or damages of any kind arising from or in connection with their participation in the Translatathon.

## Governing Law

Any dispute or claim arising out of or relating to the Translatathon (in each case, including non-contractual disputes or claims), shall be governed by and construed in accordance with the laws of Switzerland without giving effect to any choice or conflict of law provision or rule (whether of Switzerland or any other jurisdiction).
Binary file added public/images/heroes/translatathon-hero.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/translatathon/kipu-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/translatathon/round-table.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/translatathon/settlement.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/translatathon/walking.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion src/components/Callout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ const Callout = ({
<Image src={image} alt={alt || ""} height={200} />
</Center>
)}
<Flex direction="column" justify="space-between" mt={10} h="full">
<Flex direction="column" justify="space-between" h="full">
<div>
{emoji && <Emoji text={emoji} fontSize="5xl" />}
<OldHeading as="h3" fontSize="2xl" lineHeight={1.4}>
Expand Down
6 changes: 3 additions & 3 deletions src/components/Hero/ContentHero/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ import { CallToAction } from "../CallToAction"
export type ContentHeroProps = Omit<CommonHeroProps<string>, "header">

const ContentHero = (props: ContentHeroProps) => {
const { breadcrumbs, heroImg, buttons, title, description, blurDataURL } =
const { breadcrumbs, heroImg, buttons, title, description, blurDataURL, maxHeight } =
props
return (
<Box bgImg="bgMainGradient">
<SimpleGrid columns={{ base: 1, lg: 2 }} maxW="1536px" mx="auto">
<SimpleGrid columns={{ base: 1, lg: 2 }} maxW="1536px" mx="auto" alignItems='center'>
<Box
order={{ lg: 1 }}
height={{ base: "300px", md: "400px", lg: "full" }}
height={{ base: "300px", md: "400px", lg: maxHeight ? maxHeight : "full" }}
>
<Image
src={heroImg}
Expand Down
34 changes: 34 additions & 0 deletions src/components/Translatathon/ApplyNow.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { Box, Flex } from "@chakra-ui/react"

import { ButtonLink } from "@/components/Buttons"
import Callout from "@/components/Callout"

import DolphinImage from "@/public/images/translatathon/translatathon_dolphin.png"

// TODO: Confirm deadline for applying

export const ApplyNow = () => {
const dateToday = new Date()
const deadline = new Date("August 6, 2024")

if (dateToday < deadline) {
return (
<Box pt={12}>
<Callout
flex="1 1 416px"
image={DolphinImage}
titleKey="page-translatathon:translatathon-apply-now"
descriptionKey="page-translatathon:translatathon-apply-now-desc"
alignItems="center"
textAlign="center"
>
<Flex m="auto">
<ButtonLink href="/">Apply now</ButtonLink>
</Flex>
</Callout>
</Box>
)
} else {
return <></>
}
}
57 changes: 57 additions & 0 deletions src/components/Translatathon/CountdownBanner.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import { useEffect, useState } from "react"

import BannerNotification from "@/components/Banners/BannerNotification"

export const CountdownBanner = () => {
const [countdown, setCountdown] = useState("")

const translatathonStartDate = new Date("August 9, 2024 12:00:00 UTC")
const translatathonEndDate = new Date("August 18, 2024 12:00:00 UTC")

const calculateCountdown = (targetDate: Date) => {
const currentTime = new Date()
const timeDifference = targetDate.getTime() - currentTime.getTime()

const days = Math.floor(timeDifference / (1000 * 60 * 60 * 24))
const hours = Math.floor(
(timeDifference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)
)
const minutes = Math.floor(
(timeDifference % (1000 * 60 * 60)) / (1000 * 60)
)
const seconds = Math.floor((timeDifference % (1000 * 60)) / 1000)

return `${days} days, ${hours} hours, ${minutes} minutes, ${seconds} seconds`
}

useEffect(() => {
const interval = setInterval(() => {
const newCountdown =
new Date() < translatathonStartDate
? calculateCountdown(translatathonStartDate)
: calculateCountdown(translatathonEndDate)
setCountdown(newCountdown)
}, 1000)

return () => {
clearInterval(interval)
}
}, [])

return new Date() < translatathonStartDate ? (
<>
<BannerNotification shouldShow={true}>
Translations start in {countdown}
</BannerNotification>
</>
) : new Date() > translatathonStartDate &&
new Date() < translatathonEndDate ? (
<>
<BannerNotification shouldShow={true}>
Translations end in {countdown}
</BannerNotification>
</>
) : (
<></>
)
}
Loading
Loading