{{ ('badges.description.' ~ type.value)|trans }}
+ + {% if group is null %} +{{ 'badges.info.single_tier_note'|trans }}
+ {% else %} ++ + {{ 'badges.highest_earned'|trans }} +
+ {% elseif logged_in == false %} ++ + {{ 'badges.login_to_track'|trans }} +
+ {% endif %} + {% endif %} + +{{ ('badges.description.' ~ type.value)|trans }}
++ {{ 'badges.detail.only_hidden_holders'|trans({'%count%': section.totalCount}) }} +
+ {% else %} ++ {{ 'badges.detail.nobody_yet'|trans }} +
+ {% endif %} ++ + {{ 'badges.detail.listing_note'|trans }} +
+{% endblock %} diff --git a/templates/added_time_recap.html.twig b/templates/added_time_recap.html.twig index 6b2a0989..844b6504 100644 --- a/templates/added_time_recap.html.twig +++ b/templates/added_time_recap.html.twig @@ -21,6 +21,8 @@{{ 'badges.reveals.intro'|trans({'%count%': badges|length}) }}
+ +{{ 'badges.reveals.hint'|trans }}
+ {% else %} + + {% endif %} + + + {{ 'badges.reveals.back_to_profile'|trans }} + +{% endblock %} diff --git a/templates/badges_overview.html.twig b/templates/badges_overview.html.twig new file mode 100644 index 00000000..59422bc7 --- /dev/null +++ b/templates/badges_overview.html.twig @@ -0,0 +1,129 @@ +{% extends 'base.html.twig' %} + +{% block title %}{{ 'badges.overview_title'|trans }}{% endblock %} + +{% block meta_description %}{{ 'badges.overview_subtitle'|trans }}{% endblock %} + +{% block content %} ++ {{ 'badges.overview_subtitle'|trans }} + {{ 'xp.leaderboard.ap_title'|trans }} +
+ + {% if ap_total is not null %} ++ + + {{ 'badges.ap_total'|trans({'%points%': ap_total}) }} + +
+ {% endif %} + + {% if logged_in == false %} ++ + {{ 'badges.login_to_track'|trans }} +
+ {% elseif not is_member %} ++ + {{ 'badges.free_user_hint'|trans }} + {{ 'badges.unlock_with_membership'|trans }} +
+ {% endif %} ++ {{ ('badges.description.' ~ group.type.value)|trans }} +
++ + {{ 'badges.highest_earned'|trans }} +
+ {% elseif logged_in %} ++ + {{ 'badges.not_earned_yet'|trans }} — {{ 'badges.keep_going'|trans }} +
+ {% endif %} + + + {{ 'badges.view_holders'|trans }} + ++ + {{ 'badges.how_it_works_hint'|trans }} + {{ 'badges.how_it_works_link'|trans }} +
+{% endblock %} diff --git a/templates/base.html.twig b/templates/base.html.twig index 5310b683..7e105efd 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -381,9 +381,11 @@ {% else %}diff --git a/templates/edit-time.html.twig b/templates/edit-time.html.twig index a45ff36f..c55e2d76 100644 --- a/templates/edit-time.html.twig +++ b/templates/edit-time.html.twig @@ -59,6 +59,12 @@
{{ 'edit_time.delete_modal_confirm'|trans }}
+ {% if xp_delete_warning|default(0) > 0 %} ++ + {{ 'edit_time.delete_xp_warning'|trans({'%xp%': xp_delete_warning}) }} +
+ {% endif %}{{ 'membership.subscription_active'|trans }} diff --git a/templates/player_profile.html.twig b/templates/player_profile.html.twig index 6e3897c5..fa91509c 100644 --- a/templates/player_profile.html.twig +++ b/templates/player_profile.html.twig @@ -39,6 +39,29 @@
@@ -274,18 +297,11 @@
 }})
{{ 'content_digest.unsubscribe.done_text'|trans }}
+ {{ 'content_digest.unsubscribe.back_home'|trans }} + {% else %} + +{{ 'content_digest.unsubscribe.confirm_text'|trans }}
+ + {% endif %} +{{ 'xp.explainer.intro'|trans }}
+ +| {{ 'xp.explainer.currencies.header_what'|trans }} | +{{ 'xp.explainer.currencies.header_measures'|trans }} | +{{ 'xp.explainer.currencies.header_who'|trans }} | +
|---|---|---|
| {{ 'xp.explainer.currencies.xp_name'|trans }} | +{{ 'xp.explainer.currencies.xp_measures'|trans }} | +{{ 'xp.explainer.currencies.xp_who'|trans }} | +
| {{ 'xp.explainer.currencies.ap_name'|trans }} | +{{ 'xp.explainer.currencies.ap_measures'|trans }} | +{{ 'xp.explainer.currencies.ap_who'|trans }} | +
| {{ 'xp.explainer.currencies.rating_name'|trans }} | +{{ 'xp.explainer.currencies.rating_measures'|trans }} | +{{ 'xp.explainer.currencies.rating_who'|trans }} | +
{{ 'xp.explainer.currencies.never_bought'|trans }}
+{{ 'xp.explainer.currencies.unlock_nothing'|trans }}
+{{ 'xp.explainer.how.intro'|trans }}
+{{ 'xp.explainer.example.body'|trans }}
+{{ 'xp.explainer.example.math'|trans|raw }}
+{{ 'xp.explainer.unrated.body'|trans }}
+{{ 'xp.explainer.achievements.body'|trans }}
+| {{ 'xp.explainer.levels.header_level'|trans }} | +{{ 'xp.explainer.levels.header_xp'|trans }} | +
|---|---|
| {{ level }} | +{{ xp }} | +
{{ 'xp.explainer.levels.summit'|trans }}
+{{ 'xp.explainer.lose.body'|trans }}
+{{ 'xp.explainer.faq.old_solves_answer'|trans }}
+ +{{ 'xp.explainer.faq.opt_out_answer'|trans }}
+ +{{ 'xp.explainer.faq.friend_answer'|trans }}
+ +{{ 'xp.explainer.faq.fair_play_answer'|trans({'%fair_play_link%': path('xp_fair_play')})|raw }}
+{{ 'xp.fair_play.intro'|trans }}
+ +{{ 'xp.fair_play.closing_thresholds'|trans }}
+{{ 'xp.fair_play.closing_celebrate'|trans }}
+{{ 'xp.fair_play.explainer_link'|trans({'%explainer_link%': path('xp_explainer')})|raw }}
+{{ 'xp.history.subtitle'|trans }}
+ + {% if not xp_profile.optedOut %} +| {{ 'xp.history.when'|trans }} | +{{ 'xp.history.reason'|trans }} | +XP | +
|---|---|---|
| {{ entry.earnedAt|format_date('short') }} | ++ {{ ('xp.line.' ~ entry.reason.value)|trans }} + {% if entry.puzzleId is not null %} + — {{ entry.puzzleName }} + {% elseif entry.badgeType is not null %} + — {{ entry.badgeType.translationKey()|trans }}{% if entry.badgeTier is not null %} ({{ entry.badgeTier.translationKey()|trans }}){% endif %} + {% elseif entry.solvingTimeId is not null and entry.reason.value != 'solve_compensation' %} + — {{ 'xp.history.deleted_solve'|trans }} + {% endif %} + | ++ {{ entry.amount > 0 ? '+' }}{{ entry.amount }} + | +
+ + {{ 'xp.history.note'|trans }} + {{ 'badges.how_it_works_link'|trans }} +
+{% endblock %} diff --git a/templates/xp_launch_reveal.html.twig b/templates/xp_launch_reveal.html.twig new file mode 100644 index 00000000..cfe7b9e7 --- /dev/null +++ b/templates/xp_launch_reveal.html.twig @@ -0,0 +1,77 @@ +{% extends 'base.html.twig' %} + +{% block title %}{{ 'xp.reveal.meta_title'|trans }}{% endblock %} + +{% block content %} +
+
+ {{ 'xp.reveal.intro'|trans }}
+ +{{ 'xp.reveal.xp_note'|trans }}
++ {{ (is_ap ? 'xp.leaderboard.ap_subtitle' : 'xp.leaderboard.subtitle')|trans }} + {{ 'badges.how_it_works_link'|trans }} + · + {{ 'xp.leaderboard.all_leaderboards'|trans }} +
+| # | +{{ 'xp.leaderboard.player'|trans }} | +{{ ('xp.leaderboard.value.' ~ tab)|trans }} | +
|---|---|---|
| + {% if row.rank == 1 %}🥇{% elseif row.rank == 2 %}🥈{% elseif row.rank == 3 %}🥉{% else %}{{ row.rank }}{% endif %} + | +
+
+ {% if row.avatar is not null %}
+ |
+ + {{ is_ap + ? 'xp.leaderboard.ap_value'|trans({'%points%': row.value}) + : 'xp.leaderboard.xp_value'|trans({'%xp%': row.value}) }} + | +
Potvrďte odběr tlačítkem níže a budeme vám dávat vědět, co je na platformě nového — nové funkce, vylepšení a novinky z komunity. Žádný marketing, žádná reklama — jen novinky, maximálně jednou měsíčně.
button: "Potvrdit odběr" expires: "Odkaz platí %hours% hodin. Pokud jste o odběr nežádali, tento e-mail klidně ignorujte a nic vám chodit nebude." + +badges_earned: + subject: "Máš nové odznaky na MySpeedPuzzling!" + title: "%count%× nový odznak!" + intro: "Gratulujeme! Máš za sebou nové milníky na MySpeedPuzzling." + cta: | +Podívej se na všechny své odznaky i na postup k těm dalším.
+ outro: "Skládej dál — další úspěchy čekají na odemčení!" + +content_digest: + weekly: + subject: "Tvůj týden ve skládání 🧩" + subject_quiet: "Klidný puzzle týden — držíme ti místo u stolu" + greeting: "Ahoj %name%, tady je tvůj týden ve skládání!" + greeting_anonymous: "Ahoj puzzlere, tady je tvůj týden ve skládání!" + xp_title: "Tvoje XP tento týden" + xp_gained: "+%xp% XP získáno" + levels_gained: "{1}o 1 úroveň výš — teď jsi na úrovni %level%!|{2,3,4}o %count% úrovně výš — teď jsi na úrovni %level%!|[5,Inf[o %count% úrovní výš — teď jsi na úrovni %level%!" + achievements_intro: "{1}Máš 1 nový úspěch:|{2,3,4}Máš %count% nové úspěchy:|[5,Inf[Máš %count% nových úspěchů:" + achievements_teaser: "{1}Čeká na tebe 1 nový úspěch — staň se členem a odhal ho!|{2,3,4}Čekají na tebe %count% nové úspěchy — staň se členem a odhal je!|[5,Inf[Čeká na tebe %count% nových úspěchů — staň se členem a odhal je!" + numbers_title: "Tvůj týden v číslech" + numbers_line: "{1}1 složení|]1,Inf[%solves% složení — %pieces% dílků na svém místě." + numbers_minutes: "Zhruba %minutes% minut čistého skládání." + numbers_previous: "Minulý týden: %solves% složení, %pieces% dílků." + streak_line: "Jedeš %days%denní sérii — krásná vytrvalost!" + no_activity_line_1: "Tento týden jsme od tebe žádné složení neviděli — a to je úplně v pořádku, život se občas přihlásí o slovo." + no_activity_line_2: "Až budeš mít chuť, puzzle je vždycky dobrý nápad. Tvůj další dílek čeká. 🧩" + favorites_title: "Tvoji oblíbení puzzleři nezaháleli" + favorites_line: "{1}%name% má 1 nové složení|{2,3,4}%name% má %count% nová složení|[5,Inf[%name% má %count% nových složení" + next_achievements_title: "Na dosah" + community_title: "Dění v komunitě" + most_solved_line: "Nejskládanější puzzle týdne: %puzzle% (%solvers% puzzlerů)." + footer_settings: "Tento souhrn dostáváš každý týden. Kdykoli si ho můžeš upravit v nastavení notifikací." + footer_unsubscribe: "Jedno kliknutí a je klid: odhlásit odběr souhrnu." + +xp_reveal: + subject: "Celá tvoje puzzle cesta se právě proměnila v XP ✨" + greeting: "Ahoj %name%, stalo se něco krásného!" + greeting_anonymous: "Ahoj puzzlere, stalo se něco krásného!" + intro: "MySpeedPuzzling nově oslavuje tvoji aktivitu pomocí XP a úrovní — a počítají se všechna puzzle, která máš zaznamenaná. Žádné nastavování, žádný háček: tady je, jakou hodnotu má tvoje historie." + level_line: "Úroveň %level%" + xp_line: "%xp% XP za celou tvoji puzzle historii" + achievements_member: "{1}A k tomu už máš na profilu 1 úspěch!|{2,3,4}A k tomu už máš na profilu %count% úspěchy!|[5,Inf[A k tomu už máš na profilu %count% úspěchů!" + achievements_teaser: "{1}A 1 úspěch na tebe tiše čeká.|{2,3,4}A %count% úspěchy na tebe tiše čekají.|[5,Inf[A %count% úspěchů na tebe tiše čeká." + cta: | +Podívej se na svůj velký moment
+ outro: "Úrovně nikdy nic nepodmiňují a XP se nedají koupit — je to prostě tvůj puzzle příběh, který si zaslouží oslavu. Uvidíme se u stolu! 🧩" + explainer: 'Zajímají tě detaily? Jak fungují XP a úrovně.' diff --git a/translations/emails.de.yml b/translations/emails.de.yml index a046ed06..be9a5c69 100644 --- a/translations/emails.de.yml +++ b/translations/emails.de.yml @@ -201,3 +201,51 @@ newsletter_confirmation:Bestätige das unten und wir sagen dir, was es auf der Plattform Neues gibt — neue Funktionen, Verbesserungen und Neuigkeiten aus der Community. Kein Marketing, keine Werbung — nur Neuigkeiten, höchstens einmal im Monat.
button: "Mein Abo bestätigen" expires: "Der Link ist %hours% Stunden gültig. Wenn du das nicht angefordert hast, ignoriere diese E-Mail einfach — dann wird nichts verschickt." + +badges_earned: + subject: "Du hast neue Abzeichen auf MySpeedPuzzling verdient!" + title: "%count% neue(s) Abzeichen verdient!" + intro: "Herzlichen Glückwunsch! Du hast neue Meilensteine auf MySpeedPuzzling erreicht." + cta: | +Sieh dir alle deine Abzeichen und deinen Fortschritt zu den nächsten an.
+ outro: "Puzzle weiter — weitere Erfolge warten darauf, freigeschaltet zu werden!" + +content_digest: + weekly: + subject: "Deine Puzzle-Woche 🧩" + subject_quiet: "Eine ruhige Puzzle-Woche — wir haben dir einen Platz freigehalten" + greeting: "Hallo %name%, hier ist deine Puzzle-Woche!" + greeting_anonymous: "Hallo Puzzler, hier ist deine Puzzle-Woche!" + xp_title: "Deine XP diese Woche" + xp_gained: "+%xp% XP verdient" + levels_gained: "{1}du bist 1 Level aufgestiegen, jetzt Level %level%!|]1,Inf[du bist %count% Level aufgestiegen, jetzt Level %level%!" + achievements_intro: "{1}Du hast 1 neuen Erfolg verdient:|]1,Inf[Du hast %count% neue Erfolge verdient:" + achievements_teaser: "{1}1 neuer Erfolg wartet auf dich — werde Mitglied, um ihn aufzudecken!|]1,Inf[%count% neue Erfolge warten auf dich — werde Mitglied, um sie aufzudecken!" + numbers_title: "Deine Woche in Zahlen" + numbers_line: "{1}1 Ergebnis|]1,Inf[%solves% Ergebnisse — %pieces% Teile gelegt." + numbers_minutes: "Rund %minutes% Minuten pures Puzzeln." + numbers_previous: "Letzte Woche: %solves% Ergebnisse, %pieces% Teile." + streak_line: "Deine Serie läuft seit %days% Tagen — wunderbar beständig!" + no_activity_line_1: "Diese Woche haben wir kein Ergebnis von dir gesehen — und das ist völlig in Ordnung, das Leben kommt manchmal dazwischen." + no_activity_line_2: "Wann immer du bereit bist: Ein Puzzle ist immer eine gute Idee. Dein nächstes Teil wartet schon. 🧩" + favorites_title: "Deine Lieblings-Puzzler waren fleißig" + favorites_line: "{1}%name% hat 1 Ergebnis erfasst|]1,Inf[%name% hat %count% Ergebnisse erfasst" + next_achievements_title: "Zum Greifen nah" + community_title: "Aus der Community" + most_solved_line: "Meistgelegtes Puzzle der Woche: %puzzle% (%solvers% Puzzler)." + footer_settings: "Du bekommst diesen Rückblick wöchentlich. Passe ihn jederzeit in deinen Benachrichtigungseinstellungen an." + footer_unsubscribe: "Ein Klick und Schluss: Rückblick abbestellen." + +xp_reveal: + subject: "Deine ganze Puzzle-Reise ist gerade zu XP geworden ✨" + greeting: "Hallo %name%, etwas Schönes ist passiert!" + greeting_anonymous: "Hallo Puzzler, etwas Schönes ist passiert!" + intro: "MySpeedPuzzling feiert deine Aktivität jetzt mit XP und Leveln — und jedes Puzzle, das du je erfasst hast, zählt bereits. Nichts einzurichten, kein Haken: Hier ist, was deine Geschichte wert ist." + level_line: "Level %level%" + xp_line: "%xp% XP verdient in deiner gesamten Puzzle-Geschichte" + achievements_member: "{1}Dazu ist 1 Erfolg schon auf deinem Profil!|]1,Inf[Dazu sind %count% Erfolge schon auf deinem Profil!" + achievements_teaser: "{1}Und 1 Erfolg wartet still auf dich.|]1,Inf[Und %count% Erfolge warten still auf dich." + cta: | + + outro: "Level schalten nichts frei und XP lassen sich niemals kaufen — es ist einfach deine Puzzle-Geschichte, gefeiert. Wir sehen uns am Tisch! 🧩" + explainer: 'Neugierig auf die Details? So funktionieren XP & Level.' diff --git a/translations/emails.en.yml b/translations/emails.en.yml index 360b3eb0..e302f936 100644 --- a/translations/emails.en.yml +++ b/translations/emails.en.yml @@ -201,3 +201,51 @@ newsletter_confirmation:Confirm below and we'll let you know what's new on the platform — new features, improvements and community news. No marketing, no promotions — just what's new, at most once a month.
button: "Confirm my subscription" expires: "The link is valid for %hours% hours. If you didn't request this, simply ignore this e-mail and nothing will be sent." + +badges_earned: + subject: "You earned new badges on MySpeedPuzzling!" + title: "%count% new badge(s) earned!" + intro: "Congratulations! You've reached new milestones on MySpeedPuzzling." + cta: | +See all your badges and your progress toward the next ones.
+ outro: "Keep puzzling — more achievements are waiting to be unlocked!" + +content_digest: + weekly: + subject: "Your week in puzzling 🧩" + subject_quiet: "A quiet puzzle week — we saved you a seat" + greeting: "Hi %name%, here is your week in puzzling!" + greeting_anonymous: "Hi puzzler, here is your week in puzzling!" + xp_title: "Your XP this week" + xp_gained: "+%xp% XP earned" + levels_gained: "{1}you climbed 1 level, now Level %level%!|]1,Inf[you climbed %count% levels, now Level %level%!" + achievements_intro: "{1}You earned 1 new achievement:|]1,Inf[You earned %count% new achievements:" + achievements_teaser: "{1}1 new achievement is waiting for you — become a member to reveal it!|]1,Inf[%count% new achievements are waiting for you — become a member to reveal them!" + numbers_title: "Your week in numbers" + numbers_line: "{1}1 solve|]1,Inf[%solves% solves — %pieces% pieces placed." + numbers_minutes: "About %minutes% minutes of pure puzzling." + numbers_previous: "Last week: %solves% solves, %pieces% pieces." + streak_line: "You are on a %days%-day streak — beautifully steady!" + no_activity_line_1: "We haven't seen a solve from you this week — and that's perfectly fine, life happens." + no_activity_line_2: "Whenever you're ready, a puzzle is always a good idea. Your next piece is waiting. 🧩" + favorites_title: "Your favorite puzzlers were busy" + favorites_line: "{1}%name% logged 1 solve|]1,Inf[%name% logged %count% solves" + next_achievements_title: "Within your reach" + community_title: "Around the community" + most_solved_line: "Most solved puzzle of the week: %puzzle% (%solvers% puzzlers)." + footer_settings: "You get this digest weekly. Adjust it anytime in your notification settings." + footer_unsubscribe: "One click and it stops: unsubscribe from the digest." + +xp_reveal: + subject: "Your whole puzzling journey just turned into XP ✨" + greeting: "Hi %name%, something lovely happened!" + greeting_anonymous: "Hi puzzler, something lovely happened!" + intro: "MySpeedPuzzling now celebrates your activity with XP and levels — and every puzzle you ever logged already counts. No setup, no catch: here is what your history is worth." + level_line: "Level %level%" + xp_line: "%xp% XP earned across your whole puzzling history" + achievements_member: "{1}Plus 1 achievement is already on your profile!|]1,Inf[Plus %count% achievements are already on your profile!" + achievements_teaser: "{1}And 1 achievement is quietly waiting for you.|]1,Inf[And %count% achievements are quietly waiting for you." + cta: | + + outro: "Levels never gate anything and XP can never be bought — it is simply your puzzling story, celebrated. See you at the table! 🧩" + explainer: 'Curious about the details? How XP & Levels work.' diff --git a/translations/emails.es.yml b/translations/emails.es.yml index a6e30fa7..a9c4ae37 100644 --- a/translations/emails.es.yml +++ b/translations/emails.es.yml @@ -201,3 +201,51 @@ newsletter_confirmation:Confírmalo abajo y te contaremos las novedades de la plataforma: nuevas funciones, mejoras y noticias de la comunidad. Sin marketing ni promociones — solo novedades, como mucho una vez al mes.
button: "Confirmar mi suscripción" expires: "El enlace es válido durante %hours% horas. Si no lo has solicitado, ignora este correo sin problema y no te enviaremos nada." + +badges_earned: + subject: "¡Has conseguido nuevas insignias en MySpeedPuzzling!" + title: "¡%count% nueva(s) insignia(s) conseguida(s)!" + intro: "¡Felicidades! Has alcanzado nuevos hitos en MySpeedPuzzling." + cta: | +Mira todas tus insignias y tu progreso hacia las siguientes.
+ outro: "Sigue armando — ¡más logros esperan a ser desbloqueados!" + +content_digest: + weekly: + subject: "Tu semana en puzzles 🧩" + subject_quiet: "Una semana puzzlera tranquila — te guardamos un sitio" + greeting: "Hola %name%, ¡aquí tienes tu semana en puzzles!" + greeting_anonymous: "Hola puzzlero, ¡aquí tienes tu semana en puzzles!" + xp_title: "Tu XP de esta semana" + xp_gained: "+%xp% XP ganados" + levels_gained: "{1}subiste 1 nivel, ¡ahora eres Nivel %level%!|]1,Inf[subiste %count% niveles, ¡ahora eres Nivel %level%!" + achievements_intro: "{1}Conseguiste 1 nuevo logro:|]1,Inf[Conseguiste %count% nuevos logros:" + achievements_teaser: "{1}1 nuevo logro te está esperando — ¡hazte miembro para revelarlo!|]1,Inf[%count% nuevos logros te están esperando — ¡hazte miembro para revelarlos!" + numbers_title: "Tu semana en números" + numbers_line: "{1}1 resolución|]1,Inf[%solves% resoluciones — %pieces% piezas colocadas." + numbers_minutes: "Unos %minutes% minutos de puzzle en estado puro." + numbers_previous: "La semana pasada: %solves% resoluciones, %pieces% piezas." + streak_line: "Llevas una racha de %days% días — ¡qué constancia tan bonita!" + no_activity_line_1: "Esta semana no hemos visto ninguna resolución tuya — y no pasa nada, la vida a veces manda." + no_activity_line_2: "Cuando quieras, un puzzle siempre es buena idea. Tu próxima pieza te está esperando. 🧩" + favorites_title: "Tus puzzleros favoritos no pararon" + favorites_line: "{1}%name% registró 1 resolución|]1,Inf[%name% registró %count% resoluciones" + next_achievements_title: "A tu alcance" + community_title: "Por la comunidad" + most_solved_line: "El puzzle más armado de la semana: %puzzle% (%solvers% puzzleros)." + footer_settings: "Recibes este resumen cada semana. Ajústalo cuando quieras en tu configuración de notificaciones." + footer_unsubscribe: "Un clic y se acaba: darse de baja del resumen." + +xp_reveal: + subject: "Todo tu recorrido puzzlero se acaba de convertir en XP ✨" + greeting: "Hola %name%, ¡ha pasado algo bonito!" + greeting_anonymous: "Hola puzzlero, ¡ha pasado algo bonito!" + intro: "MySpeedPuzzling ahora celebra tu actividad con XP y niveles — y cada puzzle que has registrado ya cuenta. Sin configurar nada y sin trampa: esto es lo que vale tu historia." + level_line: "Nivel %level%" + xp_line: "%xp% XP ganados a lo largo de toda tu historia puzzlera" + achievements_member: "{1}¡Además, 1 logro ya está en tu perfil!|]1,Inf[¡Además, %count% logros ya están en tu perfil!" + achievements_teaser: "{1}Y 1 logro te espera en silencio.|]1,Inf[Y %count% logros te esperan en silencio." + cta: | +Descubre tu momento de revelación
+ outro: "Los niveles nunca bloquean nada y el XP no se puede comprar — es simplemente tu historia puzzlera, celebrada. ¡Nos vemos en la mesa! 🧩" + explainer: '¿Quieres conocer los detalles? Cómo funcionan los XP y niveles.' diff --git a/translations/emails.fr.yml b/translations/emails.fr.yml index 0ed06a96..65f59286 100644 --- a/translations/emails.fr.yml +++ b/translations/emails.fr.yml @@ -201,3 +201,51 @@ newsletter_confirmation:Confirmez ci-dessous et nous vous tiendrons au courant des nouveautés de la plateforme — nouvelles fonctionnalités, améliorations et actualités de la communauté. Pas de marketing, pas de promotions — uniquement les nouveautés, pas plus d'une fois par mois.
button: "Confirmer mon abonnement" expires: "Le lien est valable %hours% heures. Si vous n'êtes pas à l'origine de cette demande, ignorez simplement cet e-mail et rien ne vous sera envoyé." + +badges_earned: + subject: "Vous avez obtenu de nouveaux badges sur MySpeedPuzzling !" + title: "%count% nouveau(x) badge(s) obtenu(s) !" + intro: "Félicitations ! Vous venez de franchir de nouvelles étapes sur MySpeedPuzzling." + cta: | +Voir tous vos badges et votre progression vers les prochains.
+ outro: "Continuez à puzzler — d'autres succès n'attendent que d'être débloqués !" + +content_digest: + weekly: + subject: "Votre semaine puzzle 🧩" + subject_quiet: "Une semaine puzzle bien calme — nous vous avons gardé une place" + greeting: "Bonjour %name%, voici votre semaine puzzle !" + greeting_anonymous: "Bonjour puzzleur, voici votre semaine puzzle !" + xp_title: "Vos XP cette semaine" + xp_gained: "+%xp% XP gagnés" + levels_gained: "{1}vous avez gagné 1 niveau, vous voilà niveau %level% !|]1,Inf[vous avez gagné %count% niveaux, vous voilà niveau %level% !" + achievements_intro: "{1}Vous avez gagné 1 nouveau succès :|]1,Inf[Vous avez gagné %count% nouveaux succès :" + achievements_teaser: "{1}1 nouveau succès vous attend — devenez membre pour le révéler !|]1,Inf[%count% nouveaux succès vous attendent — devenez membre pour les révéler !" + numbers_title: "Votre semaine en chiffres" + numbers_line: "{1}1 résolution|]1,Inf[%solves% résolutions — %pieces% pièces posées." + numbers_minutes: "Environ %minutes% minutes de puzzle à l'état pur." + numbers_previous: "La semaine dernière : %solves% résolutions, %pieces% pièces." + streak_line: "Vous êtes sur une série de %days% jours — belle régularité !" + no_activity_line_1: "Nous n'avons pas vu de résolution de votre part cette semaine — et ce n'est pas grave du tout, ça arrive." + no_activity_line_2: "Quand vous voudrez, un puzzle est toujours une bonne idée. Votre prochaine pièce vous attend. 🧩" + favorites_title: "Vos puzzleurs favoris n'ont pas chômé" + favorites_line: "{1}%name% a enregistré 1 résolution|]1,Inf[%name% a enregistré %count% résolutions" + next_achievements_title: "À votre portée" + community_title: "Du côté de la communauté" + most_solved_line: "Puzzle le plus résolu de la semaine : %puzzle% (%solvers% puzzleurs)." + footer_settings: "Vous recevez ce résumé chaque semaine. Ajustez-le à tout moment dans vos paramètres de notification." + footer_unsubscribe: "Un clic et c'est terminé : se désabonner du résumé." + +xp_reveal: + subject: "Tout votre parcours puzzle vient de se transformer en XP ✨" + greeting: "Bonjour %name%, il vient de se passer quelque chose de charmant !" + greeting_anonymous: "Bonjour puzzleur, il vient de se passer quelque chose de charmant !" + intro: "MySpeedPuzzling célèbre désormais votre activité avec des XP et des niveaux — et chaque puzzle que vous avez enregistré compte déjà. Rien à configurer, aucun piège : voici ce que vaut votre historique." + level_line: "Niveau %level%" + xp_line: "%xp% XP gagnés sur l'ensemble de votre historique puzzle" + achievements_member: "{1}En prime, 1 succès est déjà sur votre profil !|]1,Inf[En prime, %count% succès sont déjà sur votre profil !" + achievements_teaser: "{1}Et 1 succès vous attend discrètement.|]1,Inf[Et %count% succès vous attendent discrètement." + cta: | +Découvrir votre moment de révélation
+ outro: "Les niveaux ne bloquent jamais rien et les XP ne s'achètent pas — c'est simplement votre histoire de puzzleur, célébrée. À bientôt autour de la table ! 🧩" + explainer: "Envie de connaître les détails ? Comment fonctionnent les XP et les niveaux." diff --git a/translations/emails.ja.yml b/translations/emails.ja.yml index 600ebbd3..f7a20e59 100644 --- a/translations/emails.ja.yml +++ b/translations/emails.ja.yml @@ -201,3 +201,51 @@ newsletter_confirmation:下のボタンで確認すると、プラットフォームの最新情報 — 新機能、改善、コミュニティのニュース — をお届けします。マーケティングや宣伝は一切なし。多くても月1回だけです。
button: "登録を確認する" expires: "リンクの有効期限は%hours%時間です。お心当たりがない場合は、このメールは無視していただいて問題ありません。今後何も届きません。" + +badges_earned: + subject: "MySpeedPuzzlingで新しいバッジを獲得しました!" + title: "新しいバッジを%count%個獲得しました!" + intro: "おめでとうございます!MySpeedPuzzlingで新たなマイルストーンに到達しました。" + cta: | + + outro: "パズルを続けましょう — 解除を待っている実績がまだまだあります!" + +content_digest: + weekly: + subject: "あなたのパズルな一週間 🧩" + subject_quiet: "静かなパズル週間でした — お席はちゃんと取ってあります" + greeting: "%name%さん、こんにちは。あなたの一週間のパズル活動をお届けします!" + greeting_anonymous: "パズラーさん、こんにちは。あなたの一週間のパズル活動をお届けします!" + xp_title: "今週のXP" + xp_gained: "+%xp% XP獲得" + levels_gained: "{1}1レベルアップして、現在レベル%level%です!|]1,Inf[%count%レベルアップして、現在レベル%level%です!" + achievements_intro: "{1}新しい実績を1個獲得しました:|]1,Inf[新しい実績を%count%個獲得しました:" + achievements_teaser: "{1}新しい実績1個があなたを待っています — メンバーになってお披露目しましょう!|]1,Inf[新しい実績%count%個があなたを待っています — メンバーになってお披露目しましょう!" + numbers_title: "数字で見る今週" + numbers_line: "{1}完成1回|]1,Inf[完成%solves%回 — %pieces%ピースをはめました。" + numbers_minutes: "純粋なパズル時間はおよそ%minutes%分。" + numbers_previous: "先週:完成%solves%回、%pieces%ピース。" + streak_line: "現在%days%日連続でパズル中 — 見事な安定感です!" + no_activity_line_1: "今週は完成記録が見当たりませんでした — もちろん、それでまったく問題ありません。そういう週もあります。" + no_activity_line_2: "気が向いたときが、パズルどきです。次のピースが待っています。🧩" + favorites_title: "お気に入りパズラーの活躍" + favorites_line: "{1}%name%さんが完成1回を記録|]1,Inf[%name%さんが完成%count%回を記録" + next_achievements_title: "あと少しで手が届きます" + community_title: "コミュニティの話題" + most_solved_line: "今週最も解かれたパズル:%puzzle%(%solvers%人のパズラー)。" + footer_settings: "このダイジェストは毎週お届けしています。通知設定でいつでも調整できます。" + footer_unsubscribe: "ワンクリックで止まります:ダイジェストの配信を停止する。" + +xp_reveal: + subject: "あなたのパズルの歩みが、まるごとXPになりました ✨" + greeting: "%name%さん、こんにちは。素敵なことが起こりました!" + greeting_anonymous: "パズラーさん、こんにちは。素敵なことが起こりました!" + intro: "MySpeedPuzzlingでは、XPとレベルであなたの活動をたたえるようになりました — これまでに記録したすべてのパズルが、もう反映されています。設定は不要、裏もありません。あなたのこれまでの歩みの価値はこちらです。" + level_line: "レベル%level%" + xp_line: "これまでのパズル履歴すべてで%xp% XPを獲得" + achievements_member: "{1}さらに、実績1個がすでにプロフィールに飾られています!|]1,Inf[さらに、実績%count%個がすでにプロフィールに飾られています!" + achievements_teaser: "{1}そして、実績1個がひっそりとあなたを待っています。|]1,Inf[そして、実績%count%個がひっそりとあなたを待っています。" + cta: | + + outro: "レベルで何かが制限されることはなく、XPをお金で買うこともできません — これはただ、あなたのパズルの物語をたたえるものです。それでは、パズルテーブルでお会いしましょう!🧩" + explainer: "詳しく知りたいですか?XPとレベルの仕組みをご覧ください。" diff --git a/translations/messages.cs.yml b/translations/messages.cs.yml index ce93d0b2..f685a49f 100644 --- a/translations/messages.cs.yml +++ b/translations/messages.cs.yml @@ -180,6 +180,8 @@ "link_to_hub": "Hledáte nejskládanější puzzle nebo nejaktivnější hráče? Přesunuli jsme je do nového Hubu!" "msp_elo_banner": "Právě jsme spustili MSP Rating žebříček BETA — nový systém hodnocení založený na dovednostech. Je čerstvě z pece, takže očekávejte úpravy, jak ho budeme ladit!" "msp_elo_cta": "MSP Rating žebříček" + "xp_ladder_banner": "Máme dva nové žebříčky: XP za to, kolik skládáš, a body za úspěchy za to, co posbíráš." + "xp_ladder_cta": "Žebříček XP" "filters": "button": "Filtry" "filter_by": "Filtrovat podle" @@ -412,6 +414,7 @@ "delete_button": "Smazat — nikdy se to nestalo!" "delete_modal_message": "Jen pro jistotu..." "delete_modal_confirm": "Opravdu smazat?" + "delete_xp_warning": "Přijdeš o %xp% XP získaných za toto složení." "delete_modal_discard_button": "Ne, ponechat" "delete_modal_confirm_button": "Ano, smazat" "error": @@ -714,6 +717,13 @@ "frequency_48_hours": "Každých 48 hodin" "frequency_1_week": "Jednou týdně" "newsletter_enabled": "Dostávat newsletter" + "content_digest_frequency": "Týdenní souhrn e-mailem" + "content_digest_help": "Tvůj týden ve skládání: XP, úspěchy, statistiky a aktivita přátel. Jednou týdně je tak akorát." + "content_digest_none": "Souhrn mi neposílat" + "content_digest_daily": "Denně + týdně" + "content_digest_weekly": "Týdně" + "hide_experience_system": "Skrýt systém zkušeností (XP a úrovně)" + "hide_experience_system_help": "Tvoje úroveň, XP účtenky, oslavy i pozice v žebříčcích všude zmizí. XP se ale potichu načítají dál, takže když systém zase zapneš, o nic nepřijdeš." "newsletter_help": "Občas vám pošleme newsletter o novinkách na platformě, většinou o nových funkcích. Žádný marketing, žádná reklama — jen novinky. Očekávaná frekvence: maximálně 1x měsíčně." "messaging_notifications": "Zprávy a upozornění" "features_options": "Nastavení funkcí" @@ -940,11 +950,354 @@ "conversation_request": "general": "%player% vám poslal žádost o konverzaci" "marketplace": "%player% vám poslal zprávu o %puzzle%" -"badges": - "title": "Odznaky" - "my_title": "Mé odznaky" - "badge": - "supporter": "Podporovatel" +xp: + level_chip: "Lv %level%" + total: "%xp% XP" + total_tooltip: "Celkem získáno %xp% XP" + max_level_reached: "Vrchol hory — úroveň 50!" + progress_label: "%xp% XP do úrovně %level%" + receipt: + title: "Tvoje XP za toto složení" + total: "Celkem" + waiting_teaser: "{1}Toto složení se započítalo do 1 čekajícího úspěchu 🔒|]1,Inf[Toto složení se započítalo do %count% čekajících úspěchů 🔒" + max_level_title: "Úroveň 50 — XP se stále počítají, sláva je navždy" + nearest_achievements: "Tvoje další úspěchy jsou na dosah:" + max_level_all_done: "Máš dobyto vše, co se dobýt dalo. Upřímně smekáme." + relax_repeat: "Známé puzzle, čistě pro radost — tentokrát bez XP, a přesně tak to má být." + counting: "Počítáme tvoje XP…" + line: + base: "Složení" + base_repeat_second: "Opakované složení (podruhé, ×50 %)" + base_repeat_later: "Opakované složení (potřetí a dál, ×25 %)" + base_relax: "Relax složení (×50 %)" + solve_difficulty_bonus: "Bonus za obtížnost" + solve_unboxed_bonus: "Bonus za skládání naslepo" + solve_speed_bonus: "Bonus za rychlost" + solve_weekly_boost: "Týdenní boost" + solve_daily_warmup: "Denní rozcvička" + difficulty_settlement: "Bonus za obtížnost (doúčtováno)" + speed_settlement: "Bonus za rychlost (doúčtováno)" + achievement: "Získaný úspěch" + solve_compensation: "Smazané složení" + difficulty_pending: "Bonus za obtížnost čeká — doúčtuje se, jakmile puzzle získá hodnocení" + speed_pending: "Bonus za rychlost čeká — potřebuje časy od 3 puzzlerů" + levelup: + aria: "Nová úroveň! Jsi na úrovni %level%" + label: "Nová úroveň!" + max_label: "Vrchol!" + message: "Tvoje puzzle cesta stoupá výš a výš. Krásná práce!" + max_message: "Úroveň 50. Výš to nejde. Odteď je tvojí horou žebříček bodů za úspěchy." + enter_ap_ladder: "Vstoupit na žebříček AP" + view_ap_ladder: "Zobrazit žebříček AP" + skip_hint: "Pokračuj klepnutím kamkoli" + achievement_toast: + title: "Nový úspěch!" + estimate: + line: "Za složení získáš ~%base% XP + bonus až %bonus%" + repeat_note: "Tohle puzzle už máš složené — tentokrát se počítá ×%multiplier%." + unrated_note: "Bonus za obtížnost se doúčtuje automaticky, jakmile puzzle získá hodnocení." + leaderboard: + meta_title: "XP žebříček" + title: "XP žebříček" + subtitle: "Aktivita, která se slaví." + all_leaderboards: "Všechny žebříčky" + favorites_only: "Pouze oblíbení" + player: "Puzzler" + value: + xp: "XP celkem" + achievement-points: "AP" + tab: + xp: "XP" + achievement-points: "Body za úspěchy" + ap_title: "Žebříček bodů za úspěchy" + ap_subtitle: "Sbírání úspěchů v žebříčku." + ap_login_required: "Pro prohlížení žebříčku bodů za úspěchy se přihlas." + xp_value: "%xp% XP" + ap_value: "%points% AP" + your_position: "Tvoje pozice" + empty: "Zatím tu nic není — zaznamenej složení a otevři žebříček!" + history: + meta_title: "Moje XP historie" + title: "Moje XP historie" + subtitle: "Každý bod má své místo — kompletní přehled tvých XP." + when: "Kdy" + reason: "Důvod" + empty: "Zatím žádné XP — tvoje první složení to změní." + deleted_solve: "smazané složení" + pagination: "Stránky XP historie" + note: "Vrtá ti hlavou některý řádek?" + reveal: + meta_title: "Tvoje puzzle cesta odhalena" + title: "Celá tvoje cesta se právě proměnila v XP ✨" + intro: "Počítá se každé puzzle, které máš zaznamenané. Tady je, jakou hodnotu má tvoje historie:" + level_label: "Úroveň" + xp_note: "získáno za celou tvoji puzzle historii" + achievements_member: "{1}A 1 úspěch už je tvůj — najdeš ho na svém profilu!|{2,3,4}A %count% úspěchy už jsou tvoje — najdeš je na svém profilu!|[5,Inf[A %count% úspěchů už je tvých — najdeš je na svém profilu!" + share_title: "Na MySpeedPuzzling mám úroveň %level%!" + share_button: "Sdílet moji úroveň" + continue: "Přejít na můj profil" + to_badge_reveals: "Máš úspěchy k odhalení? Otoč si je tady." + explainer: + title: "Jak fungují XP a úrovně" + intro: "Každé dokončené puzzle tě posune dál. XP (zkušenostní body) oslavují tvoji aktivitu — nejde o rychlost, ale o to, že skládáš. Zaznamenej složení, získej XP a sleduj, jak tvoje úroveň roste od 1 až do 50." + currencies: + heading: "Tři čísla na MySpeedPuzzling" + header_what: "Co" + header_measures: "Měří" + header_who: "Kdo je vidí" + xp_name: "XP a úrovně" + xp_measures: "Tvoji aktivitu — počítá se každé složení" + xp_who: "Všichni, navždy zdarma" + ap_name: "Body za úspěchy (AP)" + ap_measures: "Tvoji sbírku získaných úspěchů" + ap_who: "Členové" + rating_name: "MSP Rating" + rating_measures: "Tvoji rychlost a dovednosti" + rating_who: "Členové (beze změny, zvlášť)" + never_bought: "XP se nedají koupit — žádné boosty, žádné násobiče, žádné zkratky. Nikdy." + unlock_nothing: "Úrovně neodemykají žádné funkce; jsou tvojí vizuální puzzle identitou." + how: + heading: "Jak se složení promění v XP" + intro: "Účtenka po každém složení přesně ukazuje, odkud se každý bod vzal:" + base: "Základ: zhruba 1 XP za 100 dílků (puzzle s 500 dílky ≈ 5 XP). Strop je 60." + difficulty: "Bonus za obtížnost: těžší puzzle (komunitní stupně obtížnosti 3–6) přidají +15 % až +50 %." + team: "Týmová složení: každý ve skupině získá 75 % sólo hodnoty — společné skládání se počítá každému páru rukou." + unboxed: "Bonus naslepo: složeno bez obrázku na krabici? +20 %." + repeat: "Opakovaná složení: 2. měřené složení stejného puzzle vynese 50 %, další 25 %. Relax mód: první složení 50 %, opakování 0 %." + speed: "Bonus za rychlost: sólo měřená složení rychlejší než komunitní medián puzzle získají +5 %, top 25 % +10 %, top 10 % +15 % (potřebuje časy alespoň od 3 puzzlerů)." + weekly: "Týdenní boost: prvních 5 složení každý týden vynese +50 % navíc." + daily: "Denní rozcvička: první složení dne přinese +2 XP." + example: + heading: "Příklad výpočtu" + body: "Sólo měřené první složení puzzle s 1000 dílky a obtížností 4, složené naslepo, rychleji než medián, jako tvoje první složení v týdnu i ve dni:" + math: "základ 10 + obtížnost 3 + naslepo 3 + rychlost 1 + týdenní boost 8 + rozcvička 2 = 27 XP" + unrated: + heading: "Puzzle bez hodnocení" + body: "Úplně nová puzzle v katalogu ještě nemusí mít stupeň obtížnosti. Základní XP získáš hned a bonus za obtížnost dorazí automaticky („doúčtuje se“), jakmile komunita puzzle ohodnotí. Stejně tak bonus za rychlost, jakmile časy zaznamená dost puzzlerů." + achievements: + heading: "Úspěchy dávají XP taky" + body: "Každý stupeň úspěchu udělí XP jednou, navždy: bronz 5 · stříbro 10 · zlato 25 · platina 50 · diamant 100." + levels: + heading: "Úrovně" + header_level: "Úroveň" + header_xp: "XP" + summit: "Úroveň 50 je vrchol — celkem 3 160 XP. XP se načítají i dál; na úrovni 50 se tvojí další horou stává žebříček bodů za úspěchy." + lose: + heading: "Můžu o XP přijít?" + body: "Jen smazáním nebo úpravou složení — XP, které složení vyneslo, odejdou s ním. Nic jiného ti XP nikdy nevezme. Úspěchy jsou trvalé." + faq: + heading: "Časté dotazy" + old_solves_question: "Počítají se stará složení?" + old_solves_answer: "Ano! Celá tvoje historie se převedla při spuštění (základní vzorec, bez časových bonusů — ty platí až od teď)." + opt_out_question: "Nechci nic z toho." + opt_out_answer: "Rozumíme — vypni si to v nastavení profilu („systém zkušeností“) a tvoje úroveň, XP i oslavy zmizí z dohledu." + friend_question: "Proč kamarád dostal za stejné puzzle víc XP?" + friend_answer: "Slevy za opakování, týdenní boosty a denní rozcvičky jsou osobní; dvě účtenky se shodují jen málokdy. Klepni na kterýkoli řádek účtenky a uvidíš jeho důvod." + fair_play_question: "Jak je zajištěná férovost?" + fair_play_answer: "Čísla drží poctivá několik tichých automatických pojistek — vše o nich najdeš na stránce Fair play a důvěra." + fair_play: + title: "Fair play a důvěra" + intro: "MySpeedPuzzling stojí na důvěře. Nikdo tvoje složení před započítáním nekontroluje — věříme ti a čísla komunity zůstávají smysluplná díky několika tichým automatickým pojistkám:" + principle_no_buying: "XP měří aktivitu, nikdy útratu: XP, boosty ani násobiče se nedají koupit." + principle_repeats: "Opakovaná složení stejného puzzle vynášejí pokaždé méně — dokola zaznamenávat jedno puzzle není zkratka." + principle_speed: "Bonus za rychlost platí jen tam, kde existuje spolehlivé komunitní srovnání, a nevěrohodně rychlé časy ho prostě nedostanou. Žádné obviňování, žádné drama — bonus se jen nepřičte." + principle_deleting: "Smazání složení odebere i XP, které vyneslo, automaticky a transparentně (na stránce XP historie vidíš každý záznam)." + principle_caps: "Extrémně velké nebo neobvyklé záznamy mají strop, takže žádné jediné složení nemůže pokřivit žebříček." + closing_thresholds: "Přesné limity záměrně nezveřejňujeme — existují proto, aby udržely férovost, ne aby se daly obcházet. Pokud ti na žebříčku něco nesedí, napiš nám; na každé hlášení se dívá člověk." + closing_celebrate: "Skládej poctivě, slav nahlas. 🧩" + explainer_link: "Zajímá tě, jak se každý bod získává? Podívej se na Jak fungují XP a úrovně." + +content_digest: + unsubscribe: + meta_title: "Odhlásit odběr souhrnu" + confirm_title: "Odhlásit odběr týdenního souhrnu?" + confirm_text: "Nic se neděje — jedno kliknutí níže a týdenní souhrn ti přestane chodit. Kdykoli si ho můžeš znovu zapnout v nastavení notifikací." + confirm_button: "Ano, odhlásit mě" + done_title: "Máš odhlášeno" + done_text: "Týdenní souhrn ti už e-mailem chodit nebude. Kdyby ti chyběl, čeká na tebe v nastavení notifikací." + back_home: "Zpět na MySpeedPuzzling" + +badges: + title: "Úspěchy" + my_title: "Moje úspěchy" + new: "NOVÉ" + browse_all: "Procházet všechny úspěchy" + reveal: "Odhal svůj nový úspěch" + waiting_teaser: "{1}Čeká na tebe 1 úspěch — staň se členem a odhal ho!|{2,3,4}Čekají na tebe %count% úspěchy — staň se členem a odhal je!|[5,Inf[Čeká na tebe %count% úspěchů — staň se členem a odhal je!" + waiting_teaser_zero: "Tvůj první úspěch je blíž, než si myslíš — zaznamenej složení a uvidíš, co se stane." + unlock_with_membership: "Odemkni členstvím" + ap_total: "%points% AP" + ap_total_tooltip: "Tvoje body za úspěchy — každý získaný stupeň se počítá, navždy" + free_user_hint: "Úspěchy získáváš i bez členství — v bezpečí na tebe počkají." + earned_waiting: "Získáno ✓ — čeká 🔒" + view_holders: "Podívej se, kdo ho získal" + how_it_works_hint: "Úspěchy udělují XP a body za úspěchy." + how_it_works_link: "Jak fungují XP a úrovně" + detail: + meta_title: "%name% — držitelé úspěchu" + country_filter: "Země" + all_countries: "Všechny země" + newest_earners: "Nejnovější držitelé" + holders_count: "{0}Zatím nikdo|{1}1 puzzler|{2,3,4}%count% puzzleři|[5,Inf[%count% puzzlerů" + holders_count_tooltip: "Tady se počítá každý — včetně puzzlerů, jejichž profily nejsou v seznamu níže" + first_to_earn: "První držitel" + more_puzzlers: "+%count% dalších puzzlerů" + only_hidden_holders: "{1}Tento stupeň získal 1 puzzler — jeho profil není veřejně viditelný.|{2,3,4}Tento stupeň získali %count% puzzleři — jejich profily nejsou veřejně viditelné.|[5,Inf[Tento stupeň získalo %count% puzzlerů — jejich profily nejsou veřejně viditelné." + nobody_yet: "Tento stupeň zatím nikdo nezískal. Kdo bude první, zapíše se do historie!" + listing_note: "V seznamech držitelů jsou členové s veřejným profilem; počty zahrnují všechny puzzlery." + reveals: + meta_title: "Odhal své úspěchy" + title: "Tvoje úspěchy jsou tady 🎉" + intro: "{1}1 úspěch tu na tebe tiše čekal. Klepni na něj a otoč ho!|{2,3,4}%count% úspěchy tu na tebe tiše čekaly. Klepni na každý a otoč ho!|[5,Inf[%count% úspěchů tu na tebe tiše čekalo. Klepni na každý a otoč ho!" + hint: "Nespěchej — každé otočení si zaslouží svou malou chvilku." + all_done: "Vše je odhaleno — tvůj profil je teď hrdě nosí." + invite: "{1}1 úspěch čeká na své odhalení!|{2,3,4}%count% úspěchy čekají na své odhalení!|[5,Inf[%count% úspěchů čeká na své odhalení!" + invite_button: "Odhalit je" + back_to_profile: "Zpět na můj profil" + overview_title: "Úspěchy" + overview_subtitle: "Získávej úspěchy za dosažené milníky na své puzzle cestě" + progress_label: "%current% / %target%" + progress_time_label: "%current_time% → cíl %target_time%" + locked: "Zamčeno" + earned_on: "Získáno %date%" + highest_earned: "Nejvyšší získaný" + not_earned_yet: "Zatím nezískáno" + keep_going: "Jen tak dál!" + login_to_track: "Přihlas se a uvidíš svůj postup ke každému úspěchu." + info: + open: "Za co je %achievement%?" + earned: "Získáno" + next_tier: "Další: %tier%" + single_tier_note: "Tenhle úspěch má jen jednu úroveň — uděluje se ručně, nedá se získat skládáním." + tier: + bronze: "Bronz" + silver: "Stříbro" + gold: "Zlato" + platinum: "Platina" + diamond: "Diamant" + badge: + supporter: "Průkopník" + puzzles_solved: "Puzzle průzkumník" + pieces_solved: "Požírač dílků" + speed_500_pieces: "Démon rychlosti (500 dílků)" + streak: "V jednom ohni" + team_player: "Týmový duch" + zen_puzzler: "Zen skládač" + first_try: "Na první pokus" + unboxed: "Naslepo" + brand_explorer: "Objevitel značek" + marathoner: "Maratonec" + photographer: "Fotograf" + steady_hands: "Pevná ruka" + librarian: "Knihovník" + speed_1000_pieces: "Démon rychlosti (1000 dílků)" + weekend_puzzler: "Víkendový skládač" + cataloger: "Katalogizátor" + description: + supporter: "Pro puzzlery, kteří MySpeedPuzzling věřili od začátku a pomohli mu růst." + puzzles_solved: "Skládej různá puzzle a šplhej po tomto žebříčku." + pieces_solved: "Čím víc dílků, tím líp — počítá se každý dílek, který kdy zapadl na své místo." + speed_500_pieces: "Tvůj stupeň určuje tvoje nejrychlejší sólo složení puzzle s 500 dílky." + streak: "Skládej puzzle den za dnem bez vynechání." + team_player: "Spoj se s dalšími puzzlery a skládejte společně." + zen_puzzler: "Skládej čistě pro radost — počítají se relax složení zaznamenaná bez času." + first_try: "Dej to napoprvé — počítá se každé složení zaznamenané jako tvůj první pokus u daného puzzle." + unboxed: "Skládej puzzle bez koukání na obrázek na krabici — ta nejtajemnější výzva." + brand_explorer: "Ochutnej puzzle od různých výrobců a objev své oblíbené značky." + marathoner: "Pokoř ty velké — počítá se každé složení puzzle s 2 000 a více dílky." + photographer: "Přidej k zaznamenanému složení fotku hotového puzzle — počítá se každý snímek." + steady_hands: "Skládej v po sobě jdoucích čtvrtletích roku, v každém alespoň jedno složení — bez mezer." + librarian: "Pomáhej udržovat katalog puzzlí přesný — počítají se jen tvoje přijaté návrhy na vylepšení katalogu." + speed_1000_pieces: "Tvůj stupeň určuje tvoje nejrychlejší sólo složení puzzle s 1 000 dílky." + weekend_puzzler: "Soboty a neděle patří puzzlím — počítá se každé víkendové složení." + cataloger: "Rozšiřuj katalog puzzlí — počítá se každé tvoje schválené přidané puzzle." + requirement: + puzzles_solved_1: "Slož 10 různých puzzlí" + puzzles_solved_2: "Slož 100 různých puzzlí" + puzzles_solved_3: "Slož 500 různých puzzlí" + puzzles_solved_4: "Slož 1 000 různých puzzlí" + puzzles_solved_5: "Slož 2 000 různých puzzlí" + pieces_solved_1: "Nasbírej 10 000 dílků" + pieces_solved_2: "Nasbírej 100 000 dílků" + pieces_solved_3: "Nasbírej 500 000 dílků" + pieces_solved_4: "Nasbírej 1 000 000 dílků" + pieces_solved_5: "Nasbírej 2 000 000 dílků" + speed_500_pieces_1: "Slož puzzle s 500 dílky pod 5 hodin (sólo)" + speed_500_pieces_2: "Slož puzzle s 500 dílky pod 2 hodiny (sólo)" + speed_500_pieces_3: "Slož puzzle s 500 dílky pod 1 hodinu (sólo)" + speed_500_pieces_4: "Slož puzzle s 500 dílky pod 45 minut (sólo)" + speed_500_pieces_5: "Slož puzzle s 500 dílky pod 30 minut (sólo)" + streak_1: "Skládej puzzle 7 dní v řadě" + streak_2: "Skládej puzzle 30 dní v řadě" + streak_3: "Skládej puzzle 90 dní v řadě" + streak_4: "Skládej puzzle 180 dní v řadě" + streak_5: "Skládej puzzle 365 dní v řadě" + team_player_1: "Slož své první puzzle v týmu nebo ve dvojici" + team_player_2: "Slož 5 puzzlí v týmu nebo ve dvojici" + team_player_3: "Slož 25 puzzlí v týmu nebo ve dvojici" + team_player_4: "Slož 100 puzzlí v týmu nebo ve dvojici" + team_player_5: "Slož 500 puzzlí v týmu nebo ve dvojici" + zen_puzzler_1: "Zaznamenej své první relax složení bez času" + zen_puzzler_2: "Zaznamenej 10 relax složení bez času" + zen_puzzler_3: "Zaznamenej 50 relax složení bez času" + zen_puzzler_4: "Zaznamenej 150 relax složení bez času" + zen_puzzler_5: "Zaznamenej 365 relax složení bez času" + first_try_1: "Zaznamenej 5 složení na první pokus" + first_try_2: "Zaznamenej 50 složení na první pokus" + first_try_3: "Zaznamenej 200 složení na první pokus" + first_try_4: "Zaznamenej 500 složení na první pokus" + first_try_5: "Zaznamenej 1 000 složení na první pokus" + unboxed_1: "Slož své první puzzle bez koukání na krabici" + unboxed_2: "Slož 5 puzzlí bez koukání na krabici" + unboxed_3: "Slož 25 puzzlí bez koukání na krabici" + unboxed_4: "Slož 50 puzzlí bez koukání na krabici" + unboxed_5: "Slož 100 puzzlí bez koukání na krabici" + brand_explorer_1: "Slož puzzle od 3 různých výrobců" + brand_explorer_2: "Slož puzzle od 10 různých výrobců" + brand_explorer_3: "Slož puzzle od 25 různých výrobců" + brand_explorer_4: "Slož puzzle od 50 různých výrobců" + brand_explorer_5: "Slož puzzle od 100 různých výrobců" + marathoner_1: "Slož své první puzzle s 2 000+ dílky" + marathoner_2: "Slož 5 puzzlí s 2 000+ dílky" + marathoner_3: "Slož 15 puzzlí s 2 000+ dílky" + marathoner_4: "Slož 40 puzzlí s 2 000+ dílky" + marathoner_5: "Slož 100 puzzlí s 2 000+ dílky" + photographer_1: "Přidej fotku ke svému prvnímu složenému puzzle" + photographer_2: "Přidej fotky k 25 složeným puzzlím" + photographer_3: "Přidej fotky ke 100 složeným puzzlím" + photographer_4: "Přidej fotky k 500 složeným puzzlím" + photographer_5: "Přidej fotky k 1 000 složeným puzzlím" + steady_hands_1: "Slož alespoň jedno puzzle ve 2 čtvrtletích roku po sobě" + steady_hands_2: "Slož alespoň jedno puzzle ve 4 čtvrtletích roku po sobě" + steady_hands_3: "Slož alespoň jedno puzzle v 8 čtvrtletích roku po sobě" + steady_hands_4: "Slož alespoň jedno puzzle ve 12 čtvrtletích roku po sobě" + steady_hands_5: "Slož alespoň jedno puzzle v 16 čtvrtletích roku po sobě" + librarian_1: "Prosaď svůj první návrh na vylepšení katalogu" + librarian_2: "Prosaď 5 návrhů na vylepšení katalogu" + librarian_3: "Prosaď 20 návrhů na vylepšení katalogu" + librarian_4: "Prosaď 50 návrhů na vylepšení katalogu" + librarian_5: "Prosaď 100 návrhů na vylepšení katalogu" + speed_1000_pieces_1: "Slož puzzle s 1 000 dílky pod 8 hodin (sólo)" + speed_1000_pieces_2: "Slož puzzle s 1 000 dílky pod 4 hodiny (sólo)" + speed_1000_pieces_3: "Slož puzzle s 1 000 dílky pod 2,5 hodiny (sólo)" + speed_1000_pieces_4: "Slož puzzle s 1 000 dílky pod 1 hodinu 45 minut (sólo)" + speed_1000_pieces_5: "Slož puzzle s 1 000 dílky pod 1 hodinu 15 minut (sólo)" + weekend_puzzler_1: "Zvládni 10 víkendových složení" + weekend_puzzler_2: "Zvládni 50 víkendových složení" + weekend_puzzler_3: "Zvládni 150 víkendových složení" + weekend_puzzler_4: "Zvládni 300 víkendových složení" + weekend_puzzler_5: "Zvládni 600 víkendových složení" + cataloger_1: "Přidej do katalogu své první schválené puzzle" + cataloger_2: "Přidej do katalogu 10 schválených puzzlí" + cataloger_3: "Přidej do katalogu 50 schválených puzzlí" + cataloger_4: "Přidej do katalogu 150 schválených puzzlí" + cataloger_5: "Přidej do katalogu 300 schválených puzzlí" + unit: + puzzles: "puzzlí" + pieces: "dílků" + days: "dní" + team_solves: "týmových složení" + "scan": "meta": "title": "Čtečka čárových kódů" @@ -2804,6 +3157,39 @@ qr_code: "most_solved": "Nejskládanější puzzle %pieces% dílků" "view_all": "Zobrazit všechny puzzle %pieces% dílků" +guides: + breadcrumb: + home: "Domů" + guides: "Průvodce" + ui: + eyebrow: "Průvodce" + updated: "Aktualizováno %date%" + data_note: "Živá data z komunity" + read_next: "Další čtení" + cta_title: "Chceš si změřit čas u dalšího puzzle?" + cta_stopwatch: "Spustit stopky" + cta_puzzles: "Procházet databázi puzzlí" + cta_events: "Najít soutěž" + index: + title: "Průvodce speed puzzlingem" + meta_description: "Průvodce speed puzzlingem podložené skutečnými daty o časech skládání: jak dlouho puzzle opravdu trvají, jak fungují soutěže a jak se zrychlit." + intro: "Napsáno speed puzzling komunitou, podloženo skutečnými naměřenými časy skládání — žádné odhady." + read_guide: "Číst průvodce" + footnote: "Všechny statistiky v těchto průvodcích se počítají ze složení zaznamenaných na MySpeedPuzzling a automaticky se obnovují, jak komunita zaznamenává nové časy." + what_is: + title: "Co je speed puzzling?" + meta_description: "Speed puzzling je skládání puzzle na čas. Zjisti, jak fungují soutěže jako WJPC, jaké časy jsou běžné a jak začít." + card_description: "Kompletní úvod: formáty, jak fungují soutěže, typické časy a jak se přidat ke komunitě." + how_long: + title: "Jak dlouho trvá složit puzzle s 1000 dílky?" + meta_description: "Změřeno na %count% zaznamenaných sólo složeních: medián u puzzle s 1000 dílky je %median%. Skutečné percentily a nejrychlejší časy podle počtu dílků." + meta_description_fallback: "Jediná odpověď na internetu podložená daty: mediány časů, percentily a nejrychlejší zaznamenaná složení podle počtu dílků, ze skutečně naměřených časů." + card_description: "Skutečná data, žádné odhady: mediány časů, percentily a nejrychlejší zaznamenané výsledky podle počtu dílků." + tips: + title: "Tipy na speed puzzling: jak se zrychlit" + meta_description: "Deset praktických tipů na speed puzzling od soutěžních skládačů — třídění, okraje, skládání podle barev, příprava a jak měřit skutečný pokrok." + card_description: "Deset technik, které opravdu zkrátí tvůj čas skládání, plus komunitní měřítka, se kterými se můžeš porovnat." + "wjpc_hub": "meta": "title": "Mistrovství světa ve skládání puzzle" diff --git a/translations/messages.de.yml b/translations/messages.de.yml index 859dd844..78469bae 100644 --- a/translations/messages.de.yml +++ b/translations/messages.de.yml @@ -179,6 +179,8 @@ "link_to_hub": "Suchen Sie nach dem meist gelösten Puzzle oder den aktivsten Spielern? Wir haben es zum neuen Hub verschoben!" "msp_elo_banner": "Wir haben gerade die MSP Rating Rangliste BETA gestartet — ein neues fähigkeitsbasiertes Ranking-System. Es ist ganz frisch, also rechnet mit Anpassungen, während wir es feintunen!" "msp_elo_cta": "MSP Rating Rangliste" + "xp_ladder_banner": "Zwei neue Ranglisten sind da: XP dafür, wie viel du puzzelst, Erfolgspunkte dafür, was du vollendest." + "xp_ladder_cta": "XP-Bestenliste" "filters": "button": "Filter" "filter_by": "Filtern nach" @@ -392,6 +394,7 @@ "delete_button": "Löschen — nie passiert!" "delete_modal_message": "Nur um sicher zu gehen..." "delete_modal_confirm": "Wirklich löschen?" + "delete_xp_warning": "Du verlierst %xp% XP, die dieses Ergebnis gebracht hat." "delete_modal_discard_button": "Nein, behalten" "delete_modal_confirm_button": "Ja, löschen" "error": @@ -694,6 +697,13 @@ "frequency_48_hours": "Alle 48 Stunden" "frequency_1_week": "Einmal pro Woche" "newsletter_enabled": "Newsletter erhalten" + "content_digest_frequency": "Wochenrückblick per E-Mail" + "content_digest_help": "Deine Puzzle-Woche: XP, Erfolge, Statistiken und die Aktivität deiner Freunde. Wöchentlich ist genau richtig." + "content_digest_none": "Keinen Rückblick senden" + "content_digest_daily": "Täglich + wöchentlich" + "content_digest_weekly": "Wöchentlich" + "hide_experience_system": "Erfahrungssystem (XP & Level) ausblenden" + "hide_experience_system_help": "Dein Level, deine XP-Quittungen, Jubelmomente und Bestenlisten-Einträge verschwinden überall. XP sammeln sich im Stillen weiter — es geht also nichts verloren, wenn du es wieder einschaltest." "newsletter_help": "Wir senden gelegentlich einen Newsletter über Neuigkeiten auf der Plattform, meist über neue Funktionen. Kein Marketing, keine Werbung — nur Neuigkeiten. Erwartete Häufigkeit: maximal 1x pro Monat." "messaging_notifications": "Nachrichten & Benachrichtigungen" "personal_access_tokens": "Persönliche Zugriffstoken" @@ -920,11 +930,354 @@ "conversation_request": "general": "%player% hat dir eine Konversationsanfrage gesendet" "marketplace": "%player% hat dir eine Nachricht über %puzzle% gesendet" -"badges": - "title": "Abzeichen" - "my_title": "Meine Abzeichen" - "badge": - "supporter": "Unterstützer" +xp: + level_chip: "Lv %level%" + total: "%xp% XP" + total_tooltip: "%xp% XP insgesamt verdient" + max_level_reached: "Gipfel erreicht — Level 50!" + progress_label: "%xp% XP bis Level %level%" + receipt: + title: "Deine XP für dieses Puzzle" + total: "Gesamt" + waiting_teaser: "{1}Dieses Ergebnis zählt für 1 wartenden Erfolg 🔒|]1,Inf[Dieses Ergebnis zählt für %count% wartende Erfolge 🔒" + max_level_title: "Level 50 — XP zählen weiter, der Ruhm bleibt für immer" + nearest_achievements: "Deine nächsten Erfolge sind zum Greifen nah:" + max_level_all_done: "Du hast alles erobert, was es zu erobern gibt. Wir sind ehrlich beeindruckt." + relax_repeat: "Ein vertrautes Puzzle, einfach nur zum Genießen — diesmal keine XP, und genau darum geht's." + counting: "Wir zählen deine XP…" + line: + base: "Puzzle gelegt" + base_repeat_second: "Wiederholung (2. Mal, ×50%)" + base_repeat_later: "Wiederholung (ab 3. Mal, ×25%)" + base_relax: "Relax-Puzzle (×50%)" + solve_difficulty_bonus: "Schwierigkeitsbonus" + solve_unboxed_bonus: "Blind-gelegt-Bonus" + solve_speed_bonus: "Tempobonus" + solve_weekly_boost: "Wochen-Boost" + solve_daily_warmup: "Tägliches Warm-up" + difficulty_settlement: "Schwierigkeitsbonus (nachgereicht)" + speed_settlement: "Tempobonus (nachgereicht)" + achievement: "Erfolg erhalten" + solve_compensation: "Ergebnis gelöscht" + difficulty_pending: "Schwierigkeitsbonus ausstehend — wird nachgereicht, sobald dieses Puzzle bewertet ist" + speed_pending: "Tempobonus ausstehend — braucht Zeiten von 3 Puzzlern" + levelup: + aria: "Level-up! Du hast Level %level% erreicht" + label: "Level-up!" + max_label: "Der Gipfel!" + message: "Deine Puzzle-Reise klettert weiter nach oben. Wunderbar gemacht!" + max_message: "Level 50. Höher geht es nicht. Ab jetzt ist die Erfolgspunkte-Rangliste dein Berg." + enter_ap_ladder: "Zur AP-Rangliste" + view_ap_ladder: "AP-Rangliste ansehen" + skip_hint: "Tippe irgendwo, um fortzufahren" + achievement_toast: + title: "Neuer Erfolg!" + estimate: + line: "Dieses Puzzle bringt ~%base% XP + bis zu %bonus% Bonus" + repeat_note: "Du hast dieses Puzzle schon einmal gelegt — diesmal zählt es ×%multiplier%." + unrated_note: "Der Schwierigkeitsbonus wird automatisch nachgereicht, sobald dieses Puzzle bewertet ist." + leaderboard: + meta_title: "XP-Bestenliste" + title: "XP-Bestenliste" + subtitle: "Aktivität, gefeiert." + all_leaderboards: "Alle Bestenlisten" + favorites_only: "Nur Favoriten" + player: "Puzzler" + value: + xp: "XP gesamt" + achievement-points: "AP" + tab: + xp: "XP" + achievement-points: "Erfolgspunkte" + ap_title: "Erfolgspunkte-Rangliste" + ap_subtitle: "Sammeln, im Ranking." + ap_login_required: "Melde dich an, um die Erfolgspunkte-Rangliste zu sehen." + xp_value: "%xp% XP" + ap_value: "%points% AP" + your_position: "Deine Platzierung" + empty: "Noch nichts zu sehen — erfasse ein Ergebnis und eröffne die Bestenliste!" + history: + meta_title: "Mein XP-Verlauf" + title: "Mein XP-Verlauf" + subtitle: "Jeder Punkt, sauber verbucht — dein vollständiges XP-Konto." + when: "Wann" + reason: "Grund" + empty: "Noch keine XP — dein erstes Puzzle ändert das." + deleted_solve: "gelöschtes Ergebnis" + pagination: "Seiten des XP-Verlaufs" + note: "Fragst du dich, was hinter einer Zeile steckt?" + reveal: + meta_title: "Deine Puzzle-Reise, enthüllt" + title: "Deine ganze Reise ist gerade zu XP geworden ✨" + intro: "Jedes Puzzle, das du je erfasst hast, zählt. Hier ist, was deine Geschichte wert ist:" + level_label: "Level" + xp_note: "verdient in deiner gesamten Puzzle-Geschichte" + achievements_member: "{1}Und 1 Erfolg gehört schon dir — du findest ihn auf deinem Profil!|]1,Inf[Und %count% Erfolge gehören schon dir — du findest sie auf deinem Profil!" + share_title: "Ich bin Level %level% auf MySpeedPuzzling!" + share_button: "Mein Level teilen" + continue: "Zu meinem Profil" + to_badge_reveals: "Hast du Erfolge zum Aufdecken? Dreh sie hier um." + explainer: + title: "So funktionieren XP & Level" + intro: "Jedes Puzzle, das du fertigstellst, bringt dich weiter. XP (Erfahrungspunkte) feiern deine Aktivität — nicht, wie schnell du bist, sondern dass du da warst und gepuzzelt hast. Erfasse ein Ergebnis, verdiene XP und sieh zu, wie dein Level von 1 bis ganz hinauf zu 50 wächst." + currencies: + heading: "Die drei Zahlen auf MySpeedPuzzling" + header_what: "Was" + header_measures: "Misst" + header_who: "Wer sieht es" + xp_name: "XP & Level" + xp_measures: "Deine Aktivität — jedes Puzzle zählt" + xp_who: "Alle, für immer kostenlos" + ap_name: "Erfolgspunkte (AP)" + ap_measures: "Deine Sammlung verdienter Erfolge" + ap_who: "Mitglieder" + rating_name: "MSP Rating" + rating_measures: "Dein Tempo und Können" + rating_who: "Mitglieder (unverändert, separat)" + never_bought: "XP lassen sich nicht kaufen — keine Boosts, keine Multiplikatoren, keine Abkürzungen. Niemals." + unlock_nothing: "Level schalten nichts Funktionales frei; sie sind deine sichtbare Puzzle-Identität." + how: + heading: "Wie aus einem Puzzle XP werden" + intro: "Deine Quittung nach jedem Puzzle zeigt genau, woher jeder Punkt kommt:" + base: "Basis: etwa 1 XP pro 100 Teile (ein 500-Teile-Puzzle ≈ 5 XP). Gedeckelt bei 60." + difficulty: "Schwierigkeitsbonus: schwerere Puzzles (Community-Schwierigkeitsstufen 3–6) bringen +15% bis +50%." + team: "Team-Puzzles: alle in der Gruppe erhalten 75% des Solo-Werts — gemeinsames Puzzeln zählt für jedes Paar Hände." + unboxed: "Blind-gelegt-Bonus: ohne Schachtelbild gelegt? +20%." + repeat: "Wiederholungen: das 2. Ergebnis auf Zeit beim selben Puzzle bringt 50%, spätere 25%. Relax-Modus: erstes Ergebnis 50%, Wiederholungen 0%." + speed: "Tempobonus: Solo-Ergebnisse auf Zeit, die schneller als der Community-Median des Puzzles sind, bringen +5%, Top 25% +10%, Top 10% +15% (braucht Zeiten von mindestens 3 Puzzlern)." + weekly: "Wochen-Boost: deine ersten 5 Puzzles jeder Woche bringen +50% extra." + daily: "Tägliches Warm-up: das erste Puzzle deines Tages bringt pauschal +2 XP." + example: + heading: "Rechenbeispiel" + body: "Ein Solo-Ergebnis auf Zeit, zum ersten Mal gelegt: ein 1000-Teile-Puzzle der Schwierigkeitsstufe 4, blind gelegt, schneller als der Median, als erstes Puzzle der Woche und des Tages:" + math: "Basis 10 + Schwierigkeit 3 + blind gelegt 3 + Tempo 1 + Wochen-Boost 8 + Warm-up 2 = 27 XP" + unrated: + heading: "Unbewertete Puzzles" + body: "Brandneue Katalog-Puzzles haben manchmal noch keine Schwierigkeitsstufe. Die Basis-XP bekommst du sofort, und der Schwierigkeitsbonus kommt automatisch (wird \"nachgereicht\"), sobald die Community das Puzzle bewertet hat. Dasselbe gilt für den Tempobonus, sobald genug Puzzler Zeiten erfasst haben." + achievements: + heading: "Auch Erfolge bringen XP" + body: "Jede Erfolgsstufe bringt einmalig XP, für immer: Bronze 5 · Silber 10 · Gold 25 · Platin 50 · Diamant 100." + levels: + heading: "Level" + header_level: "Level" + header_xp: "XP" + summit: "Level 50 ist der Gipfel — insgesamt 3.160 XP. XP sammeln sich auch danach weiter; ab Level 50 wird die Erfolgspunkte-Rangliste dein nächster Berg." + lose: + heading: "Kann ich XP verlieren?" + body: "Nur durch Löschen oder Bearbeiten eines Ergebnisses — die XP, die es gebracht hat, gehen mit. Sonst nimmt dir nichts jemals XP weg. Erfolge sind dauerhaft." + faq: + heading: "FAQ" + old_solves_question: "Zählen alte Ergebnisse?" + old_solves_answer: "Ja! Deine gesamte Historie wurde zum Start umgewandelt (Basisformel, ohne zeitbasierte Boni — die gelten nur ab jetzt)." + opt_out_question: "Ich will das alles nicht." + opt_out_answer: "Verstanden — schalte es in deinen Profileinstellungen aus (\"Erfahrungssystem\"), und dein Level, deine XP und die Jubelmomente verschwinden aus der Ansicht." + friend_question: "Warum hat jemand anderes mehr XP für dasselbe Puzzle bekommen?" + friend_answer: "Wiederholungsabzüge, Wochen-Boosts und tägliche Warm-ups sind persönlich; zwei Quittungen sind selten gleich. Tippe auf eine Zeile der Quittung, um ihren Grund zu sehen." + fair_play_question: "Wie bleibt das fair?" + fair_play_answer: "Ein paar stille, automatische Leitplanken halten die Zahlen ehrlich — alles darüber liest du auf der Seite Fair Play & Vertrauen." + fair_play: + title: "Fair Play & Vertrauen" + intro: "MySpeedPuzzling basiert auf Vertrauen. Niemand prüft deine Ergebnisse, bevor sie zählen — wir glauben dir, und die Zahlen der Community bleiben dank ein paar stiller, automatischer Leitplanken aussagekräftig:" + principle_no_buying: "XP messen Aktivität, niemals Geld: Es gibt keine Möglichkeit, XP, Boosts oder Multiplikatoren zu kaufen." + principle_repeats: "Wiederholte Ergebnisse beim selben Puzzle bringen jedes Mal weniger — ein Puzzle immer wieder zu erfassen ist keine Abkürzung." + principle_speed: "Der Tempobonus gilt nur dort, wo eine verlässliche Community-Referenz existiert, und unglaubwürdig schnelle Zeiten bekommen ihn schlicht nicht. Keine Anschuldigung, kein Drama — der Bonus gilt einfach nicht." + principle_deleting: "Das Löschen eines Ergebnisses entfernt die damit verdienten XP, automatisch und transparent (dein XP-Verlauf zeigt jeden Eintrag)." + principle_caps: "Extrem große oder ungewöhnliche Einträge werden gedeckelt, damit kein einzelnes Ergebnis die Rangliste verzerren kann." + closing_thresholds: "Die genauen Schwellenwerte veröffentlichen wir bewusst nicht — sie sorgen für Fairness und sollen nicht ausgetrickst werden. Wenn dir auf einer Bestenliste etwas seltsam vorkommt, schreib uns; ein Mensch schaut sich jede Meldung an." + closing_celebrate: "Puzzle ehrlich, feiere laut. 🧩" + explainer_link: "Neugierig, wie jeder Punkt entsteht? Siehe So funktionieren XP & Level." + +content_digest: + unsubscribe: + meta_title: "Wochenrückblick abbestellen" + confirm_title: "Den wöchentlichen Rückblick abbestellen?" + confirm_text: "Kein Problem — ein Klick unten und der Wochenrückblick stoppt. In deinen Benachrichtigungseinstellungen kannst du ihn jederzeit wieder aktivieren." + confirm_button: "Ja, abbestellen" + done_title: "Du bist abgemeldet" + done_text: "Der Wochenrückblick landet nicht mehr in deinem Postfach. Falls du ihn vermisst: Er wartet in deinen Benachrichtigungseinstellungen." + back_home: "Zurück zu MySpeedPuzzling" + +badges: + title: "Erfolge" + my_title: "Meine Erfolge" + new: "NEU" + browse_all: "Alle Erfolge durchstöbern" + reveal: "Deck deinen neuen Erfolg auf" + waiting_teaser: "{1}1 Erfolg wartet auf dich — werde Mitglied, um ihn aufzudecken!|]1,Inf[%count% Erfolge warten auf dich — werde Mitglied, um sie aufzudecken!" + waiting_teaser_zero: "Dein erster Erfolg ist näher, als du denkst — erfasse ein Ergebnis und schau, was passiert." + unlock_with_membership: "Mit Mitgliedschaft freischalten" + ap_total: "%points% AP" + ap_total_tooltip: "Deine Erfolgspunkte — jede verdiente Stufe zählt, für immer" + free_user_hint: "Du verdienst auch ohne Mitgliedschaft weiter Erfolge — sie warten sicher und wohlbehalten auf dich." + earned_waiting: "Verdient ✓ — wartet 🔒" + view_holders: "Sieh, wer ihn verdient hat" + how_it_works_hint: "Erfolge bringen XP und Erfolgspunkte." + how_it_works_link: "So funktionieren XP & Level" + detail: + meta_title: "%name% — Puzzler mit diesem Erfolg" + country_filter: "Land" + all_countries: "Alle Länder" + newest_earners: "Zuletzt verdient" + holders_count: "{0}Noch niemand|{1}1 Puzzler|]1,Inf[%count% Puzzler" + holders_count_tooltip: "Hier zählen alle — auch Puzzler, deren Profile unten nicht aufgeführt sind" + first_to_earn: "Als Erster verdient" + more_puzzlers: "+%count% weitere Puzzler" + only_hidden_holders: "{1}1 Puzzler hat diese Stufe verdient — das Profil ist nicht öffentlich gelistet.|]1,Inf[%count% Puzzler haben diese Stufe verdient — ihre Profile sind nicht öffentlich gelistet." + nobody_yet: "Diese Stufe hat noch niemand verdient. Wer zuerst kommt, schreibt Geschichte!" + listing_note: "Die Listen zeigen Mitglieder mit öffentlichem Profil; die Zahlen umfassen alle Puzzler." + reveals: + meta_title: "Deck deine Erfolge auf" + title: "Deine Erfolge sind da 🎉" + intro: "{1}1 Erfolg hat still auf dich gewartet. Tippe darauf, um ihn umzudrehen!|]1,Inf[%count% Erfolge haben still auf dich gewartet. Tippe auf jeden, um ihn umzudrehen!" + hint: "Lass dir Zeit — jedes Umdrehen verdient seinen eigenen kleinen Moment." + all_done: "Alles aufgedeckt — dein Profil trägt sie jetzt mit Stolz." + invite: "{1}1 Erfolg wartet auf seinen großen Moment!|]1,Inf[%count% Erfolge warten auf ihren großen Moment!" + invite_button: "Jetzt aufdecken" + back_to_profile: "Zurück zu meinem Profil" + overview_title: "Erfolge" + overview_subtitle: "Verdiene Erfolge, indem du Meilensteine auf deiner Puzzle-Reise erreichst" + progress_label: "%current% / %target%" + progress_time_label: "%current_time% → Ziel %target_time%" + locked: "Gesperrt" + earned_on: "Verdient am %date%" + highest_earned: "Höchste verdiente Stufe" + not_earned_yet: "Noch nicht verdient" + keep_going: "Weiter so!" + login_to_track: "Melde dich an, um deinen Fortschritt bei jedem Erfolg zu sehen." + info: + open: "Wofür gibt es %achievement%?" + earned: "Erhalten" + next_tier: "Als Nächstes: %tier%" + single_tier_note: "Dieser Erfolg hat nur eine Stufe — er wird von Hand vergeben, nicht erpuzzelt." + tier: + bronze: "Bronze" + silver: "Silber" + gold: "Gold" + platinum: "Platin" + diamond: "Diamant" + badge: + supporter: "Pionier" + puzzles_solved: "Puzzle-Entdecker" + pieces_solved: "Teilefresser" + speed_500_pieces: "Tempoteufel (500 Teile)" + streak: "Feuer & Flamme" + team_player: "Teamgeist" + zen_puzzler: "Zen-Puzzler" + first_try: "Auf Anhieb" + unboxed: "Blind gelegt" + brand_explorer: "Markenentdecker" + marathoner: "Marathon-Puzzler" + photographer: "Fotograf" + steady_hands: "Ruhige Hand" + librarian: "Bibliothekar" + speed_1000_pieces: "Tempoteufel (1.000 Teile)" + weekend_puzzler: "Wochenend-Puzzler" + cataloger: "Archivar" + description: + supporter: "Verliehen an die Puzzler, die früh an MySpeedPuzzling geglaubt und beim Wachsen geholfen haben." + puzzles_solved: "Löse verschiedene Puzzles, um diese Leiter zu erklimmen." + pieces_solved: "Je mehr Teile, desto besser — jedes Teil, das du je gelegt hast, zählt." + speed_500_pieces: "Dein schnellstes 500-Teile-Solo-Ergebnis bestimmt deine Stufe." + streak: "Lege Tag für Tag Puzzles, ohne auszusetzen." + team_player: "Tu dich mit anderen Puzzlern zusammen und knackt Puzzles gemeinsam." + zen_puzzler: "Puzzle einfach nur zum Vergnügen — hier zählen entspannte Ergebnisse ohne Zeit." + first_try: "Gleich beim ersten Mal — jedes Ergebnis, das du als ersten Versuch eines Puzzles erfasst, zählt." + unboxed: "Lege Puzzles, ohne aufs Schachtelbild zu schauen — die ultimative Mystery-Herausforderung." + brand_explorer: "Probiere Puzzles verschiedener Marken und entdecke deine Favoriten." + marathoner: "Bezwinge die Großen — jedes gelegte Puzzle mit 2.000 oder mehr Teilen zählt." + photographer: "Mach ein Foto deines fertigen Puzzles, wenn du ein Ergebnis erfasst — jedes Bild zählt." + steady_hands: "Puzzle über aufeinanderfolgende Quartale hinweg, mit mindestens einem Ergebnis in jedem — ohne Lücke." + librarian: "Hilf mit, den Puzzle-Katalog korrekt zu halten — nur deine akzeptierten Verbesserungsvorschläge zählen." + speed_1000_pieces: "Dein schnellstes 1.000-Teile-Solo-Ergebnis bestimmt deine Stufe." + weekend_puzzler: "Samstage und Sonntage sind zum Puzzeln da — jedes Wochenend-Ergebnis zählt." + cataloger: "Lass den Puzzle-Katalog wachsen — jedes genehmigte Puzzle, das du hinzufügst, zählt." + requirement: + puzzles_solved_1: "Löse 10 verschiedene Puzzles" + puzzles_solved_2: "Löse 100 verschiedene Puzzles" + puzzles_solved_3: "Löse 500 verschiedene Puzzles" + puzzles_solved_4: "Löse 1.000 verschiedene Puzzles" + puzzles_solved_5: "Löse 2.000 verschiedene Puzzles" + pieces_solved_1: "Sammle 10.000 Teile" + pieces_solved_2: "Sammle 100.000 Teile" + pieces_solved_3: "Sammle 500.000 Teile" + pieces_solved_4: "Sammle 1.000.000 Teile" + pieces_solved_5: "Sammle 2.000.000 Teile" + speed_500_pieces_1: "Lege ein 500-Teile-Puzzle in unter 5 Stunden (solo)" + speed_500_pieces_2: "Lege ein 500-Teile-Puzzle in unter 2 Stunden (solo)" + speed_500_pieces_3: "Lege ein 500-Teile-Puzzle in unter 1 Stunde (solo)" + speed_500_pieces_4: "Lege ein 500-Teile-Puzzle in unter 45 Minuten (solo)" + speed_500_pieces_5: "Lege ein 500-Teile-Puzzle in unter 30 Minuten (solo)" + streak_1: "Lege an 7 Tagen in Folge Puzzles" + streak_2: "Lege an 30 Tagen in Folge Puzzles" + streak_3: "Lege an 90 Tagen in Folge Puzzles" + streak_4: "Lege an 180 Tagen in Folge Puzzles" + streak_5: "Lege an 365 Tagen in Folge Puzzles" + team_player_1: "Schließe dein erstes Team- oder Duo-Puzzle ab" + team_player_2: "Schließe 5 Team- oder Duo-Puzzles ab" + team_player_3: "Schließe 25 Team- oder Duo-Puzzles ab" + team_player_4: "Schließe 100 Team- oder Duo-Puzzles ab" + team_player_5: "Schließe 500 Team- oder Duo-Puzzles ab" + zen_puzzler_1: "Erfasse dein erstes entspanntes Ergebnis ohne Zeit" + zen_puzzler_2: "Erfasse 10 entspannte Ergebnisse ohne Zeit" + zen_puzzler_3: "Erfasse 50 entspannte Ergebnisse ohne Zeit" + zen_puzzler_4: "Erfasse 150 entspannte Ergebnisse ohne Zeit" + zen_puzzler_5: "Erfasse 365 entspannte Ergebnisse ohne Zeit" + first_try_1: "Erfasse 5 Erstversuche" + first_try_2: "Erfasse 50 Erstversuche" + first_try_3: "Erfasse 200 Erstversuche" + first_try_4: "Erfasse 500 Erstversuche" + first_try_5: "Erfasse 1.000 Erstversuche" + unboxed_1: "Lege dein erstes Puzzle, ohne auf die Schachtel zu schauen" + unboxed_2: "Lege 5 Puzzles, ohne auf die Schachtel zu schauen" + unboxed_3: "Lege 25 Puzzles, ohne auf die Schachtel zu schauen" + unboxed_4: "Lege 50 Puzzles, ohne auf die Schachtel zu schauen" + unboxed_5: "Lege 100 Puzzles, ohne auf die Schachtel zu schauen" + brand_explorer_1: "Löse Puzzles von 3 verschiedenen Marken" + brand_explorer_2: "Löse Puzzles von 10 verschiedenen Marken" + brand_explorer_3: "Löse Puzzles von 25 verschiedenen Marken" + brand_explorer_4: "Löse Puzzles von 50 verschiedenen Marken" + brand_explorer_5: "Löse Puzzles von 100 verschiedenen Marken" + marathoner_1: "Schließe dein erstes Puzzle mit 2.000+ Teilen ab" + marathoner_2: "Schließe 5 Puzzles mit 2.000+ Teilen ab" + marathoner_3: "Schließe 15 Puzzles mit 2.000+ Teilen ab" + marathoner_4: "Schließe 40 Puzzles mit 2.000+ Teilen ab" + marathoner_5: "Schließe 100 Puzzles mit 2.000+ Teilen ab" + photographer_1: "Füge deinem ersten fertigen Puzzle ein Foto hinzu" + photographer_2: "Füge 25 fertigen Puzzles Fotos hinzu" + photographer_3: "Füge 100 fertigen Puzzles Fotos hinzu" + photographer_4: "Füge 500 fertigen Puzzles Fotos hinzu" + photographer_5: "Füge 1.000 fertigen Puzzles Fotos hinzu" + steady_hands_1: "Löse in 2 Quartalen in Folge mindestens ein Puzzle" + steady_hands_2: "Löse in 4 Quartalen in Folge mindestens ein Puzzle" + steady_hands_3: "Löse in 8 Quartalen in Folge mindestens ein Puzzle" + steady_hands_4: "Löse in 12 Quartalen in Folge mindestens ein Puzzle" + steady_hands_5: "Löse in 16 Quartalen in Folge mindestens ein Puzzle" + librarian_1: "Bring deinen ersten Katalog-Verbesserungsvorschlag durch" + librarian_2: "Bring 5 Katalog-Verbesserungsvorschläge durch" + librarian_3: "Bring 20 Katalog-Verbesserungsvorschläge durch" + librarian_4: "Bring 50 Katalog-Verbesserungsvorschläge durch" + librarian_5: "Bring 100 Katalog-Verbesserungsvorschläge durch" + speed_1000_pieces_1: "Lege ein 1.000-Teile-Puzzle in unter 8 Stunden (solo)" + speed_1000_pieces_2: "Lege ein 1.000-Teile-Puzzle in unter 4 Stunden (solo)" + speed_1000_pieces_3: "Lege ein 1.000-Teile-Puzzle in unter 2,5 Stunden (solo)" + speed_1000_pieces_4: "Lege ein 1.000-Teile-Puzzle in unter 1 Stunde 45 Minuten (solo)" + speed_1000_pieces_5: "Lege ein 1.000-Teile-Puzzle in unter 1 Stunde 15 Minuten (solo)" + weekend_puzzler_1: "Lege 10 Puzzles an Wochenenden" + weekend_puzzler_2: "Lege 50 Puzzles an Wochenenden" + weekend_puzzler_3: "Lege 150 Puzzles an Wochenenden" + weekend_puzzler_4: "Lege 300 Puzzles an Wochenenden" + weekend_puzzler_5: "Lege 600 Puzzles an Wochenenden" + cataloger_1: "Füge dein erstes genehmigtes Puzzle zum Katalog hinzu" + cataloger_2: "Füge 10 genehmigte Puzzles zum Katalog hinzu" + cataloger_3: "Füge 50 genehmigte Puzzles zum Katalog hinzu" + cataloger_4: "Füge 150 genehmigte Puzzles zum Katalog hinzu" + cataloger_5: "Füge 300 genehmigte Puzzles zum Katalog hinzu" + unit: + puzzles: "Puzzles" + pieces: "Teile" + days: "Tage" + team_solves: "Team-Ergebnisse" + "scan": "meta": "title": "Barcode-Leser" @@ -2806,6 +3159,39 @@ qr_code: "most_solved": "Meistgelegte %pieces%-teilige Puzzles" "view_all": "Alle %pieces%-teiligen Puzzles anzeigen" +guides: + breadcrumb: + home: "Startseite" + guides: "Guides" + ui: + eyebrow: "Guide" + updated: "Aktualisiert am %date%" + data_note: "Live-Daten der Community" + read_next: "Als Nächstes lesen" + cta_title: "Bereit, bei deinem nächsten Puzzle die Zeit zu stoppen?" + cta_stopwatch: "Stoppuhr starten" + cta_puzzles: "Puzzle-Datenbank durchstöbern" + cta_events: "Einen Wettbewerb finden" + index: + title: "Speed Puzzling Guides" + meta_description: "Guides zum Speed Puzzling, gestützt auf echte Legezeiten: wie lange Puzzles wirklich dauern, wie Wettbewerbe funktionieren und wie du schneller wirst." + intro: "Geschrieben von der Speed-Puzzling-Community, gestützt auf echte erfasste Legezeiten — keine Schätzungen." + read_guide: "Guide lesen" + footnote: "Alle Statistiken in diesen Guides werden aus den auf MySpeedPuzzling erfassten Ergebnissen berechnet und aktualisieren sich automatisch, sobald die Community neue Zeiten erfasst." + what_is: + title: "Was ist Speed Puzzling?" + meta_description: "Speed Puzzling ist Puzzeln gegen die Uhr. Erfahre, wie Wettbewerbe wie die WJPC funktionieren, welche Zeiten typisch sind und wie du einsteigst." + card_description: "Die komplette Einführung: Formate, wie Wettbewerbe ablaufen, typische Zeiten und wie du Teil der Community wirst." + how_long: + title: "Wie lange dauert ein 1000-Teile-Puzzle?" + meta_description: "Gemessen an %count% erfassten Solo-Ergebnissen: Das mediane 1000-Teile-Puzzle dauert %median%. Echte Perzentile und Bestzeiten nach Teileanzahl." + meta_description_fallback: "Die einzige datenbasierte Antwort im Netz: mediane Zeiten, Perzentile und schnellste erfasste Ergebnisse nach Teileanzahl — aus echten Legezeiten der Community." + card_description: "Echte Daten statt Schätzungen: mediane Zeiten, Perzentile und schnellste erfasste Ergebnisse nach Teileanzahl." + tips: + title: "Speed-Puzzling-Tipps: So wirst du schneller" + meta_description: "Zehn praktische Speed-Puzzling-Tipps von Wettkampf-Puzzlern — Sortieren, Randteile, Farbblöcke, Setup und wie du echten Fortschritt misst." + card_description: "Zehn Techniken, die deine Legezeit wirklich verkürzen, plus Community-Benchmarks zum Vergleichen." + "wjpc_hub": "meta": "title": "Puzzle Weltmeisterschaft (WJPC)" diff --git a/translations/messages.en.yml b/translations/messages.en.yml index 0b76aaf9..52606cc2 100644 --- a/translations/messages.en.yml +++ b/translations/messages.en.yml @@ -202,6 +202,8 @@ ladder: link_to_hub: "Looking for most solved puzzle or most active players? We moved it to the new Hub!" msp_elo_banner: "We just launched MSP Rating Ladder BETA — a new skill-based ranking system. It's fresh out of the oven, so expect tweaks as we fine-tune it!" msp_elo_cta: "MSP Rating Ladder" + xp_ladder_banner: "Two new ladders are live: XP for how much you puzzle, Achievement Points for what you complete." + xp_ladder_cta: "XP ladder" filters: button: "Filters" @@ -447,6 +449,7 @@ edit_time: delete_button: "Delete — never happened!" delete_modal_message: "Just to be sure..." delete_modal_confirm: "Really delete?" + delete_xp_warning: "You will lose %xp% XP earned by this solve." delete_modal_discard_button: "No, keep it" delete_modal_confirm_button: "Yes, delete" @@ -875,6 +878,13 @@ edit_profile: frequency_48_hours: "Every 48 hours" frequency_1_week: "Once a week" newsletter_enabled: "Receive newsletters" + content_digest_frequency: "Weekly digest email" + content_digest_help: "Your week in puzzling: XP, achievements, stats and friends' activity. Weekly is the sweet spot." + content_digest_none: "Don't send me the digest" + content_digest_daily: "Daily + weekly" + content_digest_weekly: "Weekly" + hide_experience_system: "Hide the experience system (XP & levels)" + hide_experience_system_help: "Your level, XP receipts, celebrations and leaderboard entries disappear everywhere. XP keeps accruing silently, so nothing is lost if you turn it back on." newsletter_help: "We will occasionally send a newsletter about what's new on the platform, usually explaining new features. No marketing, no promotions — just what's new. Expected frequency: no more than 1 per month." personal_access_tokens: "Personal Access Tokens" personal_access_tokens_description: "Tokens for accessing your own data through the API." @@ -1114,11 +1124,353 @@ notifications: general: "%player% sent you a conversation request" marketplace: "%player% sent you a message about %puzzle%" +xp: + level_chip: "Lv %level%" + total: "%xp% XP" + total_tooltip: "%xp% XP earned in total" + max_level_reached: "Top of the mountain — level 50!" + progress_label: "%xp% XP to level %level%" + receipt: + title: "Your XP for this solve" + total: "Total" + waiting_teaser: "{1}This solve counted toward 1 waiting achievement 🔒|]1,Inf[This solve counted toward %count% waiting achievements 🔒" + max_level_title: "Level 50 — XP still counts, glory is forever" + nearest_achievements: "Your next achievements are within reach:" + max_level_all_done: "You have conquered everything there is to conquer. We are honestly impressed." + relax_repeat: "A familiar puzzle, purely for the joy of it — no XP this time, and that's the point." + counting: "Counting your XP…" + line: + base: "Solve" + base_repeat_second: "Repeat solve (2nd time, ×50%)" + base_repeat_later: "Repeat solve (3rd+ time, ×25%)" + base_relax: "Relax solve (×50%)" + solve_difficulty_bonus: "Difficulty bonus" + solve_unboxed_bonus: "Unboxed bonus" + solve_speed_bonus: "Speed bonus" + solve_weekly_boost: "Weekly boost" + solve_daily_warmup: "Daily warm-up" + difficulty_settlement: "Difficulty bonus (settled)" + speed_settlement: "Speed bonus (settled)" + achievement: "Achievement earned" + solve_compensation: "Solve deleted" + difficulty_pending: "Difficulty bonus pending — settles when this puzzle gets rated" + speed_pending: "Speed bonus pending — needs times from 3 puzzlers" + levelup: + aria: "Level up! You reached level %level%" + label: "Level up!" + max_label: "The summit!" + message: "Your puzzling journey keeps climbing. Beautifully done!" + max_message: "Level 50. The highest there is. From here on, the Achievement Points ladder is your mountain." + enter_ap_ladder: "Enter the AP ladder" + view_ap_ladder: "See the AP ladder" + skip_hint: "Tap anywhere to continue" + achievement_toast: + title: "New achievement!" + estimate: + line: "Solving this earns ~%base% XP + up to %bonus% bonus" + repeat_note: "You've solved this one before — this time it counts ×%multiplier%." + unrated_note: "Difficulty bonus settles automatically once this puzzle gets rated." + leaderboard: + meta_title: "XP Leaderboard" + title: "XP Leaderboard" + subtitle: "Activity, celebrated." + all_leaderboards: "All leaderboards" + favorites_only: "Favorites only" + player: "Puzzler" + value: + xp: "Total XP" + achievement-points: "AP" + tab: + xp: "XP" + achievement-points: "Achievement Points" + ap_title: "Achievement Points Ladder" + ap_subtitle: "Completion, ranked." + ap_login_required: "Log in to browse the Achievement Points ladder." + xp_value: "%xp% XP" + ap_value: "%points% AP" + your_position: "Your position" + empty: "Nothing here yet — log a solve and open the board!" + history: + meta_title: "My XP history" + title: "My XP history" + subtitle: "Every point, accounted for — your complete XP ledger." + when: "When" + reason: "Reason" + empty: "No XP yet — your first solve changes that." + deleted_solve: "deleted solve" + pagination: "XP history pages" + note: "Wondering about a line?" + reveal: + meta_title: "Your puzzling journey, revealed" + title: "Your whole journey just turned into XP ✨" + intro: "Every puzzle you ever logged counts. Here is what your history is worth:" + level_label: "Level" + xp_note: "earned across your whole puzzling history" + achievements_member: "{1}And 1 achievement is already yours — find it on your profile!|]1,Inf[And %count% achievements are already yours — find them on your profile!" + share_title: "I'm Level %level% on MySpeedPuzzling!" + share_button: "Share my level" + continue: "Take me to my profile" + to_badge_reveals: "Got achievements to reveal? Flip them here." + explainer: + title: "How XP & Levels work" + intro: "Every puzzle you finish moves you forward. XP (experience points) celebrates your activity — not how fast you are, just that you showed up and puzzled. Log a solve, earn XP, watch your level grow from 1 all the way to 50." + currencies: + heading: "The three numbers on MySpeedPuzzling" + header_what: "What" + header_measures: "Measures" + header_who: "Who sees it" + xp_name: "XP & Levels" + xp_measures: "Your activity — every solve counts" + xp_who: "Everyone, free forever" + ap_name: "Achievement Points (AP)" + ap_measures: "Your collection of earned achievements" + ap_who: "Members" + rating_name: "MSP Rating" + rating_measures: "Your speed and skill" + rating_who: "Members (unchanged, separate)" + never_bought: "XP can never be bought — no boosts, no multipliers, no shortcuts. Ever." + unlock_nothing: "Levels unlock nothing functional; they're your visual puzzling identity." + how: + heading: "How a solve turns into XP" + intro: "Your receipt after each solve shows exactly where every point came from:" + base: "Base: roughly 1 XP per 100 pieces (a 500-piece puzzle ≈ 5 XP). Capped at 60." + difficulty: "Difficulty bonus: harder puzzles (community difficulty tiers 3–6) add +15% to +50%." + team: "Team solves: everyone in the group earns 75% of the solo value — puzzling together counts for every pair of hands." + unboxed: "Unboxed bonus: solved without the box picture? +20%." + repeat: "Repeat solves: the 2nd timed solve of the same puzzle earns 50%, later ones 25%. Relax-mode: first solve 50%, repeats 0%." + speed: "Speed bonus: solo timed solves faster than the puzzle's community median earn +5%, top 25% +10%, top 10% +15% (needs times from at least 3 puzzlers)." + weekly: "Weekly boost: your first 5 solves each week earn +50% extra." + daily: "Daily warm-up: the first solve of your day brings +2 XP flat." + example: + heading: "Worked example" + body: "A solo, timed, first-time solve of a 1000-piece tier-4 puzzle, solved without the box, faster than the median, as your first solve of the week and day:" + math: "base 10 + difficulty 3 + unboxed 3 + speed 1 + weekly boost 8 + warm-up 2 = 27 XP" + unrated: + heading: "Unrated puzzles" + body: "Brand-new catalog puzzles may not have a difficulty tier yet. You earn the base XP right away, and the difficulty bonus arrives automatically (\"settles\") once the community rates the puzzle. Same for the speed bonus once enough puzzlers have logged times." + achievements: + heading: "Achievements give XP too" + body: "Every achievement tier grants XP once, forever: Bronze 5 · Silver 10 · Gold 25 · Platinum 50 · Diamond 100." + levels: + heading: "Levels" + header_level: "Level" + header_xp: "XP" + summit: "Level 50 is the summit — 3,160 XP total. XP keeps accruing past it; at level 50 the Achievement Points ladder becomes your next mountain." + lose: + heading: "Can I lose XP?" + body: "Only by deleting or editing a solve — the XP that solve earned goes with it. Nothing else ever takes XP away. Achievements are permanent." + faq: + heading: "FAQ" + old_solves_question: "Do old solves count?" + old_solves_answer: "Yes! Your entire history was converted at launch (base formula, no time-based bonuses — those only apply going forward)." + opt_out_question: "I don't want any of this." + opt_out_answer: "Understood — turn it off in your profile settings (\"experience system\"), and your level, XP and celebrations disappear from view." + friend_question: "Why did my friend get more XP for the same puzzle?" + friend_answer: "Repeat discounts, weekly boosts and daily warm-ups are personal; two receipts rarely match. Tap any receipt line to see its reason." + fair_play_question: "How is this kept fair?" + fair_play_answer: "A few quiet, automatic guardrails keep the numbers honest — read all about them on the Fair play & trust page." + fair_play: + title: "Fair play & trust" + intro: "MySpeedPuzzling runs on trust. Nobody reviews your solves before they count — we believe you, and the community's numbers stay meaningful because of a few quiet, automatic guardrails:" + principle_no_buying: "XP measures activity, never spending: there is no way to buy XP, boosts or multipliers." + principle_repeats: "Repeat solves of the same puzzle earn less each time — logging one puzzle over and over isn't a shortcut." + principle_speed: "The speed bonus only applies where a reliable community reference exists, and implausibly fast times simply don't receive it. No accusation, no drama — the bonus just doesn't apply." + principle_deleting: "Deleting a solve removes the XP it earned, automatically and transparently (your XP history page shows every entry)." + principle_caps: "Extremely large or unusual entries are capped so no single solve can distort the ladder." + closing_thresholds: "We deliberately don't publish the exact thresholds — they exist to keep things fair, not to be gamed. If something looks off on a leaderboard, write to us; a human looks at every report." + closing_celebrate: "Puzzle honestly, celebrate loudly. 🧩" + explainer_link: "Curious how every point is earned? See How XP & Levels work." + +content_digest: + unsubscribe: + meta_title: "Unsubscribe from the digest" + confirm_title: "Unsubscribe from the weekly digest?" + confirm_text: "No hard feelings — one click below and the weekly digest stops. You can re-enable it in your notification settings anytime." + confirm_button: "Yes, unsubscribe me" + done_title: "You're unsubscribed" + done_text: "The weekly digest won't email you anymore. If you miss it, it's waiting in your notification settings." + back_home: "Back to MySpeedPuzzling" + badges: - title: "Badges" - my_title: "My badges" + title: "Achievements" + my_title: "My achievements" + new: "NEW" + browse_all: "Browse all achievements" + reveal: "Reveal your new achievement" + waiting_teaser: "{1}1 achievement is waiting for you — become a member to reveal it!|]1,Inf[%count% achievements are waiting for you — become a member to reveal them!" + waiting_teaser_zero: "Your first achievement is closer than you think — log a solve and see what happens." + unlock_with_membership: "Unlock with membership" + ap_total: "%points% AP" + ap_total_tooltip: "Your Achievement Points — every earned tier counts, forever" + free_user_hint: "You keep earning achievements even without membership — they wait for you, safe and sound." + earned_waiting: "Earned ✓ — waiting 🔒" + view_holders: "See who earned it" + how_it_works_hint: "Achievements grant XP and Achievement Points." + how_it_works_link: "How XP & Levels work" + detail: + meta_title: "%name% — achievement holders" + country_filter: "Country" + all_countries: "All countries" + newest_earners: "Newest earners" + holders_count: "{0}Nobody yet|{1}1 puzzler|]1,Inf[%count% puzzlers" + holders_count_tooltip: "Everyone counts here — including puzzlers whose profiles are not listed below" + first_to_earn: "First to earn" + more_puzzlers: "+%count% more puzzlers" + only_hidden_holders: "{1}1 puzzler earned this tier — their profile is not publicly listed.|]1,Inf[%count% puzzlers earned this tier — their profiles are not publicly listed." + nobody_yet: "Nobody has earned this tier yet. First one writes history!" + listing_note: "Holder lists show members with public profiles; the counts include every puzzler." + reveals: + meta_title: "Reveal your achievements" + title: "Your achievements are here 🎉" + intro: "{1}1 achievement has been quietly waiting for you. Tap it to flip it over!|]1,Inf[%count% achievements have been quietly waiting for you. Tap each one to flip it over!" + hint: "Take your time — every flip deserves its own little moment." + all_done: "Everything is revealed — your profile wears them proudly now." + invite: "{1}1 achievement is waiting for its reveal moment!|]1,Inf[%count% achievements are waiting for their reveal moment!" + invite_button: "Reveal them" + back_to_profile: "Back to my profile" + overview_title: "Achievements" + overview_subtitle: "Earn achievements by reaching milestones in your puzzling journey" + progress_label: "%current% / %target%" + progress_time_label: "%current_time% → target %target_time%" + locked: "Locked" + earned_on: "Earned %date%" + highest_earned: "Highest earned" + not_earned_yet: "Not earned yet" + keep_going: "Keep going!" + login_to_track: "Log in to see your progress toward each achievement." + info: + open: "What is %achievement% for?" + earned: "Earned" + next_tier: "Next: %tier%" + single_tier_note: "This one has a single tier — it is granted by hand, never earned by solving." + tier: + bronze: "Bronze" + silver: "Silver" + gold: "Gold" + platinum: "Platinum" + diamond: "Diamond" badge: - supporter: "Supporter" + supporter: "Early Adopter" + puzzles_solved: "Puzzle Explorer" + pieces_solved: "Piece Cruncher" + speed_500_pieces: "Speed Demon (500pc)" + streak: "On Fire" + team_player: "Team Spirit" + zen_puzzler: "Zen Puzzler" + first_try: "First Try" + unboxed: "Unboxed" + brand_explorer: "Brand Explorer" + marathoner: "Marathoner" + photographer: "Photographer" + steady_hands: "Steady Hands" + librarian: "Librarian" + speed_1000_pieces: "Speed Demon (1000pc)" + weekend_puzzler: "Weekend Puzzler" + cataloger: "Cataloger" + description: + supporter: "Awarded to the puzzlers who believed in MySpeedPuzzling early and helped it grow." + puzzles_solved: "Solve distinct puzzles to climb this ladder." + pieces_solved: "The more pieces, the better — count every one you've ever placed." + speed_500_pieces: "Your fastest 500-piece solo solve sets your tier." + streak: "Solve puzzles day after day without skipping." + team_player: "Team up with other puzzlers and knock out puzzles together." + zen_puzzler: "Puzzle purely for the joy of it — relaxed solves logged without a time count here." + first_try: "Nail it on the first go — every solve logged as your first attempt at a puzzle counts." + unboxed: "Solve puzzles without peeking at the picture on the box — the ultimate mystery challenge." + brand_explorer: "Sample puzzles from different manufacturers and discover your favorites." + marathoner: "Conquer the big ones — every solve of a puzzle with 2,000 or more pieces counts." + photographer: "Snap a photo of your finished puzzle when logging a solve — every picture counts." + steady_hands: "Keep puzzling through consecutive quarters of the year with at least one solve in each — no gaps." + librarian: "Help keep the puzzle catalog accurate — only your accepted catalog improvement proposals count." + speed_1000_pieces: "Your fastest 1,000-piece solo solve sets your tier." + weekend_puzzler: "Saturdays and Sundays are for puzzling — every weekend solve counts." + cataloger: "Grow the puzzle catalog — every approved puzzle you add counts." + requirement: + puzzles_solved_1: "Solve 10 distinct puzzles" + puzzles_solved_2: "Solve 100 distinct puzzles" + puzzles_solved_3: "Solve 500 distinct puzzles" + puzzles_solved_4: "Solve 1,000 distinct puzzles" + puzzles_solved_5: "Solve 2,000 distinct puzzles" + pieces_solved_1: "Accumulate 10,000 pieces" + pieces_solved_2: "Accumulate 100,000 pieces" + pieces_solved_3: "Accumulate 500,000 pieces" + pieces_solved_4: "Accumulate 1,000,000 pieces" + pieces_solved_5: "Accumulate 2,000,000 pieces" + speed_500_pieces_1: "Solve a 500-piece puzzle in under 5 hours (solo)" + speed_500_pieces_2: "Solve a 500-piece puzzle in under 2 hours (solo)" + speed_500_pieces_3: "Solve a 500-piece puzzle in under 1 hour (solo)" + speed_500_pieces_4: "Solve a 500-piece puzzle in under 45 minutes (solo)" + speed_500_pieces_5: "Solve a 500-piece puzzle in under 30 minutes (solo)" + streak_1: "Solve puzzles 7 days in a row" + streak_2: "Solve puzzles 30 days in a row" + streak_3: "Solve puzzles 90 days in a row" + streak_4: "Solve puzzles 180 days in a row" + streak_5: "Solve puzzles 365 days in a row" + team_player_1: "Complete your first team or duo puzzle" + team_player_2: "Complete 5 team or duo puzzles" + team_player_3: "Complete 25 team or duo puzzles" + team_player_4: "Complete 100 team or duo puzzles" + team_player_5: "Complete 500 team or duo puzzles" + zen_puzzler_1: "Log your first relaxed solve without a time" + zen_puzzler_2: "Log 10 relaxed solves without a time" + zen_puzzler_3: "Log 50 relaxed solves without a time" + zen_puzzler_4: "Log 150 relaxed solves without a time" + zen_puzzler_5: "Log 365 relaxed solves without a time" + first_try_1: "Log 5 first-attempt solves" + first_try_2: "Log 50 first-attempt solves" + first_try_3: "Log 200 first-attempt solves" + first_try_4: "Log 500 first-attempt solves" + first_try_5: "Log 1,000 first-attempt solves" + unboxed_1: "Solve your first puzzle without looking at the box" + unboxed_2: "Solve 5 puzzles without looking at the box" + unboxed_3: "Solve 25 puzzles without looking at the box" + unboxed_4: "Solve 50 puzzles without looking at the box" + unboxed_5: "Solve 100 puzzles without looking at the box" + brand_explorer_1: "Solve puzzles from 3 different manufacturers" + brand_explorer_2: "Solve puzzles from 10 different manufacturers" + brand_explorer_3: "Solve puzzles from 25 different manufacturers" + brand_explorer_4: "Solve puzzles from 50 different manufacturers" + brand_explorer_5: "Solve puzzles from 100 different manufacturers" + marathoner_1: "Complete your first puzzle with 2,000+ pieces" + marathoner_2: "Complete 5 puzzles with 2,000+ pieces" + marathoner_3: "Complete 15 puzzles with 2,000+ pieces" + marathoner_4: "Complete 40 puzzles with 2,000+ pieces" + marathoner_5: "Complete 100 puzzles with 2,000+ pieces" + photographer_1: "Add a photo to your first finished puzzle" + photographer_2: "Add photos to 25 finished puzzles" + photographer_3: "Add photos to 100 finished puzzles" + photographer_4: "Add photos to 500 finished puzzles" + photographer_5: "Add photos to 1,000 finished puzzles" + steady_hands_1: "Solve at least one puzzle in 2 quarters of the year in a row" + steady_hands_2: "Solve at least one puzzle in 4 quarters of the year in a row" + steady_hands_3: "Solve at least one puzzle in 8 quarters of the year in a row" + steady_hands_4: "Solve at least one puzzle in 12 quarters of the year in a row" + steady_hands_5: "Solve at least one puzzle in 16 quarters of the year in a row" + librarian_1: "Get your first catalog improvement proposal accepted" + librarian_2: "Get 5 catalog improvement proposals accepted" + librarian_3: "Get 20 catalog improvement proposals accepted" + librarian_4: "Get 50 catalog improvement proposals accepted" + librarian_5: "Get 100 catalog improvement proposals accepted" + speed_1000_pieces_1: "Solve a 1,000-piece puzzle in under 8 hours (solo)" + speed_1000_pieces_2: "Solve a 1,000-piece puzzle in under 4 hours (solo)" + speed_1000_pieces_3: "Solve a 1,000-piece puzzle in under 2.5 hours (solo)" + speed_1000_pieces_4: "Solve a 1,000-piece puzzle in under 1 hour 45 minutes (solo)" + speed_1000_pieces_5: "Solve a 1,000-piece puzzle in under 1 hour 15 minutes (solo)" + weekend_puzzler_1: "Complete 10 solves on weekends" + weekend_puzzler_2: "Complete 50 solves on weekends" + weekend_puzzler_3: "Complete 150 solves on weekends" + weekend_puzzler_4: "Complete 300 solves on weekends" + weekend_puzzler_5: "Complete 600 solves on weekends" + cataloger_1: "Add your first approved puzzle to the catalog" + cataloger_2: "Add 10 approved puzzles to the catalog" + cataloger_3: "Add 50 approved puzzles to the catalog" + cataloger_4: "Add 150 approved puzzles to the catalog" + cataloger_5: "Add 300 approved puzzles to the catalog" + unit: + puzzles: "puzzles" + pieces: "pieces" + days: "days" + team_solves: "team solves" scan: diff --git a/translations/messages.es.yml b/translations/messages.es.yml index c5e4e122..48776c75 100644 --- a/translations/messages.es.yml +++ b/translations/messages.es.yml @@ -181,6 +181,8 @@ "link_to_hub": "¿Buscas el rompecabezas más resuelto o los jugadores más activos? ¡Lo movimos al nuevo Centro!" "msp_elo_banner": "Acabamos de lanzar Escalera MSP Rating BETA — un nuevo sistema de clasificación basado en habilidad. Está recién salido del horno, ¡así que espera ajustes mientras lo perfeccionamos!" "msp_elo_cta": "Escalera MSP Rating" + "xp_ladder_banner": "Dos clasificaciones nuevas: XP por cuánto resuelves y Puntos de Logro por lo que completas." + "xp_ladder_cta": "Clasificación XP" "filters": "button": "Filtros" "filter_by": "Filtrar por" @@ -393,6 +395,7 @@ "delete_button": "Eliminar — ¡nunca pasó!" "delete_modal_message": "Solo para estar seguro..." "delete_modal_confirm": "¿Realmente eliminar?" + "delete_xp_warning": "Perderás los %xp% XP ganados con esta resolución." "delete_modal_discard_button": "No, mantenerlo" "delete_modal_confirm_button": "Sí, eliminar" "back_to": "Volver a %title%" @@ -459,6 +462,13 @@ "frequency_48_hours": "Cada 48 horas" "frequency_1_week": "Una vez a la semana" "newsletter_enabled": "Recibir boletines" + "content_digest_frequency": "Correo de resumen semanal" + "content_digest_help": "Tu semana en puzzles: XP, logros, estadísticas y actividad de tus amigos. Semanal es el punto justo." + "content_digest_none": "No enviarme el resumen" + "content_digest_daily": "Diario + semanal" + "content_digest_weekly": "Semanal" + "hide_experience_system": "Ocultar el sistema de experiencia (XP y niveles)" + "hide_experience_system_help": "Tu nivel, recibos de XP, celebraciones y entradas en clasificaciones desaparecen de todas partes. El XP se sigue acumulando en silencio, así que no pierdes nada si lo vuelves a activar." "newsletter_help": "Ocasionalmente enviaremos un boletín sobre novedades en la plataforma, generalmente explicando nuevas funciones. Sin marketing ni promociones: solo novedades. Frecuencia esperada: no más de 1 al mes." "features_options": "Opciones de funciones" "hide_ranking": "Ocultar mi clasificación y habilidad" @@ -941,11 +951,354 @@ "conversation_request": "general": "%player% te envió una solicitud de conversación" "marketplace": "%player% te envió un mensaje sobre %puzzle%" -"badges": - "title": "Insignias" - "my_title": "Mis insignias" - "badge": - "supporter": "Partidario" +xp: + level_chip: "Nv %level%" + total: "%xp% XP" + total_tooltip: "%xp% XP ganados en total" + max_level_reached: "La cima de la montaña — ¡nivel 50!" + progress_label: "%xp% XP para el nivel %level%" + receipt: + title: "Tu XP por esta resolución" + total: "Total" + waiting_teaser: "{1}Esta resolución contó para 1 logro en espera 🔒|]1,Inf[Esta resolución contó para %count% logros en espera 🔒" + max_level_title: "Nivel 50 — el XP sigue contando, la gloria es para siempre" + nearest_achievements: "Tus próximos logros están al alcance de la mano:" + max_level_all_done: "Has conquistado todo lo que había por conquistar. Estamos sinceramente impresionados." + relax_repeat: "Un puzzle conocido, por puro placer — esta vez sin XP, y de eso se trata." + counting: "Contando tu XP…" + line: + base: "Resolución" + base_repeat_second: "Resolución repetida (2.ª vez, ×50%)" + base_repeat_later: "Resolución repetida (3.ª vez o más, ×25%)" + base_relax: "Resolución relax (×50%)" + solve_difficulty_bonus: "Bonus por dificultad" + solve_unboxed_bonus: "Bonus sin caja" + solve_speed_bonus: "Bonus por velocidad" + solve_weekly_boost: "Impulso semanal" + solve_daily_warmup: "Calentamiento diario" + difficulty_settlement: "Bonus por dificultad (liquidado)" + speed_settlement: "Bonus por velocidad (liquidado)" + achievement: "Logro conseguido" + solve_compensation: "Resolución eliminada" + difficulty_pending: "Bonus por dificultad pendiente — se liquida cuando este puzzle reciba valoración" + speed_pending: "Bonus por velocidad pendiente — necesita tiempos de 3 puzzleros" + levelup: + aria: "¡Subiste de nivel! Alcanzaste el nivel %level%" + label: "¡Subiste de nivel!" + max_label: "¡La cima!" + message: "Tu recorrido puzzlero sigue subiendo. ¡Bien hecho!" + max_message: "Nivel 50. El más alto que existe. A partir de aquí, tu montaña es la escalera de Puntos de Logro." + enter_ap_ladder: "Entrar a la escalera de AP" + view_ap_ladder: "Ver la escalera de AP" + skip_hint: "Toca en cualquier parte para continuar" + achievement_toast: + title: "¡Nuevo logro!" + estimate: + line: "Resolverlo da ~%base% XP + hasta %bonus% de bonus" + repeat_note: "Ya has resuelto este puzzle antes — esta vez cuenta ×%multiplier%." + unrated_note: "El bonus por dificultad se liquida automáticamente cuando este puzzle recibe valoración." + leaderboard: + meta_title: "Clasificación de XP" + title: "Clasificación de XP" + subtitle: "La actividad, celebrada." + all_leaderboards: "Todas las clasificaciones" + favorites_only: "Solo favoritos" + player: "Puzzlero" + value: + xp: "XP total" + achievement-points: "AP" + tab: + xp: "XP" + achievement-points: "Puntos de Logro" + ap_title: "Clasificación de Puntos de Logro" + ap_subtitle: "La colección, clasificada." + ap_login_required: "Inicia sesión para explorar la escalera de Puntos de Logro." + xp_value: "%xp% XP" + ap_value: "%points% AP" + your_position: "Tu posición" + empty: "Aún no hay nada por aquí — ¡registra una resolución e inaugura el tablero!" + history: + meta_title: "Mi historial de XP" + title: "Mi historial de XP" + subtitle: "Cada punto, contabilizado — tu registro completo de XP." + when: "Cuándo" + reason: "Motivo" + empty: "Aún no hay XP — tu primera resolución lo cambiará." + deleted_solve: "resolución eliminada" + pagination: "Páginas del historial de XP" + note: "¿Te intriga alguna línea?" + reveal: + meta_title: "Tu recorrido puzzlero, revelado" + title: "Todo tu recorrido se acaba de convertir en XP ✨" + intro: "Cada puzzle que has registrado cuenta. Esto es lo que vale tu historia:" + level_label: "Nivel" + xp_note: "ganados a lo largo de toda tu historia puzzlera" + achievements_member: "{1}¡Y 1 logro ya es tuyo — encuéntralo en tu perfil!|]1,Inf[¡Y %count% logros ya son tuyos — encuéntralos en tu perfil!" + share_title: "¡Soy Nivel %level% en MySpeedPuzzling!" + share_button: "Compartir mi nivel" + continue: "Llévame a mi perfil" + to_badge_reveals: "¿Tienes logros por revelar? Voltéalos aquí." + explainer: + title: "Cómo funcionan los XP y niveles" + intro: "Cada puzzle que terminas te hace avanzar. Los XP (puntos de experiencia) celebran tu actividad — no lo rápido que eres, sino que te sentaste a armar. Registra una resolución, gana XP y mira crecer tu nivel desde el 1 hasta el 50." + currencies: + heading: "Los tres números de MySpeedPuzzling" + header_what: "Qué" + header_measures: "Mide" + header_who: "Quién lo ve" + xp_name: "XP y niveles" + xp_measures: "Tu actividad — cada resolución cuenta" + xp_who: "Todos, gratis para siempre" + ap_name: "Puntos de Logro (AP)" + ap_measures: "Tu colección de logros conseguidos" + ap_who: "Miembros" + rating_name: "MSP Rating" + rating_measures: "Tu velocidad y habilidad" + rating_who: "Miembros (sin cambios, independiente)" + never_bought: "El XP no se puede comprar jamás — sin potenciadores, sin multiplicadores, sin atajos. Nunca." + unlock_nothing: "Los niveles no desbloquean nada funcional; son tu identidad puzzlera visual." + how: + heading: "Cómo una resolución se convierte en XP" + intro: "Tu recibo después de cada resolución muestra exactamente de dónde salió cada punto:" + base: "Base: aproximadamente 1 XP por cada 100 piezas (un puzzle de 500 piezas ≈ 5 XP). Con tope de 60." + difficulty: "Bonus por dificultad: los puzzles más difíciles (niveles de dificultad 3–6 de la comunidad) suman de +15% a +50%." + team: "Resoluciones en equipo: cada integrante del grupo gana el 75% del valor en solitario — armar juntos cuenta para cada par de manos." + unboxed: "Bonus sin caja: ¿resuelto sin la imagen de la caja? +20%." + repeat: "Resoluciones repetidas: la 2.ª resolución cronometrada del mismo puzzle gana el 50%, las siguientes el 25%. En modo relax: primera resolución 50%, repeticiones 0%." + speed: "Bonus por velocidad: las resoluciones en solitario cronometradas más rápidas que la mediana comunitaria del puzzle ganan +5%, top 25% +10%, top 10% +15% (necesita tiempos de al menos 3 puzzleros)." + weekly: "Impulso semanal: tus primeras 5 resoluciones de cada semana ganan un +50% extra." + daily: "Calentamiento diario: la primera resolución de tu día trae +2 XP fijos." + example: + heading: "Ejemplo práctico" + body: "Una resolución en solitario, cronometrada y al primer intento de un puzzle de 1000 piezas de dificultad 4, resuelto sin caja, más rápido que la mediana, como tu primera resolución de la semana y del día:" + math: "base 10 + dificultad 3 + sin caja 3 + velocidad 1 + impulso semanal 8 + calentamiento 2 = 27 XP" + unrated: + heading: "Puzzles sin valorar" + body: "Los puzzles recién llegados al catálogo pueden no tener todavía nivel de dificultad. La base de XP la ganas al momento, y el bonus por dificultad llega automáticamente (se \"liquida\") cuando la comunidad valora el puzzle. Lo mismo con el bonus por velocidad, cuando suficientes puzzleros hayan registrado tiempos." + achievements: + heading: "Los logros también dan XP" + body: "Cada rango de logro otorga XP una sola vez, para siempre: Bronce 5 · Plata 10 · Oro 25 · Platino 50 · Diamante 100." + levels: + heading: "Niveles" + header_level: "Nivel" + header_xp: "XP" + summit: "El nivel 50 es la cima — 3.160 XP en total. El XP sigue acumulándose después; en el nivel 50, la escalera de Puntos de Logro se convierte en tu próxima montaña." + lose: + heading: "¿Puedo perder XP?" + body: "Solo al eliminar o editar una resolución — el XP que ganó esa resolución se va con ella. Nada más te quita XP jamás. Los logros son permanentes." + faq: + heading: "Preguntas frecuentes" + old_solves_question: "¿Cuentan las resoluciones antiguas?" + old_solves_answer: "¡Sí! Todo tu historial se convirtió en el lanzamiento (fórmula base, sin bonus por tiempo — esos solo aplican de aquí en adelante)." + opt_out_question: "No quiero nada de esto." + opt_out_answer: "Entendido — desactívalo en la configuración de tu perfil (\"sistema de experiencia\") y tu nivel, XP y celebraciones desaparecerán de la vista." + friend_question: "¿Por qué mi amigo ganó más XP por el mismo puzzle?" + friend_answer: "Los descuentos por repetición, los impulsos semanales y los calentamientos diarios son personales; dos recibos rara vez coinciden. Toca cualquier línea del recibo para ver su motivo." + fair_play_question: "¿Cómo se mantiene esto justo?" + fair_play_answer: "Unas cuantas salvaguardas silenciosas y automáticas mantienen los números honestos — lee todo sobre ellas en la página de Juego limpio y confianza." + fair_play: + title: "Juego limpio y confianza" + intro: "MySpeedPuzzling funciona con confianza. Nadie revisa tus resoluciones antes de que cuenten — te creemos, y los números de la comunidad siguen siendo significativos gracias a unas cuantas salvaguardas silenciosas y automáticas:" + principle_no_buying: "El XP mide actividad, nunca gasto: no hay forma de comprar XP, potenciadores ni multiplicadores." + principle_repeats: "Las resoluciones repetidas del mismo puzzle ganan menos cada vez — registrar un puzzle una y otra vez no es un atajo." + principle_speed: "El bonus por velocidad solo se aplica donde existe una referencia comunitaria fiable, y los tiempos inverosímilmente rápidos simplemente no lo reciben. Sin acusaciones, sin drama — el bonus simplemente no se aplica." + principle_deleting: "Eliminar una resolución retira el XP que ganó, de forma automática y transparente (tu página de historial de XP muestra cada entrada)." + principle_caps: "Las entradas extremadamente grandes o inusuales tienen tope para que ninguna resolución pueda distorsionar la escalera." + closing_thresholds: "Deliberadamente no publicamos los umbrales exactos — existen para mantener la justicia, no para que se les haga trampa. Si algo te parece raro en una clasificación, escríbenos; una persona revisa cada reporte." + closing_celebrate: "Arma con honestidad, celebra a lo grande. 🧩" + explainer_link: "¿Quieres saber cómo se gana cada punto? Mira Cómo funcionan los XP y niveles." + +content_digest: + unsubscribe: + meta_title: "Darse de baja del resumen" + confirm_title: "¿Darte de baja del resumen semanal?" + confirm_text: "Sin rencores — un clic abajo y el resumen semanal se detiene. Puedes volver a activarlo cuando quieras en tu configuración de notificaciones." + confirm_button: "Sí, dame de baja" + done_title: "Baja completada" + done_text: "El resumen semanal ya no te enviará correos. Si lo echas de menos, te espera en tu configuración de notificaciones." + back_home: "Volver a MySpeedPuzzling" + +badges: + title: "Logros" + my_title: "Mis logros" + new: "NUEVO" + browse_all: "Explorar todos los logros" + reveal: "Revela tu nuevo logro" + waiting_teaser: "{1}1 logro te está esperando — ¡hazte miembro para revelarlo!|]1,Inf[%count% logros te están esperando — ¡hazte miembro para revelarlos!" + waiting_teaser_zero: "Tu primer logro está más cerca de lo que crees — registra una resolución y mira qué pasa." + unlock_with_membership: "Desbloquear con membresía" + ap_total: "%points% AP" + ap_total_tooltip: "Tus Puntos de Logro — cada rango conseguido cuenta, para siempre" + free_user_hint: "Sigues ganando logros incluso sin membresía — te esperan, sanos y salvos." + earned_waiting: "Conseguido ✓ — en espera 🔒" + view_holders: "Ver quién lo consiguió" + how_it_works_hint: "Los logros otorgan XP y Puntos de Logro." + how_it_works_link: "Cómo funcionan los XP y niveles" + detail: + meta_title: "%name% — poseedores del logro" + country_filter: "País" + all_countries: "Todos los países" + newest_earners: "Los más recientes" + holders_count: "{0}Nadie todavía|{1}1 puzzlero|]1,Inf[%count% puzzleros" + holders_count_tooltip: "Aquí cuentan todos — incluidos los puzzleros cuyos perfiles no aparecen abajo" + first_to_earn: "Primeros en conseguirlo" + more_puzzlers: "+%count% puzzleros más" + only_hidden_holders: "{1}1 puzzlero consiguió este rango — su perfil no aparece públicamente.|]1,Inf[%count% puzzleros consiguieron este rango — sus perfiles no aparecen públicamente." + nobody_yet: "Nadie ha conseguido este rango todavía. ¡El primero escribirá la historia!" + listing_note: "Las listas de poseedores muestran a los miembros con perfil público; los contadores incluyen a todos los puzzleros." + reveals: + meta_title: "Revela tus logros" + title: "Tus logros están aquí 🎉" + intro: "{1}1 logro te ha estado esperando en silencio. ¡Tócalo para voltearlo!|]1,Inf[%count% logros te han estado esperando en silencio. ¡Toca cada uno para voltearlo!" + hint: "Tómate tu tiempo — cada volteo merece su pequeño momento." + all_done: "Todo revelado — tu perfil ya los luce con orgullo." + invite: "{1}¡1 logro espera su momento de revelación!|]1,Inf[¡%count% logros esperan su momento de revelación!" + invite_button: "Revelarlos" + back_to_profile: "Volver a mi perfil" + overview_title: "Logros" + overview_subtitle: "Consigue logros alcanzando hitos en tu recorrido puzzlero" + progress_label: "%current% / %target%" + progress_time_label: "%current_time% → objetivo %target_time%" + locked: "Bloqueado" + earned_on: "Conseguido el %date%" + highest_earned: "Máximo conseguido" + not_earned_yet: "Aún no conseguido" + keep_going: "¡Sigue así!" + login_to_track: "Inicia sesión para ver tu progreso hacia cada logro." + info: + open: "¿Para qué es %achievement%?" + earned: "Conseguido" + next_tier: "Siguiente: %tier%" + single_tier_note: "Este logro tiene un solo nivel: se concede a mano, no se consigue resolviendo." + tier: + bronze: "Bronce" + silver: "Plata" + gold: "Oro" + platinum: "Platino" + diamond: "Diamante" + badge: + supporter: "Pionero" + puzzles_solved: "Explorador de Puzzles" + pieces_solved: "Devorapiezas" + speed_500_pieces: "Demonio de la Velocidad (500p)" + streak: "En Racha" + team_player: "Espíritu de Equipo" + zen_puzzler: "Puzzlero Zen" + first_try: "A la Primera" + unboxed: "Sin Caja" + brand_explorer: "Explorador de Marcas" + marathoner: "Maratonista" + photographer: "Fotógrafo" + steady_hands: "Manos Firmes" + librarian: "Bibliotecario" + speed_1000_pieces: "Demonio de la Velocidad (1000p)" + weekend_puzzler: "Puzzlero de Finde" + cataloger: "Catalogador" + description: + supporter: "Otorgado a los puzzleros que creyeron pronto en MySpeedPuzzling y lo ayudaron a crecer." + puzzles_solved: "Resuelve puzzles distintos para subir esta escalera." + pieces_solved: "Cuantas más piezas, mejor — cuenta cada una que hayas colocado en tu vida." + speed_500_pieces: "Tu resolución más rápida de 500 piezas en solitario define tu rango." + streak: "Resuelve puzzles día tras día, sin saltarte ninguno." + team_player: "Haz equipo con otros puzzleros para liquidar puzzles juntos." + zen_puzzler: "Arma por puro placer — aquí cuentan las resoluciones relax registradas sin tiempo." + first_try: "Clávalo a la primera — cuenta cada resolución registrada como tu primer intento en un puzzle." + unboxed: "Resuelve puzzles sin espiar la imagen de la caja — el desafío misterioso definitivo." + brand_explorer: "Prueba puzzles de distintos fabricantes y descubre tus favoritos." + marathoner: "Conquista los gigantes — cuenta cada resolución de un puzzle de 2.000 piezas o más." + photographer: "Toma una foto de tu puzzle terminado al registrar una resolución — cada foto cuenta." + steady_hands: "Sigue armando durante trimestres consecutivos del año, con al menos una resolución en cada uno — sin huecos." + librarian: "Ayuda a mantener el catálogo de puzzles preciso — solo cuentan tus propuestas de mejora del catálogo aceptadas." + speed_1000_pieces: "Tu resolución más rápida de 1.000 piezas en solitario define tu rango." + weekend_puzzler: "Los sábados y domingos son para armar puzzles — cuenta cada resolución de fin de semana." + cataloger: "Haz crecer el catálogo de puzzles — cuenta cada puzzle aprobado que añades." + requirement: + puzzles_solved_1: "Resuelve 10 puzzles distintos" + puzzles_solved_2: "Resuelve 100 puzzles distintos" + puzzles_solved_3: "Resuelve 500 puzzles distintos" + puzzles_solved_4: "Resuelve 1.000 puzzles distintos" + puzzles_solved_5: "Resuelve 2.000 puzzles distintos" + pieces_solved_1: "Acumula 10.000 piezas" + pieces_solved_2: "Acumula 100.000 piezas" + pieces_solved_3: "Acumula 500.000 piezas" + pieces_solved_4: "Acumula 1.000.000 de piezas" + pieces_solved_5: "Acumula 2.000.000 de piezas" + speed_500_pieces_1: "Resuelve un puzzle de 500 piezas en menos de 5 horas (en solitario)" + speed_500_pieces_2: "Resuelve un puzzle de 500 piezas en menos de 2 horas (en solitario)" + speed_500_pieces_3: "Resuelve un puzzle de 500 piezas en menos de 1 hora (en solitario)" + speed_500_pieces_4: "Resuelve un puzzle de 500 piezas en menos de 45 minutos (en solitario)" + speed_500_pieces_5: "Resuelve un puzzle de 500 piezas en menos de 30 minutos (en solitario)" + streak_1: "Resuelve puzzles 7 días seguidos" + streak_2: "Resuelve puzzles 30 días seguidos" + streak_3: "Resuelve puzzles 90 días seguidos" + streak_4: "Resuelve puzzles 180 días seguidos" + streak_5: "Resuelve puzzles 365 días seguidos" + team_player_1: "Completa tu primer puzzle en equipo o en dúo" + team_player_2: "Completa 5 puzzles en equipo o en dúo" + team_player_3: "Completa 25 puzzles en equipo o en dúo" + team_player_4: "Completa 100 puzzles en equipo o en dúo" + team_player_5: "Completa 500 puzzles en equipo o en dúo" + zen_puzzler_1: "Registra tu primera resolución relax sin tiempo" + zen_puzzler_2: "Registra 10 resoluciones relax sin tiempo" + zen_puzzler_3: "Registra 50 resoluciones relax sin tiempo" + zen_puzzler_4: "Registra 150 resoluciones relax sin tiempo" + zen_puzzler_5: "Registra 365 resoluciones relax sin tiempo" + first_try_1: "Registra 5 resoluciones al primer intento" + first_try_2: "Registra 50 resoluciones al primer intento" + first_try_3: "Registra 200 resoluciones al primer intento" + first_try_4: "Registra 500 resoluciones al primer intento" + first_try_5: "Registra 1.000 resoluciones al primer intento" + unboxed_1: "Resuelve tu primer puzzle sin mirar la caja" + unboxed_2: "Resuelve 5 puzzles sin mirar la caja" + unboxed_3: "Resuelve 25 puzzles sin mirar la caja" + unboxed_4: "Resuelve 50 puzzles sin mirar la caja" + unboxed_5: "Resuelve 100 puzzles sin mirar la caja" + brand_explorer_1: "Resuelve puzzles de 3 fabricantes distintos" + brand_explorer_2: "Resuelve puzzles de 10 fabricantes distintos" + brand_explorer_3: "Resuelve puzzles de 25 fabricantes distintos" + brand_explorer_4: "Resuelve puzzles de 50 fabricantes distintos" + brand_explorer_5: "Resuelve puzzles de 100 fabricantes distintos" + marathoner_1: "Completa tu primer puzzle de 2.000+ piezas" + marathoner_2: "Completa 5 puzzles de 2.000+ piezas" + marathoner_3: "Completa 15 puzzles de 2.000+ piezas" + marathoner_4: "Completa 40 puzzles de 2.000+ piezas" + marathoner_5: "Completa 100 puzzles de 2.000+ piezas" + photographer_1: "Añade una foto a tu primer puzzle terminado" + photographer_2: "Añade fotos a 25 puzzles terminados" + photographer_3: "Añade fotos a 100 puzzles terminados" + photographer_4: "Añade fotos a 500 puzzles terminados" + photographer_5: "Añade fotos a 1.000 puzzles terminados" + steady_hands_1: "Resuelve al menos un puzzle en 2 trimestres del año seguidos" + steady_hands_2: "Resuelve al menos un puzzle en 4 trimestres del año seguidos" + steady_hands_3: "Resuelve al menos un puzzle en 8 trimestres del año seguidos" + steady_hands_4: "Resuelve al menos un puzzle en 12 trimestres del año seguidos" + steady_hands_5: "Resuelve al menos un puzzle en 16 trimestres del año seguidos" + librarian_1: "Consigue que acepten tu primera propuesta de mejora del catálogo" + librarian_2: "Consigue que acepten 5 propuestas de mejora del catálogo" + librarian_3: "Consigue que acepten 20 propuestas de mejora del catálogo" + librarian_4: "Consigue que acepten 50 propuestas de mejora del catálogo" + librarian_5: "Consigue que acepten 100 propuestas de mejora del catálogo" + speed_1000_pieces_1: "Resuelve un puzzle de 1.000 piezas en menos de 8 horas (en solitario)" + speed_1000_pieces_2: "Resuelve un puzzle de 1.000 piezas en menos de 4 horas (en solitario)" + speed_1000_pieces_3: "Resuelve un puzzle de 1.000 piezas en menos de 2,5 horas (en solitario)" + speed_1000_pieces_4: "Resuelve un puzzle de 1.000 piezas en menos de 1 hora y 45 minutos (en solitario)" + speed_1000_pieces_5: "Resuelve un puzzle de 1.000 piezas en menos de 1 hora y 15 minutos (en solitario)" + weekend_puzzler_1: "Completa 10 resoluciones en fin de semana" + weekend_puzzler_2: "Completa 50 resoluciones en fin de semana" + weekend_puzzler_3: "Completa 150 resoluciones en fin de semana" + weekend_puzzler_4: "Completa 300 resoluciones en fin de semana" + weekend_puzzler_5: "Completa 600 resoluciones en fin de semana" + cataloger_1: "Añade tu primer puzzle aprobado al catálogo" + cataloger_2: "Añade 10 puzzles aprobados al catálogo" + cataloger_3: "Añade 50 puzzles aprobados al catálogo" + cataloger_4: "Añade 150 puzzles aprobados al catálogo" + cataloger_5: "Añade 300 puzzles aprobados al catálogo" + unit: + puzzles: "puzzles" + pieces: "piezas" + days: "días" + team_solves: "resoluciones en equipo" + "scan": "meta": "title": "Lector de código de barras" @@ -2806,6 +3159,39 @@ fair_use_policy: "most_solved": "Puzzles de %pieces% piezas más armados" "view_all": "Ver todos los puzzles de %pieces% piezas" +guides: + breadcrumb: + home: "Inicio" + guides: "Guías" + ui: + eyebrow: "Guía" + updated: "Actualizado el %date%" + data_note: "Datos de la comunidad en vivo" + read_next: "Sigue leyendo" + cta_title: "¿Listo para cronometrar tu próximo puzzle?" + cta_stopwatch: "Iniciar el cronómetro" + cta_puzzles: "Explorar la base de datos de puzzles" + cta_events: "Encontrar una competición" + index: + title: "Guías de Speed Puzzling" + meta_description: "Guías de speed puzzling respaldadas por datos reales de tiempos: cuánto tardan realmente los puzzles, cómo funcionan las competiciones y cómo ser más rápido." + intro: "Escritas por la comunidad de speed puzzling, respaldadas por tiempos reales registrados — no por suposiciones." + read_guide: "Leer la guía" + footnote: "Todas las estadísticas de estas guías se calculan a partir de resoluciones registradas en MySpeedPuzzling y se actualizan automáticamente a medida que la comunidad registra nuevos tiempos." + what_is: + title: "¿Qué es el Speed Puzzling?" + meta_description: "El speed puzzling es armar puzzles contrarreloj. Descubre cómo funcionan competiciones como el WJPC, qué tiempos son típicos y cómo empezar." + card_description: "La introducción completa: formatos, cómo funcionan las competiciones, tiempos típicos y cómo unirte a la comunidad." + how_long: + title: "¿Cuánto se tarda en armar un puzzle de 1000 piezas?" + meta_description: "Medido en %count% resoluciones en solitario registradas: la mediana para un puzzle de 1000 piezas es %median%. Percentiles reales y tiempos más rápidos, por número de piezas." + meta_description_fallback: "La única respuesta en línea basada en datos: tiempos medianos, percentiles y resoluciones más rápidas registradas por número de piezas, a partir de resoluciones reales." + card_description: "Datos reales, no suposiciones: tiempos medianos, percentiles y resultados más rápidos registrados por número de piezas." + tips: + title: "Consejos de Speed Puzzling: cómo ser más rápido" + meta_description: "Diez consejos prácticos de speed puzzling usados por puzzleros competitivos — clasificar piezas, bordes, bloques de color, preparación y cómo medir el progreso real." + card_description: "Diez técnicas que de verdad reducen tu tiempo, más referencias de la comunidad para compararte." + "wjpc_hub": "meta": "title": "Campeonato Mundial de Puzzles (WJPC)" diff --git a/translations/messages.fr.yml b/translations/messages.fr.yml index 8fb76565..b2bb47f9 100644 --- a/translations/messages.fr.yml +++ b/translations/messages.fr.yml @@ -182,6 +182,8 @@ "link_to_hub": "Vous cherchez le puzzle le plus résolu ou les joueurs les plus actifs ? Nous l'avons déplacé vers le nouveau Centre !" "msp_elo_banner": "Nous venons de lancer le Classement MSP Rating BÊTA — un nouveau système de classement basé sur les compétences. C'est tout frais, attendez-vous à des ajustements au fur et à mesure que nous l'affinons !" "msp_elo_cta": "Classement MSP Rating" + "xp_ladder_banner": "Deux nouveaux classements : les XP pour ce que vous assemblez, les points de succès pour ce que vous complétez." + "xp_ladder_cta": "Classement XP" "filters": "button": "Filtres" "filter_by": "Filtrer par" @@ -395,6 +397,7 @@ "delete_button": "Supprimer — jamais arrivé !" "delete_modal_message": "Juste pour être sûr..." "delete_modal_confirm": "Vraiment supprimer ?" + "delete_xp_warning": "Vous perdrez les %xp% XP gagnés avec cette résolution." "delete_modal_discard_button": "Non, garder" "delete_modal_confirm_button": "Oui, supprimer" "error": @@ -697,6 +700,13 @@ "frequency_48_hours": "Toutes les 48 heures" "frequency_1_week": "Une fois par semaine" "newsletter_enabled": "Recevoir les newsletters" + "content_digest_frequency": "Résumé hebdomadaire par e-mail" + "content_digest_help": "Votre semaine puzzle : XP, succès, statistiques et activité de vos amis. Une fois par semaine, c'est le rythme idéal." + "content_digest_none": "Ne pas m'envoyer le résumé" + "content_digest_daily": "Quotidien + hebdomadaire" + "content_digest_weekly": "Hebdomadaire" + "hide_experience_system": "Masquer le système d'expérience (XP et niveaux)" + "hide_experience_system_help": "Votre niveau, vos reçus d'XP, les célébrations et vos entrées dans les classements disparaissent partout. Les XP continuent de s'accumuler en silence : vous ne perdez rien si vous changez d'avis." "newsletter_help": "Nous enverrons occasionnellement une newsletter sur les nouveautés de la plateforme, généralement pour expliquer les nouvelles fonctionnalités. Pas de marketing, pas de promotions — uniquement les nouveautés. Fréquence prévue : pas plus d'une fois par mois." "messaging_notifications": "Messagerie et notifications" "personal_access_tokens": "Jetons d'accès personnels" @@ -942,11 +952,351 @@ "conversation_request": "general": "%player% vous a envoyé une demande de conversation" "marketplace": "%player% vous a envoyé un message à propos de %puzzle%" +"xp": + "level_chip": "Niv. %level%" + "total": "%xp% XP" + "total_tooltip": "%xp% XP gagnés au total" + "max_level_reached": "Le sommet de la montagne — niveau 50 !" + "progress_label": "%xp% XP avant le niveau %level%" + "receipt": + "title": "Vos XP pour cette résolution" + "total": "Total" + "waiting_teaser": "{1}Cette résolution a compté pour 1 succès en attente 🔒|]1,Inf[Cette résolution a compté pour %count% succès en attente 🔒" + "max_level_title": "Niveau 50 — les XP comptent toujours, la gloire est éternelle" + "nearest_achievements": "Vos prochains succès sont à portée de main :" + "max_level_all_done": "Vous avez conquis tout ce qu'il y avait à conquérir. Nous sommes sincèrement impressionnés." + "relax_repeat": "Un puzzle familier, juste pour le plaisir — pas d'XP cette fois, et c'est justement l'idée." + "counting": "Calcul de vos XP…" + "line": + "base": "Résolution" + "base_repeat_second": "Résolution répétée (2e fois, ×50%)" + "base_repeat_later": "Résolution répétée (3e fois et plus, ×25%)" + "base_relax": "Résolution relax (×50%)" + "solve_difficulty_bonus": "Bonus de difficulté" + "solve_unboxed_bonus": "Bonus sans boîte" + "solve_speed_bonus": "Bonus de vitesse" + "solve_weekly_boost": "Boost hebdomadaire" + "solve_daily_warmup": "Échauffement du jour" + "difficulty_settlement": "Bonus de difficulté (régularisé)" + "speed_settlement": "Bonus de vitesse (régularisé)" + "achievement": "Succès obtenu" + "solve_compensation": "Résolution supprimée" + "difficulty_pending": "Bonus de difficulté en attente — versé dès que ce puzzle sera noté" + "speed_pending": "Bonus de vitesse en attente — il faut les temps de 3 puzzleurs" + "levelup": + "aria": "Niveau supérieur ! Vous avez atteint le niveau %level%" + "label": "Niveau supérieur !" + "max_label": "Le sommet !" + "message": "Votre parcours puzzle continue de grimper. Magnifique !" + "max_message": "Niveau 50. Le plus haut qui existe. Désormais, le classement des points de succès est votre montagne." + "enter_ap_ladder": "Entrer dans le classement AP" + "view_ap_ladder": "Voir le classement AP" + "skip_hint": "Touchez n'importe où pour continuer" + "achievement_toast": + "title": "Nouveau succès !" + "estimate": + "line": "Résoudre ce puzzle rapporte ~%base% XP + jusqu'à %bonus% de bonus" + "repeat_note": "Vous avez déjà résolu celui-ci — cette fois, il compte ×%multiplier%." + "unrated_note": "Le bonus de difficulté sera versé automatiquement dès que ce puzzle sera noté." + "leaderboard": + "meta_title": "Classement XP" + "title": "Classement XP" + "subtitle": "L'activité, célébrée." + "all_leaderboards": "Tous les classements" + "favorites_only": "Favoris uniquement" + "player": "Puzzleur" + "value": + "xp": "XP au total" + "achievement-points": "AP" + "tab": + "xp": "XP" + "achievement-points": "Points de succès" + "ap_title": "Classement des points de succès" + "ap_subtitle": "La collection, classée." + "ap_login_required": "Connectez-vous pour parcourir le classement des points de succès." + "xp_value": "%xp% XP" + "ap_value": "%points% AP" + "your_position": "Votre position" + "empty": "Rien ici pour l'instant — enregistrez une résolution et inaugurez le tableau !" + "history": + "meta_title": "Mon historique d'XP" + "title": "Mon historique d'XP" + "subtitle": "Chaque point est comptabilisé — votre registre d'XP complet." + "when": "Quand" + "reason": "Raison" + "empty": "Pas encore d'XP — votre première résolution va changer ça." + "deleted_solve": "résolution supprimée" + "pagination": "Pages de l'historique d'XP" + "note": "Une ligne vous intrigue ?" + "reveal": + "meta_title": "Votre parcours puzzle, révélé" + "title": "Tout votre parcours vient de se transformer en XP ✨" + "intro": "Chaque puzzle que vous avez enregistré compte. Voici ce que vaut votre historique :" + "level_label": "Niveau" + "xp_note": "gagnés sur l'ensemble de votre parcours puzzle" + "achievements_member": "{1}Et 1 succès est déjà à vous — retrouvez-le sur votre profil !|]1,Inf[Et %count% succès sont déjà à vous — retrouvez-les sur votre profil !" + "share_title": "Je suis niveau %level% sur MySpeedPuzzling !" + "share_button": "Partager mon niveau" + "continue": "Voir mon profil" + "to_badge_reveals": "Des succès à révéler ? Retournez-les ici." + "explainer": + "title": "Comment fonctionnent les XP et les niveaux" + "intro": "Chaque puzzle terminé vous fait avancer. Les XP (points d'expérience) célèbrent votre activité — pas votre vitesse, simplement le fait d'être là et de puzzler. Enregistrez une résolution, gagnez des XP et regardez votre niveau grimper de 1 jusqu'à 50." + "currencies": + "heading": "Les trois chiffres de MySpeedPuzzling" + "header_what": "Quoi" + "header_measures": "Mesure" + "header_who": "Qui le voit" + "xp_name": "XP et niveaux" + "xp_measures": "Votre activité — chaque résolution compte" + "xp_who": "Tout le monde, gratuit pour toujours" + "ap_name": "Points de succès (AP)" + "ap_measures": "Votre collection de succès obtenus" + "ap_who": "Membres" + "rating_name": "MSP Rating" + "rating_measures": "Votre vitesse et vos compétences" + "rating_who": "Membres (inchangé, séparé)" + "never_bought": "Les XP ne s'achètent pas — pas de boosts, pas de multiplicateurs, pas de raccourcis. Jamais." + "unlock_nothing": "Les niveaux ne débloquent rien de fonctionnel ; ils sont votre identité visuelle de puzzleur." + "how": + "heading": "Comment une résolution se transforme en XP" + "intro": "Votre reçu après chaque résolution montre exactement d'où vient chaque point :" + "base": "Base : environ 1 XP pour 100 pièces (un puzzle de 500 pièces ≈ 5 XP). Plafonné à 60." + "difficulty": "Bonus de difficulté : les puzzles plus difficiles (niveaux de difficulté communautaires 3–6) ajoutent +15% à +50%." + "team": "Résolutions en équipe : chaque membre du groupe gagne 75% de la valeur solo — puzzler ensemble compte pour chaque paire de mains." + "unboxed": "Bonus sans boîte : résolu sans l'image de la boîte ? +20%." + "repeat": "Résolutions répétées : la 2e résolution chronométrée du même puzzle rapporte 50%, les suivantes 25%. Mode relax : première résolution 50%, répétitions 0%." + "speed": "Bonus de vitesse : les résolutions solo chronométrées plus rapides que la médiane communautaire du puzzle rapportent +5%, top 25% +10%, top 10% +15% (il faut les temps d'au moins 3 puzzleurs)." + "weekly": "Boost hebdomadaire : vos 5 premières résolutions de la semaine rapportent +50% de plus." + "daily": "Échauffement du jour : la première résolution de votre journée apporte +2 XP tout rond." + "example": + "heading": "Exemple concret" + "body": "Une résolution solo, chronométrée et en première tentative d'un puzzle de 1 000 pièces de niveau 4, résolu sans la boîte, plus vite que la médiane, comme première résolution de la semaine et du jour :" + "math": "base 10 + difficulté 3 + sans boîte 3 + vitesse 1 + boost hebdomadaire 8 + échauffement 2 = 27 XP" + "unrated": + "heading": "Puzzles non notés" + "body": "Les puzzles tout juste ajoutés au catalogue n'ont parfois pas encore de niveau de difficulté. Vous gagnez les XP de base immédiatement, et le bonus de difficulté arrive automatiquement (il est « régularisé ») dès que la communauté note le puzzle. Même chose pour le bonus de vitesse dès qu'assez de puzzleurs ont enregistré des temps." + "achievements": + "heading": "Les succès rapportent aussi des XP" + "body": "Chaque palier de succès rapporte des XP une seule fois, pour toujours : Bronze 5 · Argent 10 · Or 25 · Platine 50 · Diamant 100." + "levels": + "heading": "Niveaux" + "header_level": "Niveau" + "header_xp": "XP" + "summit": "Le niveau 50 est le sommet — 3 160 XP au total. Les XP continuent de s'accumuler ensuite ; au niveau 50, le classement des points de succès devient votre prochaine montagne." + "lose": + "heading": "Puis-je perdre des XP ?" + "body": "Uniquement en supprimant ou en modifiant une résolution — les XP qu'elle avait rapportés partent avec elle. Rien d'autre ne retire jamais d'XP. Les succès sont permanents." + "faq": + "heading": "FAQ" + "old_solves_question": "Les anciennes résolutions comptent-elles ?" + "old_solves_answer": "Oui ! Tout votre historique a été converti au lancement (formule de base, sans les bonus liés au temps — ceux-ci ne s'appliquent qu'à partir de maintenant)." + "opt_out_question": "Je ne veux rien de tout ça." + "opt_out_answer": "Compris — désactivez-le dans les paramètres de votre profil (« système d'expérience »), et votre niveau, vos XP et les célébrations disparaissent de l'affichage." + "friend_question": "Pourquoi mon ami a-t-il reçu plus d'XP pour le même puzzle ?" + "friend_answer": "Les réductions pour répétition, les boosts hebdomadaires et les échauffements du jour sont personnels ; deux reçus se ressemblent rarement. Touchez une ligne du reçu pour voir sa raison." + "fair_play_question": "Comment cela reste-t-il équitable ?" + "fair_play_answer": "Quelques garde-fous discrets et automatiques gardent les chiffres honnêtes — découvrez-les sur la page Fair-play et confiance." + "fair_play": + "title": "Fair-play et confiance" + "intro": "MySpeedPuzzling fonctionne sur la confiance. Personne ne vérifie vos résolutions avant qu'elles comptent — nous vous croyons, et les chiffres de la communauté restent fiables grâce à quelques garde-fous discrets et automatiques :" + "principle_no_buying": "Les XP mesurent l'activité, jamais les dépenses : il est impossible d'acheter des XP, des boosts ou des multiplicateurs." + "principle_repeats": "Les résolutions répétées du même puzzle rapportent moins à chaque fois — enregistrer le même puzzle encore et encore n'est pas un raccourci." + "principle_speed": "Le bonus de vitesse ne s'applique que lorsqu'une référence communautaire fiable existe, et les temps invraisemblablement rapides ne le reçoivent tout simplement pas. Pas d'accusation, pas de drame — le bonus ne s'applique pas, c'est tout." + "principle_deleting": "Supprimer une résolution retire les XP qu'elle avait rapportés, automatiquement et en toute transparence (votre page d'historique d'XP montre chaque entrée)." + "principle_caps": "Les entrées extrêmement grandes ou inhabituelles sont plafonnées pour qu'aucune résolution ne puisse fausser le classement." + "closing_thresholds": "Nous ne publions volontairement pas les seuils exacts — ils existent pour que tout reste équitable, pas pour être contournés. Si quelque chose vous semble étrange dans un classement, écrivez-nous ; un humain examine chaque signalement." + "closing_celebrate": "Puzzlez honnêtement, célébrez bruyamment. 🧩" + "explainer_link": "Envie de savoir comment chaque point se gagne ? Consultez Comment fonctionnent les XP et les niveaux." +"content_digest": + "unsubscribe": + "meta_title": "Se désabonner du résumé" + "confirm_title": "Se désabonner du résumé hebdomadaire ?" + "confirm_text": "Sans rancune — un clic ci-dessous et le résumé hebdomadaire s'arrête. Vous pourrez le réactiver à tout moment dans vos paramètres de notification." + "confirm_button": "Oui, désabonnez-moi" + "done_title": "Désabonnement effectué" + "done_text": "Le résumé hebdomadaire ne vous enverra plus d'e-mails. S'il vous manque, il vous attend dans vos paramètres de notification." + "back_home": "Retour à MySpeedPuzzling" "badges": - "title": "Badges" - "my_title": "Mes badges" + "title": "Succès" + "my_title": "Mes succès" + "new": "NOUVEAU" + "browse_all": "Parcourir tous les succès" + "reveal": "Révélez votre nouveau succès" + "waiting_teaser": "{1}1 succès vous attend — devenez membre pour le révéler !|]1,Inf[%count% succès vous attendent — devenez membre pour les révéler !" + "waiting_teaser_zero": "Votre premier succès est plus proche que vous ne le pensez — enregistrez une résolution et voyez ce qui se passe." + "unlock_with_membership": "Débloquer avec l'adhésion" + "ap_total": "%points% AP" + "ap_total_tooltip": "Vos points de succès — chaque palier obtenu compte, pour toujours" + "free_user_hint": "Vous continuez à gagner des succès même sans adhésion — ils vous attendent, bien au chaud." + "earned_waiting": "Obtenu ✓ — en attente 🔒" + "view_holders": "Voir qui l'a obtenu" + "how_it_works_hint": "Les succès rapportent des XP et des points de succès." + "how_it_works_link": "Comment fonctionnent les XP et les niveaux" + "detail": + "meta_title": "%name% — détenteurs du succès" + "country_filter": "Pays" + "all_countries": "Tous les pays" + "newest_earners": "Derniers à l'avoir obtenu" + "holders_count": "{0}Personne pour l'instant|{1}1 puzzleur|]1,Inf[%count% puzzleurs" + "holders_count_tooltip": "Tout le monde compte ici — y compris les puzzleurs dont le profil n'est pas listé ci-dessous" + "first_to_earn": "Premier à l'avoir obtenu" + "more_puzzlers": "+%count% autres puzzleurs" + "only_hidden_holders": "{1}1 puzzleur a obtenu ce palier — son profil n'est pas listé publiquement.|]1,Inf[%count% puzzleurs ont obtenu ce palier — leurs profils ne sont pas listés publiquement." + "nobody_yet": "Personne n'a encore obtenu ce palier. Le premier écrira l'histoire !" + "listing_note": "Les listes de détenteurs montrent les membres au profil public ; les compteurs incluent tous les puzzleurs." + "reveals": + "meta_title": "Révélez vos succès" + "title": "Vos succès sont là 🎉" + "intro": "{1}1 succès vous attendait discrètement. Touchez-le pour le retourner !|]1,Inf[%count% succès vous attendaient discrètement. Touchez-les un par un pour les retourner !" + "hint": "Prenez votre temps — chaque carte retournée mérite son petit moment." + "all_done": "Tout est révélé — votre profil les porte fièrement désormais." + "invite": "{1}1 succès attend son moment de révélation !|]1,Inf[%count% succès attendent leur moment de révélation !" + "invite_button": "Les révéler" + "back_to_profile": "Retour à mon profil" + "overview_title": "Succès" + "overview_subtitle": "Gagnez des succès en franchissant des étapes dans votre parcours puzzle" + "progress_label": "%current% / %target%" + "progress_time_label": "%current_time% → objectif %target_time%" + "locked": "Verrouillé" + "earned_on": "Obtenu le %date%" + "highest_earned": "Plus haut palier obtenu" + "not_earned_yet": "Pas encore obtenu" + "keep_going": "Continuez comme ça !" + "login_to_track": "Connectez-vous pour voir votre progression vers chaque succès." + "info": + "open": "À quoi sert %achievement% ?" + "earned": "Obtenu" + "next_tier": "Ensuite : %tier%" + "single_tier_note": "Ce succès n'a qu'un seul niveau : il est attribué à la main, il ne s'obtient pas en résolvant." + "tier": + "bronze": "Bronze" + "silver": "Argent" + "gold": "Or" + "platinum": "Platine" + "diamond": "Diamant" "badge": - "supporter": "Supporteur" + "supporter": "Pionnier" + "puzzles_solved": "Explorateur de puzzles" + "pieces_solved": "Croqueur de pièces" + "speed_500_pieces": "Démon de vitesse (500 pcs)" + "streak": "En feu" + "team_player": "Esprit d'équipe" + "zen_puzzler": "Puzzleur zen" + "first_try": "Du premier coup" + "unboxed": "Sans boîte" + "brand_explorer": "Explorateur de marques" + "marathoner": "Marathonien" + "photographer": "Photographe" + "steady_hands": "Mains sûres" + "librarian": "Bibliothécaire" + "speed_1000_pieces": "Démon de vitesse (1000 pcs)" + "weekend_puzzler": "Puzzleur du week-end" + "cataloger": "Catalogueur" + "description": + "supporter": "Décerné aux puzzleurs qui ont cru en MySpeedPuzzling dès le début et l'ont aidé à grandir." + "puzzles_solved": "Résolvez des puzzles différents pour gravir cette échelle." + "pieces_solved": "Plus il y a de pièces, mieux c'est — chaque pièce jamais posée compte." + "speed_500_pieces": "Votre résolution solo la plus rapide d'un 500 pièces détermine votre palier." + "streak": "Résolvez des puzzles jour après jour, sans en sauter un." + "team_player": "Faites équipe avec d'autres puzzleurs et venez à bout des puzzles ensemble." + "zen_puzzler": "Puzzlez pour le pur plaisir — les résolutions relax enregistrées sans temps comptent ici." + "first_try": "Réussissez du premier coup — chaque résolution enregistrée comme première tentative d'un puzzle compte." + "unboxed": "Résolvez des puzzles sans regarder l'image de la boîte — le défi mystère ultime." + "brand_explorer": "Goûtez aux puzzles de différents fabricants et découvrez vos favoris." + "marathoner": "Venez à bout des géants — chaque résolution d'un puzzle de 2 000 pièces ou plus compte." + "photographer": "Prenez une photo de votre puzzle terminé en enregistrant une résolution — chaque image compte." + "steady_hands": "Continuez à puzzler pendant des trimestres consécutifs avec au moins une résolution dans chacun — sans interruption." + "librarian": "Aidez à garder le catalogue de puzzles exact — seules vos propositions d'amélioration acceptées comptent." + "speed_1000_pieces": "Votre résolution solo la plus rapide d'un 1 000 pièces détermine votre palier." + "weekend_puzzler": "Les samedis et dimanches sont faits pour puzzler — chaque résolution du week-end compte." + "cataloger": "Faites grandir le catalogue de puzzles — chaque puzzle approuvé que vous ajoutez compte." + "requirement": + "puzzles_solved_1": "Résolvez 10 puzzles différents" + "puzzles_solved_2": "Résolvez 100 puzzles différents" + "puzzles_solved_3": "Résolvez 500 puzzles différents" + "puzzles_solved_4": "Résolvez 1 000 puzzles différents" + "puzzles_solved_5": "Résolvez 2 000 puzzles différents" + "pieces_solved_1": "Accumulez 10 000 pièces" + "pieces_solved_2": "Accumulez 100 000 pièces" + "pieces_solved_3": "Accumulez 500 000 pièces" + "pieces_solved_4": "Accumulez 1 000 000 de pièces" + "pieces_solved_5": "Accumulez 2 000 000 de pièces" + "speed_500_pieces_1": "Résolvez un puzzle de 500 pièces en moins de 5 heures (solo)" + "speed_500_pieces_2": "Résolvez un puzzle de 500 pièces en moins de 2 heures (solo)" + "speed_500_pieces_3": "Résolvez un puzzle de 500 pièces en moins d'1 heure (solo)" + "speed_500_pieces_4": "Résolvez un puzzle de 500 pièces en moins de 45 minutes (solo)" + "speed_500_pieces_5": "Résolvez un puzzle de 500 pièces en moins de 30 minutes (solo)" + "streak_1": "Résolvez des puzzles 7 jours d'affilée" + "streak_2": "Résolvez des puzzles 30 jours d'affilée" + "streak_3": "Résolvez des puzzles 90 jours d'affilée" + "streak_4": "Résolvez des puzzles 180 jours d'affilée" + "streak_5": "Résolvez des puzzles 365 jours d'affilée" + "team_player_1": "Terminez votre premier puzzle en équipe ou en duo" + "team_player_2": "Terminez 5 puzzles en équipe ou en duo" + "team_player_3": "Terminez 25 puzzles en équipe ou en duo" + "team_player_4": "Terminez 100 puzzles en équipe ou en duo" + "team_player_5": "Terminez 500 puzzles en équipe ou en duo" + "zen_puzzler_1": "Enregistrez votre première résolution relax sans temps" + "zen_puzzler_2": "Enregistrez 10 résolutions relax sans temps" + "zen_puzzler_3": "Enregistrez 50 résolutions relax sans temps" + "zen_puzzler_4": "Enregistrez 150 résolutions relax sans temps" + "zen_puzzler_5": "Enregistrez 365 résolutions relax sans temps" + "first_try_1": "Enregistrez 5 résolutions en première tentative" + "first_try_2": "Enregistrez 50 résolutions en première tentative" + "first_try_3": "Enregistrez 200 résolutions en première tentative" + "first_try_4": "Enregistrez 500 résolutions en première tentative" + "first_try_5": "Enregistrez 1 000 résolutions en première tentative" + "unboxed_1": "Résolvez votre premier puzzle sans regarder la boîte" + "unboxed_2": "Résolvez 5 puzzles sans regarder la boîte" + "unboxed_3": "Résolvez 25 puzzles sans regarder la boîte" + "unboxed_4": "Résolvez 50 puzzles sans regarder la boîte" + "unboxed_5": "Résolvez 100 puzzles sans regarder la boîte" + "brand_explorer_1": "Résolvez des puzzles de 3 fabricants différents" + "brand_explorer_2": "Résolvez des puzzles de 10 fabricants différents" + "brand_explorer_3": "Résolvez des puzzles de 25 fabricants différents" + "brand_explorer_4": "Résolvez des puzzles de 50 fabricants différents" + "brand_explorer_5": "Résolvez des puzzles de 100 fabricants différents" + "marathoner_1": "Terminez votre premier puzzle de 2 000 pièces ou plus" + "marathoner_2": "Terminez 5 puzzles de 2 000 pièces ou plus" + "marathoner_3": "Terminez 15 puzzles de 2 000 pièces ou plus" + "marathoner_4": "Terminez 40 puzzles de 2 000 pièces ou plus" + "marathoner_5": "Terminez 100 puzzles de 2 000 pièces ou plus" + "photographer_1": "Ajoutez une photo à votre premier puzzle terminé" + "photographer_2": "Ajoutez des photos à 25 puzzles terminés" + "photographer_3": "Ajoutez des photos à 100 puzzles terminés" + "photographer_4": "Ajoutez des photos à 500 puzzles terminés" + "photographer_5": "Ajoutez des photos à 1 000 puzzles terminés" + "steady_hands_1": "Résolvez au moins un puzzle sur 2 trimestres de l'année d'affilée" + "steady_hands_2": "Résolvez au moins un puzzle sur 4 trimestres de l'année d'affilée" + "steady_hands_3": "Résolvez au moins un puzzle sur 8 trimestres de l'année d'affilée" + "steady_hands_4": "Résolvez au moins un puzzle sur 12 trimestres de l'année d'affilée" + "steady_hands_5": "Résolvez au moins un puzzle sur 16 trimestres de l'année d'affilée" + "librarian_1": "Faites accepter votre première proposition d'amélioration du catalogue" + "librarian_2": "Faites accepter 5 propositions d'amélioration du catalogue" + "librarian_3": "Faites accepter 20 propositions d'amélioration du catalogue" + "librarian_4": "Faites accepter 50 propositions d'amélioration du catalogue" + "librarian_5": "Faites accepter 100 propositions d'amélioration du catalogue" + "speed_1000_pieces_1": "Résolvez un puzzle de 1 000 pièces en moins de 8 heures (solo)" + "speed_1000_pieces_2": "Résolvez un puzzle de 1 000 pièces en moins de 4 heures (solo)" + "speed_1000_pieces_3": "Résolvez un puzzle de 1 000 pièces en moins de 2 h 30 (solo)" + "speed_1000_pieces_4": "Résolvez un puzzle de 1 000 pièces en moins d'1 h 45 (solo)" + "speed_1000_pieces_5": "Résolvez un puzzle de 1 000 pièces en moins d'1 h 15 (solo)" + "weekend_puzzler_1": "Terminez 10 résolutions le week-end" + "weekend_puzzler_2": "Terminez 50 résolutions le week-end" + "weekend_puzzler_3": "Terminez 150 résolutions le week-end" + "weekend_puzzler_4": "Terminez 300 résolutions le week-end" + "weekend_puzzler_5": "Terminez 600 résolutions le week-end" + "cataloger_1": "Ajoutez votre premier puzzle approuvé au catalogue" + "cataloger_2": "Ajoutez 10 puzzles approuvés au catalogue" + "cataloger_3": "Ajoutez 50 puzzles approuvés au catalogue" + "cataloger_4": "Ajoutez 150 puzzles approuvés au catalogue" + "cataloger_5": "Ajoutez 300 puzzles approuvés au catalogue" + "unit": + "puzzles": "puzzles" + "pieces": "pièces" + "days": "jours" + "team_solves": "résolutions en équipe" "scan": "meta": "title": "Lecteur de code-barres" @@ -2808,6 +3158,39 @@ edition: "most_solved": "Puzzles %pieces% pièces les plus assemblés" "view_all": "Voir tous les puzzles %pieces% pièces" +"guides": + "breadcrumb": + "home": "Accueil" + "guides": "Guides" + "ui": + "eyebrow": "Guide" + "updated": "Mis à jour le %date%" + "data_note": "Données communautaires en direct" + "read_next": "À lire ensuite" + "cta_title": "Prêt à chronométrer votre prochain puzzle ?" + "cta_stopwatch": "Lancer le chronomètre" + "cta_puzzles": "Parcourir la base de puzzles" + "cta_events": "Trouver une compétition" + "index": + "title": "Guides du speed puzzling" + "meta_description": "Guides du speed puzzling appuyés sur de vrais temps d'assemblage : combien de temps prend vraiment un puzzle, comment fonctionnent les compétitions et comment devenir plus rapide." + "intro": "Écrits par la communauté du speed puzzling, appuyés sur de vrais temps d'assemblage enregistrés — pas des suppositions." + "read_guide": "Lire le guide" + "footnote": "Toutes les statistiques de ces guides sont calculées à partir des résolutions enregistrées sur MySpeedPuzzling et se mettent à jour automatiquement à mesure que la communauté enregistre de nouveaux temps." + "what_is": + "title": "Qu'est-ce que le speed puzzling ?" + "meta_description": "Le speed puzzling, c'est l'assemblage de puzzles contre la montre. Découvrez comment fonctionnent les compétitions comme le WJPC, les temps typiques et comment vous lancer." + "card_description": "L'introduction complète : formats, fonctionnement des compétitions, temps typiques et comment rejoindre la communauté." + "how_long": + "title": "Combien de temps pour un puzzle de 1 000 pièces ?" + "meta_description": "Mesuré sur %count% résolutions solo enregistrées : un puzzle de 1 000 pièces médian se termine en %median%. Percentiles réels et meilleurs temps, par nombre de pièces." + "meta_description_fallback": "La seule réponse en ligne appuyée sur des données : temps médians, percentiles et records enregistrés par nombre de pièces, issus de vraies résolutions suivies." + "card_description": "De vraies données, pas des suppositions : temps médians, percentiles et records enregistrés par nombre de pièces." + "tips": + "title": "Conseils de speed puzzling : comment devenir plus rapide" + "meta_description": "Dix conseils pratiques de speed puzzling utilisés par les puzzleurs compétitifs — tri, bords, blocs de couleurs, installation et comment mesurer de vrais progrès." + "card_description": "Dix techniques qui réduisent vraiment votre temps d'assemblage, plus des repères communautaires pour vous situer." + "wjpc_hub": "meta": "title": "Championnat du monde de puzzle (WJPC)" diff --git a/translations/messages.ja.yml b/translations/messages.ja.yml index 9c265c58..1b020f6a 100644 --- a/translations/messages.ja.yml +++ b/translations/messages.ja.yml @@ -181,6 +181,8 @@ "link_to_hub": "最多解決パズルや最もアクティブなプレイヤーをお探しですか?新しいハブに移動しました!" "msp_elo_banner": "MSP Ratingラダー BETAをリリースしました — スキルベースの新しいランキングシステムです。できたてほやほやなので、微調整を重ねながら改善していきます!" "msp_elo_cta": "MSP Ratingラダー" + "xp_ladder_banner": "2つのランキングが登場:どれだけ組んだかのXPと、何を達成したかの実績ポイント。" + "xp_ladder_cta": "XPランキング" "filters": "button": "フィルター" "filter_by": "フィルター条件" @@ -751,6 +753,7 @@ "delete_button": "削除 — なかったことに!" "delete_modal_message": "確認のため..." "delete_modal_confirm": "本当に削除しますか?" + "delete_xp_warning": "この記録で獲得した%xp% XPが失われます。" "delete_modal_discard_button": "いいえ、残します" "delete_modal_confirm_button": "はい、削除します" "error": @@ -802,6 +805,13 @@ "frequency_48_hours": "48時間ごと" "frequency_1_week": "週に1回" "newsletter_enabled": "ニュースレターを受信する" + "content_digest_frequency": "週間ダイジェストメール" + "content_digest_help": "あなたの一週間のパズル活動:XP、実績、統計、仲間のアクティビティ。週1回がちょうどいい頻度です。" + "content_digest_none": "ダイジェストを受け取らない" + "content_digest_daily": "毎日+毎週" + "content_digest_weekly": "毎週" + "hide_experience_system": "経験値システム(XPとレベル)を非表示" + "hide_experience_system_help": "あなたのレベル、XPの明細、お祝い演出、リーダーボードへの表示がすべて非表示になります。XPは裏側で静かに貯まり続けるので、再びオンにしても何も失われません。" "newsletter_help": "プラットフォームの新機能などについてのニュースレターを不定期にお送りします。マーケティングや宣伝は一切ありません。想定頻度:月1回以下。" "messaging_notifications": "メッセージと通知" "personal_access_tokens": "個人アクセストークン" @@ -985,11 +995,353 @@ 10: "10月" 11: "11月" 12: "12月" -"badges": - "title": "バッジ" - "my_title": "マイバッジ" - "badge": - "supporter": "サポーター" +xp: + level_chip: "Lv %level%" + total: "%xp% XP" + total_tooltip: "合計%xp% XPを獲得" + max_level_reached: "山の頂上に到達 — レベル50!" + progress_label: "レベル%level%まであと%xp% XP" + receipt: + title: "今回の完成で獲得したXP" + total: "合計" + waiting_teaser: "{1}この完成は、お披露目待ちの実績1個にカウントされました 🔒|]1,Inf[この完成は、お披露目待ちの実績%count%個にカウントされました 🔒" + max_level_title: "レベル50 — XPはこれからも貯まり、栄光は永遠に" + nearest_achievements: "次の実績はもう目前です:" + max_level_all_done: "制覇できるものはすべて制覇しました。正直、脱帽です。" + relax_repeat: "おなじみのパズルを、純粋に楽しむために — 今回はXPなし。それがいいんです。" + counting: "XPを集計中…" + line: + base: "完成" + base_repeat_second: "リピート完成(2回目、×50%)" + base_repeat_later: "リピート完成(3回目以降、×25%)" + base_relax: "リラックス完成(×50%)" + solve_difficulty_bonus: "難易度ボーナス" + solve_unboxed_bonus: "箱なしボーナス" + solve_speed_bonus: "スピードボーナス" + solve_weekly_boost: "ウィークリーブースト" + solve_daily_warmup: "デイリーウォームアップ" + difficulty_settlement: "難易度ボーナス(確定)" + speed_settlement: "スピードボーナス(確定)" + achievement: "実績獲得" + solve_compensation: "記録の削除" + difficulty_pending: "難易度ボーナスは保留中 — このパズルが評価されると確定します" + speed_pending: "スピードボーナスは保留中 — 3人のパズラーのタイムが必要です" + levelup: + aria: "レベルアップ!レベル%level%に到達しました" + label: "レベルアップ!" + max_label: "頂上です!" + message: "あなたのパズルの旅は登り続けています。お見事です!" + max_message: "レベル50。ここが最高峰です。ここから先は、実績ポイントのラダーがあなたの山になります。" + enter_ap_ladder: "APラダーへ進む" + view_ap_ladder: "APラダーを見る" + skip_hint: "どこでもタップして続行" + achievement_toast: + title: "新しい実績!" + estimate: + line: "このパズルを完成させると約%base% XP+最大%bonus%のボーナスを獲得" + repeat_note: "このパズルは以前にも完成しています — 今回は×%multiplier%でカウントされます。" + unrated_note: "難易度ボーナスは、このパズルが評価されると自動的に確定します。" + leaderboard: + meta_title: "XPリーダーボード" + title: "XPリーダーボード" + subtitle: "活動に、拍手を。" + all_leaderboards: "すべてのリーダーボード" + favorites_only: "お気に入りのみ" + player: "パズラー" + value: + xp: "合計XP" + achievement-points: "AP" + tab: + xp: "XP" + achievement-points: "実績ポイント" + ap_title: "実績ポイントランキング" + ap_subtitle: "コンプリートを競う。" + ap_login_required: "実績ポイントのラダーを見るにはログインしてください。" + xp_value: "%xp% XP" + ap_value: "%points% AP" + your_position: "あなたの順位" + empty: "まだ何もありません — 記録を追加して、ボードの幕を開けましょう!" + history: + meta_title: "マイXP履歴" + title: "マイXP履歴" + subtitle: "1ポイントまで、すべて記帳済み — あなたの完全なXP台帳です。" + when: "日時" + reason: "理由" + empty: "まだXPがありません — 最初の完成がそれを変えます。" + deleted_solve: "削除された記録" + pagination: "XP履歴のページ" + note: "気になる行がありますか?" + reveal: + meta_title: "あなたのパズルの歩み、お披露目" + title: "あなたの歩みが、まるごとXPになりました ✨" + intro: "これまでに記録したすべてのパズルがカウントされています。あなたの歩みの価値はこちら:" + level_label: "レベル" + xp_note: "これまでのパズル履歴すべてで獲得" + achievements_member: "{1}さらに、実績1個はもうあなたのもの — プロフィールで見つけてください!|]1,Inf[さらに、実績%count%個はもうあなたのもの — プロフィールで見つけてください!" + share_title: "MySpeedPuzzlingでレベル%level%になりました!" + share_button: "レベルをシェア" + continue: "マイプロフィールへ" + to_badge_reveals: "お披露目待ちの実績がありますか?ここでめくりましょう。" + explainer: + title: "XPとレベルの仕組み" + intro: "パズルをひとつ完成させるたびに、あなたは前へ進みます。XP(経験値)は、速さではなく、あなたが取り組んだことそのものをたたえるもの。記録を追加してXPを獲得し、レベルが1から50まで育っていくのを見守りましょう。" + currencies: + heading: "MySpeedPuzzlingの3つの数字" + header_what: "項目" + header_measures: "測るもの" + header_who: "表示対象" + xp_name: "XPとレベル" + xp_measures: "あなたの活動 — すべての完成がカウント" + xp_who: "全員、ずっと無料" + ap_name: "実績ポイント(AP)" + ap_measures: "獲得した実績のコレクション" + ap_who: "メンバー" + rating_name: "MSP Rating" + rating_measures: "あなたの速さとスキル" + rating_who: "メンバー(従来どおり、別枠)" + never_bought: "XPは決してお金では買えません — ブーストも、倍率も、近道もなし。ずっとです。" + unlock_nothing: "レベルで機能が解放されることはありません。レベルは、あなたのパズラーとしての個性を映すものです。" + how: + heading: "完成がXPになる仕組み" + intro: "完成のたびに表示される明細で、1ポイントごとの内訳を確認できます:" + base: "基本:およそ100ピースにつき1 XP(500ピースのパズル ≈ 5 XP)。上限は60です。" + difficulty: "難易度ボーナス:難しいパズル(コミュニティ難易度ティア3〜6)には+15%〜+50%が加算されます。" + team: "チーム完成:グループ全員がソロの75%を獲得 — 一緒に組み立てた頑張りが、全員分カウントされます。" + unboxed: "箱なしボーナス:箱の絵を見ずに完成したら? +20%です。" + repeat: "リピート完成:同じパズルの2回目のタイム付き完成は50%、それ以降は25%。リラックスモードは初回50%、リピートは0%です。" + speed: "スピードボーナス:コミュニティ中央値より速いソロのタイム付き完成には+5%、上位25%なら+10%、上位10%なら+15%(3人以上のパズラーのタイムが必要です)。" + weekly: "ウィークリーブースト:毎週最初の5回の完成には+50%が上乗せされます。" + daily: "デイリーウォームアップ:その日最初の完成には一律+2 XP。" + example: + heading: "計算例" + body: "1000ピース・ティア4のパズルを、ソロ・タイム計測あり・初挑戦で、箱を見ずに、中央値より速く、その週とその日の最初の完成として仕上げた場合:" + math: "基本10 + 難易度3 + 箱なし3 + スピード1 + ウィークリーブースト8 + ウォームアップ2 = 27 XP" + unrated: + heading: "未評価のパズル" + body: "カタログに登場したばかりのパズルには、まだ難易度ティアがないことがあります。基本XPはすぐに獲得でき、コミュニティがパズルを評価すると難易度ボーナスが自動的に加算(「確定」)されます。スピードボーナスも、十分な人数のタイムが集まれば同じように確定します。" + achievements: + heading: "実績でもXPがもらえます" + body: "実績の各ティアは一度きり、永久に有効なXPを付与します:ブロンズ5 · シルバー10 · ゴールド25 · プラチナ50 · ダイヤモンド100。" + levels: + heading: "レベル" + header_level: "レベル" + header_xp: "XP" + summit: "レベル50が頂上です — 合計3,160 XP。その後もXPは貯まり続け、レベル50からは実績ポイントのラダーが次の山になります。" + lose: + heading: "XPが減ることはありますか?" + body: "記録を削除または編集したときだけです — その記録で獲得したXPも一緒になくなります。それ以外でXPが減ることはありません。実績は永久にあなたのものです。" + faq: + heading: "よくある質問" + old_solves_question: "過去の記録もカウントされますか?" + old_solves_answer: "はい!リリース時に、これまでの履歴すべてが変換されました(基本の計算式のみで、時間系のボーナスは対象外 — これらは今後の記録にのみ適用されます)。" + opt_out_question: "こういうのは要りません。" + opt_out_answer: "わかりました — プロフィール設定(「経験値システム」)でオフにすると、レベル、XP、お祝い演出が表示されなくなります。" + friend_question: "同じパズルなのに、友達の方が多くXPをもらえたのはなぜですか?" + friend_answer: "リピートの減額、ウィークリーブースト、デイリーウォームアップは人それぞれ。2枚の明細がぴったり一致することはめったにありません。明細の行をタップすると、その理由が表示されます。" + fair_play_question: "公平性はどう保たれていますか?" + fair_play_answer: "静かに自動で働くいくつかのガードレールが、数字の正直さを守っています — 詳しくはフェアプレイと信頼のページをご覧ください。" + fair_play: + title: "フェアプレイと信頼" + intro: "MySpeedPuzzlingは信頼の上に成り立っています。記録が反映される前に誰かが審査することはありません — 私たちはあなたを信じています。それでもコミュニティの数字が意味を持ち続けるのは、静かに自動で働くいくつかのガードレールのおかげです:" + principle_no_buying: "XPが測るのは活動であって、支出ではありません。XPやブースト、倍率をお金で買う方法は存在しません。" + principle_repeats: "同じパズルのリピート完成は、回数を重ねるごとに獲得XPが減ります — 同じパズルを何度も記録しても近道にはなりません。" + principle_speed: "スピードボーナスは、信頼できるコミュニティの基準がある場合にのみ適用され、現実的とは思えないほど速いタイムには単純に付きません。非難もドラマもなし — ボーナスが適用されないだけです。" + principle_deleting: "記録を削除すると、その記録で獲得したXPも自動的かつ透明に取り除かれます(XP履歴ページですべてのエントリを確認できます)。" + principle_caps: "極端に大きい、または通常と異なるエントリには上限が設けられ、1件の記録がラダーを歪めることはありません。" + closing_thresholds: "正確なしきい値はあえて公開していません — 公平さを守るためのものであって、攻略されるためのものではないからです。リーダーボードで何かおかしいと感じたら、ぜひご連絡ください。すべての報告に人間が目を通します。" + closing_celebrate: "正直にパズルを、盛大にお祝いを。🧩" + explainer_link: "1ポイントごとの獲得方法が気になりますか?XPとレベルの仕組みをご覧ください。" + +content_digest: + unsubscribe: + meta_title: "ダイジェストの配信停止" + confirm_title: "週間ダイジェストの配信を停止しますか?" + confirm_text: "お気になさらず — 下をワンクリックするだけで週間ダイジェストは止まります。通知設定からいつでも再開できます。" + confirm_button: "はい、配信を停止します" + done_title: "配信を停止しました" + done_text: "今後、週間ダイジェストのメールは届きません。恋しくなったら、通知設定でいつでもお待ちしています。" + back_home: "MySpeedPuzzlingに戻る" + +badges: + title: "実績" + my_title: "マイ実績" + new: "NEW" + browse_all: "すべての実績を見る" + reveal: "新しい実績をお披露目する" + waiting_teaser: "{1}実績1個があなたを待っています — メンバーになってお披露目しましょう!|]1,Inf[実績%count%個があなたを待っています — メンバーになってお披露目しましょう!" + waiting_teaser_zero: "最初の実績は思っているより近くにあります — 記録を追加して、何が起こるか見てみましょう。" + unlock_with_membership: "メンバーシップで解除" + ap_total: "%points% AP" + ap_total_tooltip: "あなたの実績ポイント — 獲得したティアはすべて、ずっとカウントされます" + free_user_hint: "メンバーシップがなくても実績は貯まり続けます — 大切に保管されて、あなたを待っています。" + earned_waiting: "獲得済み ✓ — お披露目待ち 🔒" + view_holders: "獲得したパズラーを見る" + how_it_works_hint: "実績を獲得するとXPと実績ポイントがもらえます。" + how_it_works_link: "XPとレベルの仕組み" + detail: + meta_title: "%name% — 実績保持者" + country_filter: "国" + all_countries: "すべての国" + newest_earners: "最近の獲得者" + holders_count: "{0}まだいません|{1}1人のパズラー|]1,Inf[%count%人のパズラー" + holders_count_tooltip: "この数には全員が含まれます — 下に掲載されていないパズラーも含みます" + first_to_earn: "最初の獲得者" + more_puzzlers: "+%count%人のパズラー" + only_hidden_holders: "{1}1人のパズラーがこのティアを獲得しています — プロフィールは公開されていません。|]1,Inf[%count%人のパズラーがこのティアを獲得しています — プロフィールは公開されていません。" + nobody_yet: "このティアの獲得者はまだいません。最初の一人が歴史を作ります!" + listing_note: "保持者リストにはプロフィールを公開しているメンバーが表示されます。人数にはすべてのパズラーが含まれます。" + reveals: + meta_title: "実績をお披露目" + title: "あなたの実績が届きました 🎉" + intro: "{1}実績1個がひっそりとあなたを待っていました。タップしてめくってみましょう!|]1,Inf[実績%count%個がひっそりとあなたを待っていました。ひとつずつタップしてめくってみましょう!" + hint: "ゆっくりどうぞ — 一枚一枚のめくりが、それぞれの小さな見せ場です。" + all_done: "すべてお披露目が終わりました — あなたのプロフィールが誇らしげに飾っています。" + invite: "{1}実績1個がお披露目の瞬間を待っています!|]1,Inf[実績%count%個がお披露目の瞬間を待っています!" + invite_button: "お披露目する" + back_to_profile: "マイプロフィールに戻る" + overview_title: "実績" + overview_subtitle: "パズルの歩みの中でマイルストーンを達成して、実績を獲得しましょう" + progress_label: "%current% / %target%" + progress_time_label: "%current_time% → 目標 %target_time%" + locked: "ロック中" + earned_on: "%date%に獲得" + highest_earned: "最高獲得ティア" + not_earned_yet: "未獲得" + keep_going: "その調子!" + login_to_track: "ログインすると、各実績への進捗を確認できます。" + info: + open: "%achievement% はどんな実績?" + earned: "獲得済み" + next_tier: "次: %tier%" + single_tier_note: "この実績は単一ティアで、手動で付与されます(完成では獲得できません)。" + tier: + bronze: "ブロンズ" + silver: "シルバー" + gold: "ゴールド" + platinum: "プラチナ" + diamond: "ダイヤモンド" + badge: + supporter: "アーリーアダプター" + puzzles_solved: "パズルエクスプローラー" + pieces_solved: "ピースクランチャー" + speed_500_pieces: "スピードデーモン(500ピース)" + streak: "絶好調" + team_player: "チームスピリット" + zen_puzzler: "禅パズラー" + first_try: "ファーストトライ" + unboxed: "箱いらず" + brand_explorer: "ブランドエクスプローラー" + marathoner: "マラソンランナー" + photographer: "フォトグラファー" + steady_hands: "ゆるぎない手" + librarian: "司書" + speed_1000_pieces: "スピードデーモン(1000ピース)" + weekend_puzzler: "週末パズラー" + cataloger: "カタログ職人" + description: + supporter: "早くからMySpeedPuzzlingを信じ、成長を支えてくれたパズラーに贈られます。" + puzzles_solved: "いろいろなパズルを完成させて、このラダーを登りましょう。" + pieces_solved: "ピースは多いほど良し — これまでにはめたすべてのピースがカウントされます。" + speed_500_pieces: "500ピースのソロ最速タイムでティアが決まります。" + streak: "一日も欠かさず、毎日パズルを完成させましょう。" + team_player: "他のパズラーとチームを組んで、一緒にパズルを仕上げましょう。" + zen_puzzler: "純粋に楽しむためのパズル — タイムなしで記録したリラックスモードの完成がカウントされます。" + first_try: "一度目で決めましょう — そのパズルへの初挑戦として記録された完成がすべてカウントされます。" + unboxed: "箱の絵をのぞかずにパズルを完成させる — 究極のミステリーチャレンジです。" + brand_explorer: "さまざまなメーカーのパズルを試して、お気に入りを見つけましょう。" + marathoner: "大物に挑みましょう — 2,000ピース以上のパズルの完成がすべてカウントされます。" + photographer: "記録を追加するときに完成したパズルの写真を撮りましょう — 一枚一枚がカウントされます。" + steady_hands: "四半期ごとに少なくとも1回の完成を、途切れさせずに続けましょう。" + librarian: "パズルカタログを正確に保つお手伝い — 承認されたカタログ改善提案のみがカウントされます。" + speed_1000_pieces: "1,000ピースのソロ最速タイムでティアが決まります。" + weekend_puzzler: "土曜日と日曜日はパズルの日 — 週末の完成がすべてカウントされます。" + cataloger: "パズルカタログを育てましょう — あなたが追加して承認されたパズルがすべてカウントされます。" + requirement: + puzzles_solved_1: "10種類のパズルを完成させる" + puzzles_solved_2: "100種類のパズルを完成させる" + puzzles_solved_3: "500種類のパズルを完成させる" + puzzles_solved_4: "1,000種類のパズルを完成させる" + puzzles_solved_5: "2,000種類のパズルを完成させる" + pieces_solved_1: "累計10,000ピースに到達する" + pieces_solved_2: "累計100,000ピースに到達する" + pieces_solved_3: "累計500,000ピースに到達する" + pieces_solved_4: "累計1,000,000ピースに到達する" + pieces_solved_5: "累計2,000,000ピースに到達する" + speed_500_pieces_1: "500ピースのパズルを5時間切りで完成させる(ソロ)" + speed_500_pieces_2: "500ピースのパズルを2時間切りで完成させる(ソロ)" + speed_500_pieces_3: "500ピースのパズルを1時間切りで完成させる(ソロ)" + speed_500_pieces_4: "500ピースのパズルを45分切りで完成させる(ソロ)" + speed_500_pieces_5: "500ピースのパズルを30分切りで完成させる(ソロ)" + streak_1: "7日連続でパズルを完成させる" + streak_2: "30日連続でパズルを完成させる" + streak_3: "90日連続でパズルを完成させる" + streak_4: "180日連続でパズルを完成させる" + streak_5: "365日連続でパズルを完成させる" + team_player_1: "チームまたはペアで初めてパズルを完成させる" + team_player_2: "チームまたはペアでパズルを5回完成させる" + team_player_3: "チームまたはペアでパズルを25回完成させる" + team_player_4: "チームまたはペアでパズルを100回完成させる" + team_player_5: "チームまたはペアでパズルを500回完成させる" + zen_puzzler_1: "タイムなしのリラックス完成を初めて記録する" + zen_puzzler_2: "タイムなしのリラックス完成を10回記録する" + zen_puzzler_3: "タイムなしのリラックス完成を50回記録する" + zen_puzzler_4: "タイムなしのリラックス完成を150回記録する" + zen_puzzler_5: "タイムなしのリラックス完成を365回記録する" + first_try_1: "初挑戦での完成を5回記録する" + first_try_2: "初挑戦での完成を50回記録する" + first_try_3: "初挑戦での完成を200回記録する" + first_try_4: "初挑戦での完成を500回記録する" + first_try_5: "初挑戦での完成を1,000回記録する" + unboxed_1: "箱を見ずに初めてパズルを完成させる" + unboxed_2: "箱を見ずにパズルを5回完成させる" + unboxed_3: "箱を見ずにパズルを25回完成させる" + unboxed_4: "箱を見ずにパズルを50回完成させる" + unboxed_5: "箱を見ずにパズルを100回完成させる" + brand_explorer_1: "3社の異なるメーカーのパズルを完成させる" + brand_explorer_2: "10社の異なるメーカーのパズルを完成させる" + brand_explorer_3: "25社の異なるメーカーのパズルを完成させる" + brand_explorer_4: "50社の異なるメーカーのパズルを完成させる" + brand_explorer_5: "100社の異なるメーカーのパズルを完成させる" + marathoner_1: "2,000ピース以上のパズルを初めて完成させる" + marathoner_2: "2,000ピース以上のパズルを5回完成させる" + marathoner_3: "2,000ピース以上のパズルを15回完成させる" + marathoner_4: "2,000ピース以上のパズルを40回完成させる" + marathoner_5: "2,000ピース以上のパズルを100回完成させる" + photographer_1: "完成したパズルに初めて写真を追加する" + photographer_2: "完成したパズル25件に写真を追加する" + photographer_3: "完成したパズル100件に写真を追加する" + photographer_4: "完成したパズル500件に写真を追加する" + photographer_5: "完成したパズル1,000件に写真を追加する" + steady_hands_1: "2四半期連続で、各四半期に少なくとも1つのパズルを完成させる" + steady_hands_2: "4四半期連続で、各四半期に少なくとも1つのパズルを完成させる" + steady_hands_3: "8四半期連続で、各四半期に少なくとも1つのパズルを完成させる" + steady_hands_4: "12四半期連続で、各四半期に少なくとも1つのパズルを完成させる" + steady_hands_5: "16四半期連続で、各四半期に少なくとも1つのパズルを完成させる" + librarian_1: "カタログ改善提案が初めて承認される" + librarian_2: "カタログ改善提案が5件承認される" + librarian_3: "カタログ改善提案が20件承認される" + librarian_4: "カタログ改善提案が50件承認される" + librarian_5: "カタログ改善提案が100件承認される" + speed_1000_pieces_1: "1,000ピースのパズルを8時間切りで完成させる(ソロ)" + speed_1000_pieces_2: "1,000ピースのパズルを4時間切りで完成させる(ソロ)" + speed_1000_pieces_3: "1,000ピースのパズルを2時間30分切りで完成させる(ソロ)" + speed_1000_pieces_4: "1,000ピースのパズルを1時間45分切りで完成させる(ソロ)" + speed_1000_pieces_5: "1,000ピースのパズルを1時間15分切りで完成させる(ソロ)" + weekend_puzzler_1: "週末に10回完成させる" + weekend_puzzler_2: "週末に50回完成させる" + weekend_puzzler_3: "週末に150回完成させる" + weekend_puzzler_4: "週末に300回完成させる" + weekend_puzzler_5: "週末に600回完成させる" + cataloger_1: "カタログに追加したパズルが初めて承認される" + cataloger_2: "カタログに追加したパズルが10件承認される" + cataloger_3: "カタログに追加したパズルが50件承認される" + cataloger_4: "カタログに追加したパズルが150件承認される" + cataloger_5: "カタログに追加したパズルが300件承認される" + unit: + puzzles: "パズル" + pieces: "ピース" + days: "日" + team_solves: "チーム完成" "scan": "meta": "title": "バーコードリーダー" @@ -2795,6 +3147,39 @@ qr_code: "most_solved": "最も組み立てられた%pieces%ピースパズル" "view_all": "%pieces%ピースパズルをすべて見る" +guides: + breadcrumb: + home: "ホーム" + guides: "ガイド" + ui: + eyebrow: "ガイド" + updated: "%date%更新" + data_note: "コミュニティのライブデータ" + read_next: "次に読む" + cta_title: "次のパズル、タイムを計ってみませんか?" + cta_stopwatch: "ストップウォッチを開始" + cta_puzzles: "パズルデータベースを見る" + cta_events: "大会を探す" + index: + title: "スピードパズリングガイド" + meta_description: "実際の完成タイムデータに裏付けられたスピードパズリングのガイド:パズルにかかる本当の時間、大会の仕組み、速くなるコツ。" + intro: "スピードパズリングコミュニティが執筆し、実際に記録された完成タイムに裏付けられています — 当て推量ではありません。" + read_guide: "ガイドを読む" + footnote: "これらのガイドの統計はすべてMySpeedPuzzlingに記録された完成データから算出され、コミュニティが新しいタイムを記録するたびに自動的に更新されます。" + what_is: + title: "スピードパズリングとは?" + meta_description: "スピードパズリングは、時間と競うジグソーパズルです。WJPCなどの大会の仕組み、一般的なタイム、始め方をご紹介します。" + card_description: "完全な入門ガイド:競技形式、大会の仕組み、一般的なタイム、コミュニティへの参加方法。" + how_long: + title: "1000ピースのパズルにかかる時間は?" + meta_description: "%count%件のソロ完成記録から算出:1000ピースパズルの中央値は%median%です。ピース数ごとの実際のパーセンタイルと最速タイムを掲載。" + meta_description_fallback: "ネット上で唯一のデータに基づく答え:実際に記録された完成データによる、ピース数ごとのタイム中央値・パーセンタイル・最速記録。" + card_description: "当て推量ではなく実データ:ピース数ごとのタイム中央値、パーセンタイル、最速記録。" + tips: + title: "スピードパズリング上達のコツ:速くなるには" + meta_description: "競技パズラーが実践する10の実用的なコツ — 仕分け、エッジ、色のブロック分け、セットアップ、そして本当の上達の測り方。" + card_description: "完成タイムを実際に縮める10のテクニックと、自分の実力を測るコミュニティベンチマーク。" + "wjpc_hub": "meta": "title": "世界ジグソーパズル選手権(WJPC)"