|
1 | | -<% content_for(:title) { "The Ruby Passport — Collect Memories from Ruby Events" } %> |
| 1 | +<% content_for(:title) { t('.title') } %> |
2 | 2 |
|
3 | 3 | <!-- Hero Section --> |
4 | 4 | <section class="min-h-[80vh] flex flex-col items-center justify-center px-6 py-16 bg-gradient-to-b from-slate-50 to-white"> |
|
14 | 14 | data-holographic-card-target="card" |
15 | 15 | > |
16 | 16 | <%= image_tag "the-passport.jpg", |
17 | | - alt: "The Ruby Passport", |
| 17 | + alt: t('.hero.passport_alt'), |
18 | 18 | class: "w-64 md:w-80 lg:w-96 rounded-lg" |
19 | 19 | %> |
20 | 20 | <div |
|
26 | 26 |
|
27 | 27 | <!-- Headline --> |
28 | 28 | <h1 class="text-4xl md:text-5xl lg:text-6xl font-bold text-slate-800 mb-6 leading-tight"> |
29 | | - The Ruby Passport |
| 29 | + <%= t('.hero.heading') %> |
30 | 30 | </h1> |
31 | 31 |
|
32 | 32 | <p class="text-xl md:text-2xl text-slate-600 max-w-2xl mx-auto mb-8 leading-relaxed"> |
33 | | - An in-real-life memorabilia that enables you to collect stamps and memories from the Ruby events you visit. |
| 33 | + <%= t('.hero.tagline') %> |
34 | 34 | </p> |
35 | 35 |
|
36 | 36 | <!-- Status Callout --> |
37 | 37 | <div class="status-callout inline-flex items-center gap-3 px-6 py-4 mb-8"> |
38 | 38 | <span class="text-2xl">🛠</span> |
39 | 39 | <div class="text-left"> |
40 | | - <span class="font-semibold text-amber-800">Current status:</span> |
41 | | - <span class="text-amber-700">We ordered another batch (1000 pieces) in January.</span> |
| 40 | + <span class="font-semibold text-amber-800"><%= t('.hero.status_label') %></span> |
| 41 | + <span class="text-amber-700"><%= t('.hero.status_message') %></span> |
42 | 42 | </div> |
43 | 43 | </div> |
44 | 44 | </div> |
|
48 | 48 | <section class="section-alternate py-20 px-6"> |
49 | 49 | <div class="max-w-3xl mx-auto"> |
50 | 50 | <h2 class="text-3xl md:text-4xl font-bold text-slate-800 text-center mb-12"> |
51 | | - How to use your Passport |
| 51 | + <%= t('.how_to_use.heading') %> |
52 | 52 | </h2> |
53 | 53 |
|
54 | 54 | <div class="space-y-6"> |
55 | 55 | <!-- Step 1 --> |
56 | 56 | <div class="step-card flex gap-5"> |
57 | 57 | <div class="step-number">1</div> |
58 | 58 | <div> |
59 | | - <h3 class="text-xl font-semibold text-slate-800 mb-2">Claim your passport</h3> |
| 59 | + <h3 class="text-xl font-semibold text-slate-800 mb-2"><%= t('.how_to_use.step1.title') %></h3> |
60 | 60 | <p class="text-slate-600 leading-relaxed"> |
61 | | - When you first receive your Passport, scan the QR code or tap the tiny chip on the cover to claim it. |
62 | | - You will be directed to <a href="https://rubyevents.org" class="text-[#9b1c31] hover:underline font-medium">rubyevents.org</a> where you can create your account or claim it to your existing one. |
| 61 | + <%= t('.how_to_use.step1.description_html') %> |
63 | 62 | </p> |
64 | 63 | </div> |
65 | 64 | </div> |
|
68 | 67 | <div class="step-card flex gap-5"> |
69 | 68 | <div class="step-number">2</div> |
70 | 69 | <div> |
71 | | - <h3 class="text-xl font-semibold text-slate-800 mb-2">Fill it with your information</h3> |
| 70 | + <h3 class="text-xl font-semibold text-slate-800 mb-2"><%= t('.how_to_use.step2.title') %></h3> |
72 | 71 | <p class="text-slate-600 leading-relaxed"> |
73 | | - The next thing you should do is fill your passport with your data (real or not, we won't check). |
| 72 | + <%= t('.how_to_use.step2.description') %> |
74 | 73 | </p> |
75 | 74 | </div> |
76 | 75 | </div> |
|
79 | 78 | <div class="step-card flex gap-5"> |
80 | 79 | <div class="step-number">3</div> |
81 | 80 | <div> |
82 | | - <h3 class="text-xl font-semibold text-slate-800 mb-2">Add your photo</h3> |
| 81 | + <h3 class="text-xl font-semibold text-slate-800 mb-2"><%= t('.how_to_use.step3.title') %></h3> |
83 | 82 | <p class="text-slate-600 leading-relaxed"> |
84 | | - The event where you received it might have the required infrastructure to take and print your photo. Go to the embassy booth to do that. |
85 | | - They might also not have it, which is fine — organizing an event like that is a time-consuming task and the budget might not have been there. |
| 83 | + <%= t('.how_to_use.step3.description') %> |
86 | 84 | </p> |
87 | 85 | </div> |
88 | 86 | </div> |
|
91 | 89 | <div class="step-card flex gap-5"> |
92 | 90 | <div class="step-number">4</div> |
93 | 91 | <div> |
94 | | - <h3 class="text-xl font-semibold text-slate-800 mb-2">Add the event stamp</h3> |
| 92 | + <h3 class="text-xl font-semibold text-slate-800 mb-2"><%= t('.how_to_use.step4.title') %></h3> |
95 | 93 | <p class="text-slate-600 leading-relaxed"> |
96 | | - The event might have one or more stamps for you. Get them all! 🙌 |
| 94 | + <%= t('.how_to_use.step4.description') %> |
97 | 95 | </p> |
98 | 96 | </div> |
99 | 97 | </div> |
|
102 | 100 | <div class="step-card flex gap-5"> |
103 | 101 | <div class="step-number">5</div> |
104 | 102 | <div> |
105 | | - <h3 class="text-xl font-semibold text-slate-800 mb-2">Bring your Ruby Passport to all events</h3> |
| 103 | + <h3 class="text-xl font-semibold text-slate-800 mb-2"><%= t('.how_to_use.step5.title') %></h3> |
106 | 104 | <p class="text-slate-600 leading-relaxed"> |
107 | | - Every event will have its own stamp and surprises for the Ruby Passport, so you better have it on you. |
108 | | - Plus, you might even be able to connect with a few friends. |
| 105 | + <%= t('.how_to_use.step5.description') %> |
109 | 106 | </p> |
110 | 107 | </div> |
111 | 108 | </div> |
|
117 | 114 | <section class="py-20 px-6 bg-white"> |
118 | 115 | <div class="max-w-3xl mx-auto text-center"> |
119 | 116 | <h2 class="text-3xl md:text-4xl font-bold text-slate-800 mb-6"> |
120 | | - Are you an event organizer? |
| 117 | + <%= t('.organizer.heading') %> |
121 | 118 | </h2> |
122 | 119 | <p class="text-lg text-slate-600 mb-8 max-w-xl mx-auto"> |
123 | | - Get everything you need to bring the Ruby Passport experience to your event. |
| 120 | + <%= t('.organizer.description') %> |
124 | 121 | </p> |
125 | 122 | <a href="<%= organizer_path %>" class="btn-primary"> |
126 | 123 | <span>📂</span> |
127 | | - Ruby Passport (organizer's guide) |
| 124 | + <%= t('.organizer.cta') %> |
128 | 125 | </a> |
129 | 126 | </div> |
130 | 127 | </section> |
|
133 | 130 | <section class="section-alternate py-20 px-6"> |
134 | 131 | <div class="max-w-4xl mx-auto"> |
135 | 132 | <h2 class="text-3xl md:text-4xl font-bold text-slate-800 text-center mb-12"> |
136 | | - Participating Events |
| 133 | + <%= t('.events.heading') %> |
137 | 134 | </h2> |
138 | 135 |
|
139 | 136 | <div class="flex flex-wrap justify-center gap-3"> |
|
151 | 148 | <span class="event-badge">Hamburg on Ruby</span> |
152 | 149 | <a href="https://rubycon.it/" class="event-badge" target="_blank" rel="noopener">Rubycon Italy</a> |
153 | 150 | <a href="mailto:adrian@adrianthedev.com" class="event-badge bg-[#9b1c31] text-white border-[#9b1c31] hover:bg-[#7a1627]"> |
154 | | - ✨ Your event here |
| 151 | + <%= t('.events.your_event') %> |
155 | 152 | </a> |
156 | 153 | </div> |
157 | 154 | </div> |
|
161 | 158 | <section class="py-20 px-6 bg-white"> |
162 | 159 | <div class="max-w-3xl mx-auto text-center"> |
163 | 160 | <p class="text-lg text-slate-500 mb-8"> |
164 | | - ✨ Proudly brought to you by |
| 161 | + <%= t('.sponsors.brought_to_you') %> |
165 | 162 | </p> |
166 | 163 |
|
167 | 164 | <div class="flex flex-wrap items-center justify-center gap-12"> |
168 | | - <a href="https://avohq.io" target="_blank" rel="noopener" class="sponsor-logo" title="The Ruby on Rails framework for building powerful admin interfaces"> |
169 | | - <%= image_tag "avo-logo-colored.png", alt: "Avo", class: "h-12 md:h-18" %> |
| 165 | + <a href="https://avohq.io" target="_blank" rel="noopener" class="sponsor-logo" title="<%= t('.sponsors.avo_title') %>"> |
| 166 | + <%= image_tag "avo-logo-colored.png", alt: t('.sponsors.avo_alt'), class: "h-12 md:h-18" %> |
170 | 167 | </a> |
171 | 168 | <span class="text-slate-300">&</span> |
172 | | - <a href="https://rubyevents.org" target="_blank" rel="noopener" class="sponsor-logo" title="On a mission to index all Ruby events"> |
173 | | - <%= image_tag "ruby-events-logo.png", alt: "RubyEvents.org", class: "h-12 md:h-22" %> |
| 169 | + <a href="https://rubyevents.org" target="_blank" rel="noopener" class="sponsor-logo" title="<%= t('.sponsors.ruby_events_title') %>"> |
| 170 | + <%= image_tag "ruby-events-logo.png", alt: t('.sponsors.ruby_events_alt'), class: "h-12 md:h-22" %> |
174 | 171 | </a> |
175 | 172 | </div> |
176 | 173 | </div> |
|
0 commit comments