-
+
+
+
)
}
diff --git a/src/i18n/index.ts b/src/i18n/index.ts
index b67bdad19..1a7bc7f91 100644
--- a/src/i18n/index.ts
+++ b/src/i18n/index.ts
@@ -2,7 +2,7 @@ import { format, formatDistance, Locale } from 'date-fns'
import i18next from 'i18next'
import BrowserLanguageDetector from 'i18next-browser-languagedetector'
import { initReactI18next } from 'react-i18next'
-import { ucfirst } from '~constants/strings'
+import { ucfirst } from '~utils/strings'
import { LanguagesSlice } from './languages.mjs'
import { dateLocales, translations } from './locales'
diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json
index d53637714..3a4b11b36 100644
--- a/src/i18n/locales/ca.json
+++ b/src/i18n/locales/ca.json
@@ -1,7 +1,12 @@
{
+ "actions": {
+ "save": "Save Changes"
+ },
"active": "Actiu",
"all": "Tots",
"already_member": "Ja ets membre?",
+ "anonymous": "anonymous",
+ "approval": "approval",
"aside": {
"has_already_voted": "El teu vot s'ha registrat correctament",
"is_not_in_census": "No estàs en el cens",
@@ -23,19 +28,10 @@
"subtitle": "Redueix costos, estalvia temps: Votació segura, privada i complint amb el RGPD",
"title": "La plataforma global de votació"
},
- "back": "Enrere",
- "banner": {
- "start_now": "Crea una votació!",
- "title": "Vot digital segur, verificable i flexible"
- },
- "banner_voting_types": {
- "anonymous_description": "La identitat dels votants serà completament confidencial, gràcies a la tecnologia zk-SNARKS.",
- "anonymous_title": "100% Anònim",
- "flexible_description": "Personalitza el teu procés de votació i la llista de participants per adaptar-los als requisits únics de la teva comunitat.",
- "flexible_title": "Votació Flexible",
- "token_description": "Vota amb tokens ERC20/ERC721 (NFT) o afegeix els teus propis tokens i vota sense pagar.",
- "token_title": "Votació amb Tokens"
+ "avatar": {
+ "hint": "Min 200x200px .PNG or .JPEG"
},
+ "back": "Enrere",
"billing": "Facturació",
"blog": "Blog",
"calculator": {
@@ -72,6 +68,14 @@
"vote_overwrite": "Correcció de vot",
"voting_process_cost": "Cost del procés de votació:"
},
+ "calendar": {
+ "define_active_period": "Define the active period for receiving votes",
+ "end_date": "End date",
+ "end_date_description": "Define the exact date and time of completion",
+ "start_date": "Start date",
+ "subtitle": "Specify the active period for receiving votes",
+ "title": "Calendar"
+ },
"cc": {
"actions": {
"cancel": "Cancel·la immediatament el procés de votació, sense permetre nous vots i sense comptabilitzar resultats (precaució: no es pot desfer)",
@@ -147,7 +151,6 @@
"gitcoin_description": "Amb aquest cens, només els votants amb Gitcoin Passport podran votar, proporcionant un mètode de resistència contra atacs sybil. Pots definir la puntuació general (GPS) i diferents stamps que el votant ha de tenir.",
"gitcoin_read_more": "Llegeix més sobre Scorer & Thresholds de Gitcoin",
"gitcoin_title": "Gitcoin Passport",
- "pro": "",
"request_custom_token": "Sol·licitar Tokens Personalitzats",
"social_address_title": "Usuaris de Github",
"spreadsheet_title": "Dades personalitzades",
@@ -157,6 +160,7 @@
"token_title": "Cens basat en tokens",
"wallet_address_title": "Adreces de cartera"
},
+ "census_details": "Census Details",
"claim": {
"loading_description": "Autenticació de cartera (Metamask, Rainbow, Coinbase):
Per rebre els teus tokens, si us plau, signa la sol·licitud quan se't demani.
Important:Si surts d'aquesta pàgina sense signar, no rebràs els tokens que has pagat.
Autenticació de compte social (Google, Github, Facebook):Si us plau, espera mentre processem la teva sol·licitud.
",
"purchase_success": "Apreciem la seva compra!Si tens alguna pregunta, envia un correu a orders@vocdoni.org
",
@@ -171,10 +175,11 @@
"success_title": "Els tokens s'han reclamat amb èxit"
}
},
- "close": "Tanca",
"contact_us": "Contact us",
+ "control": "Control:",
"copy": {
"address": "Copia l'adreça",
+ "copied": "Copied",
"copied_title": "Copiat!"
},
"cost_preview": {
@@ -220,6 +225,7 @@
"credit_card": "No credit card, no automatic renewal.",
"full_access": "Full access to basic features",
"header": "Try Vocdoni for free for 7 days",
+ "logout": "If you want to login from another account, please logout",
"multiple_administrators": "Multiple administrators",
"private_org": "Private Organization Details",
"private_org_description": "Help us tailor your experience with information about your org. We won't share this info",
@@ -236,25 +242,27 @@
"selected_users": "Usuaris seleccionats:"
}
},
- "dashboard": {
- "card": {
- "finish": "Acaba",
- "finished": "Acabat",
- "started": "Començat",
- "starts": "Comença"
- }
- },
+ "cumulative": "cumulative",
+ "customization": "Customization",
+ "delete_my_account": "Delete my account",
"description": "Description",
- "draft": "Esborrany",
- "edit_my_organization": "La meva entitat",
+ "edit_saas_profile": {
+ "customization_details": "Define the params that will enhance the user experience and customize the voting page",
+ "edited_successfully": "Updated successfully",
+ "header_image": "Header Image",
+ "upload_file": "Upload a file"
+ },
"email": "Correu electrònic",
- "enter_email": "Enter email",
+ "email_placeholder": "your@email.com",
+ "emailReminder": "emailReminder",
"error": {
+ "error_doing_things": "Error al realizar la operación",
"go_back": "Torna enrere",
"invalid_cell_data": "Algunes fileres no contenen adreces correctes: {{rows, list}}",
"invalid_row_length": "Corregeix les línies {{rows, list}} del document i torna a carregar-lo",
"invalid_weight_type": "S'esperava trobar el pes a la primera col·lumna a les línies {{rows, list}}, però s'han trobat dades inesperades",
"loading_page": "Càrrega de pàgina errònia",
+ "loading_roles": "Carregant rols",
"not_found": "Ho sentim, no s'ha trobat la pàgina que estaves buscant.",
"return_to_home": "Ves a l'inici"
},
@@ -279,6 +287,7 @@
"title": "Faucet de Tokens Vocdoni",
"tokens_you_own": "Tens {{ balance }} tokens."
},
+ "features": "Features",
"finished": "Finalitzat",
"footer": {
"company": "Empresa",
@@ -289,10 +298,8 @@
"demo4": "Votació per Classificació",
"demo5": "Pressupostos Participatius",
"demo6": "Votació Ponderada",
- "follow_us": "Segueix-nos",
"footer_subtitle": "El Protocol de Votació Global",
"terms_and_privacy": "Termes d'ús i Política de privacitat",
- "text": "El futurde la votació en Web3 comença aquí",
"uses_cases": "Casos d'Ús",
"uses_cases1": "Assemblees Generals d'Accionistes (AGMs)",
"uses_cases2": "Eleccions",
@@ -307,57 +314,26 @@
"form": {
"account_create": {
"delete_image": "Eliminar imatge",
- "description_helper": "Una breu descripció de la teva organització",
"description_placeholder": "Descripció (opcional)",
- "title_helper": "El nom de l'organització",
- "title_placeholder": "El nom de l'organització"
- },
- "edit_profile": {
- "avatar_helper": "Imatge/logotip de la teva organització",
- "avatar_placeholder": "URL de la imatge",
- "btn": "Desar",
- "footer": "Modificar la teva organització generarà una sol·licitud de signatura, amb un cost de 1 token"
+ "title_placeholder": "El nom de l'organització",
+ "website_placeholder": "https://example.com"
},
+ "choose_an_option": "Choose an option",
"error": {
"address_already_in_use": "Aquesta adreça ja és al cens",
"address_pattern": "Només s'admeten adreces hexadecimals (p. ex. 0x031101A...)",
- "avatar_error": "URL no vàlida",
"field_is_required": "Aquest camp és obligatori",
"min_address": "Si us plau, proporciona com a mínim una adreça",
"min_users_address": "Si us plau, proporciona com a mínim una adreça",
+ "password_min_length": "Min. 8 characters",
"recipient_address_invalid": "L'adreça especificada no sembla vàlida"
},
"process_create": {
- "behavior": {
- "anonymous": {
- "description": "La identitat dels votants serà completament anonimitzada, incloent per a l'organitzador. Cada votant haurà d'establir una contrasenya per garantir la confidencialitat de la seva identitat.",
- "title": "Anònim"
- },
- "customization": {
- "description": "Selecciona el teu tema desitjat, colors, textos i afegeix la teva marca a la pàgina de votació. També hi ha opcions més complexes disponibles.",
- "title": "Personalització"
- },
- "overwrite": {
- "description": "Si està marcat, els votants tindran l'opció de corregir el seu vot un cop.",
- "title": "Sobreescriure"
- },
- "secret": {
- "description": "Els resultats estaran disponibles quan el procés acabi en lloc d'estar disponibles en temps real.",
- "title": "Secret fins al final"
- },
- "title": "Opcions"
- },
"calendar": {
"date_format": "PPPPpppp",
- "end_date": "Data de finalització",
"end_date_description": "Aquesta votació començarà el {{ date.begin, format }} i finalitzarà el {{ date.end, format }}, amb una durada d'aproximadament {{ date, duration }}",
- "end_date_title_helper": "Definir la data i l'hora exactes de la conclusió.",
"now": "Ara",
- "start_date": "Hora d'inici",
- "start_date_description": "Especifica el període actiu per rebre vots. Selecciona 'Ara' per activar la votació immediatament després de la publicació.",
- "start_on_a_date": "Començar en una data",
- "title": "Calendari",
- "title_description": "Especificar el període actiu per rebre vots."
+ "start_on_a_date": "Començar en una data"
},
"census": {
"add_button": "Afegir",
@@ -419,14 +395,8 @@
"confirm_spreadsheet_removal": "Estàs segur que vols canviar-ho? Fent-ho s'esborrarà el fitxer que has carregat actualment.",
"creating_process": "Creant Procés de Votació...",
"meta": {
- "description": "Proporciona un títol i una descripció clars. Això ajudarà als votants a entendre el propòsit del procés de votació.",
- "description_helper": "Una breu descripció de la teva votació",
"description_label": "Descripció",
- "description_placeholder": "Descripció (opcional)",
- "title": "Informació de la votació",
- "title_helper": "El títol / propòsit de la votació",
- "title_label": "Títol",
- "title_placeholder": "El títol de la votació"
+ "description_placeholder": "Descripció (opcional)"
},
"navbar": {
"close_form_btn": "Tanca el formulari"
@@ -474,13 +444,6 @@
"spreadsheet_total_rows_one": "El cens té un sol registre",
"spreadsheet_total_rows_many": "",
"spreadsheet_total_rows_other": "El cens té {{ count }} registres",
- "steps": {
- "census": "Cens",
- "checks": "Organització",
- "confirm": "Confirmar",
- "info": "Informació",
- "questions": "Preguntes"
- },
"success_description": "Redirigint-te a la pàgina del procés de votació...",
"success_title": "Procés de votació creat amb èxit",
"web3": {
@@ -490,8 +453,19 @@
"your_wallet_is_added": "La teva adreça de cartera s'ha afegit automàticament al cens. La pots eliminar si ho desitges."
},
"weighted": "Vot ponderat"
+ },
+ "process_create_saas": {
+ "steps": {
+ "census_title": "Census",
+ "confirm_title": "Confirm",
+ "features_title": "Features",
+ "info_title": "Information",
+ "questions_title": "Questions"
+ }
}
},
+ "generate_pdf": "Generate PDF",
+ "generate_pdf_description": "Generate a PDF with the results",
"get_voc_tokens": {
"authentification_method": "Seleccioneu el vostre mètode d'autenticació preferit:",
"authentification_method_helper": "Podeu obtenir {{ faucetAmount }} tokens per mètode d'autenticació per setmana",
@@ -505,7 +479,6 @@
"more_effective": "25: Més efectiu",
"most_effective": "30: Molt efectiu"
},
- "help_and_support": "Ajuda i suport",
"home": {
"benefits": {
"card_1": {
@@ -732,28 +705,33 @@
"title": "Esteupreparats per a una nova era en la governança Web3?"
},
"invite": {
- "admin": "Admin",
- "admin_description": "Can view, comment, or also create and edit all workspace projects and folders. Typically used for employees.",
- "guest": "Guest",
- "guest_description": "Can only access projects that you specify choose. Tipically use for clients and stackholders.",
- "select_option": "Select an option",
- "subtitle": "Work together on projects",
- "title": "Invite people to your workspace"
+ "error": "Error",
+ "select_option": "Selecciona una opció",
+ "subtitle": "Treballeu junts per aconseguir els vostres objectius",
+ "success": "Invitació enviada!",
+ "title": "Convida gent al teu equio",
+ "user_invited": "S'ha enviat una invitació a {{ email }}"
},
+ "invite_people": "Convidar Gent",
"keep_me_logged": "Mantén-me connectat",
"link": {
"discord": "Enllaç al Discord de Vocdoni",
"github": "Enllaç al Github de Vocdoni",
"twitter": "Enllaç al Twitter de Vocdoni"
},
+ "liveStreaming": "liveStreaming",
"loading": "Carregant...",
"login": {
"facebook": "Inicia sessió amb Facebook",
"github": "Inicia sessió amb Github",
"google": "Inicia sessió amb Google"
},
+ "logo": "Logo",
+ "logout": "Logout",
"membership_size": {
- "selector_label": "Membership size"
+ "language": "Default Language",
+ "selector_label": "Membership size",
+ "timezone": "Timezone"
},
"menu": {
"burger_aria_label": "menú d'usuari",
@@ -761,6 +739,7 @@
"copy_aria_label": "copiar adreça",
"create": "Crear Procés",
"create_process": "Nou procés",
+ "dashboard": "Dashboard",
"documentation": "Documentació",
"get_more": "Obtenir-ne més",
"languages": "Idiomes",
@@ -768,21 +747,20 @@
"login": "Iniciar sessió",
"logout": "Tancar sessió",
"my_org": "La Meva Org",
- "new_process": "Crear Votació",
"organization": "Edita Organització",
"privacy": "Privadesa",
"terms": "Termes",
"wallet": "Cartera"
},
"meta": {
- "length": "{{ length }} / {{ maxLength }} caràcters.",
- "maxLength": "Longitud màxima assolida"
+ "helper": "Provide a clear title and description to help voters understand the vote"
},
+ "multiple": "multiple",
+ "name": "Name",
"new_organization": {
"create_organization_btn": "Crear Organització",
"description1": "Abans de començar a crear el vostre procés de votació, heu de crear una organització, és gratuït. Amb una organització, podreu crear una àmplia gamma d'eleccions i donar veu als membres de la vostra comunitat.",
"description2": "Com a paquet de benvinguda, rebràs {{ faucetAmount }} tokens gratuïts per començar a utilitzar la nostra plataforma.",
- "name": "Nom de l'organització",
"title": "Nova Organització"
},
"new_voting": "Nova votació",
@@ -790,18 +768,9 @@
"open_in_explorer": "Obre a l'explorador",
"or": "o",
"org_type_selector": {
- "assembly": "Assembly",
- "association": "Association",
- "chamber": "Chamber",
- "church": "Church",
- "city": "City/Municipality",
+ "community": "Community",
"company": "Company",
- "cooperative": "Cooperative",
- "others": "Others",
- "party": "Party",
- "selector_label": "Select Organization Type",
- "union": "Union",
- "university": "University"
+ "selector_label": "Select Organization Type"
},
"organization": {
"avatar_alt": "Imatge d'avatar de l'organització {{ name }}",
@@ -816,20 +785,17 @@
"not_owner": "Aquesta organització encara no té votacions.",
"title": "Crea la teva primera elecció"
},
- "my_entity": "La meva entitat",
"organization": "Organització",
- "overview": "Visió general",
- "required_signin": "Primer has d'iniciar sessió",
"title": {
"read_more": "Expandir títol"
},
- "voting_processes_one": "{{ count }} procés de votació",
- "voting_processes_many": "",
- "voting_processes_other": "{{ count }} processos de votació",
- "votings_list": "Llista de processos de votació",
- "votings_overview": "Visió general de les votacions"
+ "votings_list": "Llista de processos de votació"
},
+ "overwrite": "overwrite",
"password": "Contrasenya",
+ "password_placeholder": "Min 8 characters",
+ "personalization": "personalization",
+ "preview": "Preview",
"pricing_card": {
"from": "Des de {{price}}/any",
"most_popular_plan": "Most popular plan",
@@ -873,6 +839,7 @@
"title": "You need to upgrade to use this feature",
"your_plan": "Currently you are subscribed to the 'Your plan' subscription. If you upgrade, we will only charge the yearly difference. In the next billing period, starting on 'dd/mm/yy' you will pay for the new select plan."
},
+ "privacy_policy": "Privacy Policy",
"process": {
"census": "Cens",
"census_strategies": {
@@ -944,6 +911,7 @@
},
"process_actions": {
"cancel": "Cancel·la",
+ "continue": "Continue",
"end": "Finalitza el procés",
"pause": "Pausa",
"start": "Inicia/Continua"
@@ -1020,7 +988,16 @@
"description": "Selecciona el tipus de votació per a aquesta elecció. Si no trobes el que necessites, pots contactar-nos.",
"title": "Tipus de Votació"
}
- }
+ },
+ "title": "Title",
+ "title_placeholder": "Title of the voting process"
+ },
+ "process_list": {
+ "start_end_date": "Start-end date",
+ "status": "Status",
+ "title": "Title",
+ "type": "Type",
+ "voters": "Voters"
},
"profile": "Perfil",
"rainbow": {
@@ -1029,8 +1006,14 @@
},
"recovery": "Recuperar compte"
},
- "retry": "Reintenta",
+ "ranked": "ranked",
+ "remove": "Remove",
"rights": "© 2024 Associació Vocdoni. Tots els drets reservats.",
+ "role": {
+ "read_permission": "Read-only access",
+ "write_permission": "Can create and edit content"
+ },
+ "secretUntilTheEnd": "secretUntilTheEnd",
"settings": "Configuració",
"share": {
"copy": "Copia",
@@ -1050,13 +1033,24 @@
"signup_last_name": "Cognom",
"signup_subtitle": "Introdueix el teu correu electrònic i contrasenya per registrar-te!",
"signup_title": "Registra't",
+ "single": "single",
+ "smsNotification": "smsNotification",
"submit": "Submit",
"subscribe": "Subscribe",
"subscription": "Subscripció",
"support": "Suport",
+ "surname": {
+ "label": "Surname",
+ "required": "Surname is required"
+ },
"team": "Equip",
+ "teams": "Teams",
+ "terms_and_conditions": "Terms and Conditions",
"terms_of_use": "Condicions d'ús",
+ "total_votes_submitted": "Total Votes Submitted",
"trust_on_us": "Trust on us",
+ "update": "Update",
+ "upload": "Upload",
"uploader": {
"click_or_drag_and_drop": "Puja o arrossega i deixa anar aquí la llista de votants(Formats permesos: CSV, XLSX i ODS)",
"drop_here": "Deixa anar aquí"
@@ -1066,40 +1060,28 @@
"read_more": "Llegeix més"
},
"user_management": "Gestió d'usuaris",
+ "verify": {
+ "account_created_succesfully": "Account created successfully!",
+ "email_sent": "Email sent successfully",
+ "follow_email_instructions": "Follow the instructions there to activate your account.",
+ "resend_confirmation_mail": "Resend Email",
+ "verification_email_is_sent": "A verification email has been sent to:",
+ "verify_code": "Verify"
+ },
+ "verify_mail": {
+ "error_subtitle": "We found an error verifying your email, please check verification mail to ensure all data is correct",
+ "error_title": "Error verifying {{ email }}",
+ "verifying_subtitle": "Await until we verify your email address. You will be redirect on success.",
+ "verifying_title": "Verifying {{ email }}"
+ },
"view_pricing": "View Pricing",
+ "vote_details": "Vote details",
+ "voters": "voters",
+ "voting_link": "Voting Link",
"voting_processes": "Processos de votació",
- "votings": "Votacions",
- "web3cards": {
- "farcaster": {
- "btn": "Ves a Farcaster.vote",
- "description": "Amb \"Farcaster.vote\" permetem una manera simple i social de votar. Els teus membres només han de votar a través de Farcaster en 2 simples clics. Prova a crear una votació amb Farcaster frame",
- "title": "Farcaster"
- },
- "onvote": {
- "btn": "Crear",
- "description": "Sistema Web3 de votació segur, sense taxes i transparent. Permet crear cens de tokens, cens multichain, votació anònima i cens sybil-resistant amb un tipus de votació flexible.",
- "title": "Onvote"
- },
- "others": {
- "btn": "Contacta'ns",
- "description": "Hem construït un conjunt de votacions que permet una integració fàcil amb la nostra Blockchain dedicada a votacions a través del nostre SDK &; Components UI.
Comença a integrar-ho ara!",
- "title": "Altres"
- },
- "plugins": {
- "btn": "Prova la Aragon App",
- "description": "Hem implementat una solució de votació sense taxes personalitzada per a la DAO d'Aragon, i podem fer el mateix per a tu!
Comença amb votació sense taxes!",
- "title": "DAO Plugins"
- },
- "title": "Les nostres solucions de governança Web3"
- },
+ "voting_questions": "Voting Questions",
+ "voting_results": "Voting Results",
"website": "Website",
- "welcome": {
- "description": "Per començar, has de registrar el teu compte i el teu SIK (clau d'identitat segura) firmant dues transaccions (és segur i gratuït).",
- "intro": "Amb aquesta dApp pots crear votacions anònimes, segures i verificables.",
- "step": {
- "register": "Registrar compte",
- "sik": "Crear SIK"
- },
- "title": "Benvingut a {{ sitename }}"
- }
+ "weighted": "weighted",
+ "whiteLabel": "whiteLabel"
}
diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json
index 101ce287d..60060b7da 100644
--- a/src/i18n/locales/en.json
+++ b/src/i18n/locales/en.json
@@ -1,7 +1,12 @@
{
+ "actions": {
+ "save": "Save Changes"
+ },
"active": "Active",
"all": "All",
"already_member": "Already a member?",
+ "anonymous": "anonymous",
+ "approval": "approval",
"aside": {
"has_already_voted": "Your vote is properly cast",
"is_not_in_census": "You are not in the census",
@@ -20,19 +25,10 @@
"subtitle": "Cut costs, Save Time: Secure, Private, and GDPR Compliant Voting",
"title": "The global voting platform"
},
- "back": "Back",
- "banner": {
- "start_now": "Create a vote now!",
- "title": "Secure, verifiable and flexible digital voting"
- },
- "banner_voting_types": {
- "anonymous_description": "Say goodbye to the high expenses of traditional voting methods. {{app}} brings you a more affordable way to conduct elections, cutting down on logistical and administrative costs while maintaining the highest standards of quality and security.",
- "anonymous_title": "Cost-Effective Voting Solutions",
- "flexible_description": "Engagement is key in democratic processes, and our platform is designed to maximize it. With its user-friendly interface and accessibility, {{app}} encourages higher participation rates, ensuring a more representative and inclusive voting experience.",
- "flexible_title": "Boosted Participation Rates",
- "token_description": "At the heart of {{app}} is our commitment to security. Leveraging cutting-edge cryptographic methods, we ensure that every vote cast is not only secure but fully verifiable. This transparency builds unparalleled trust among participants, crucial for the legitimacy of any election.",
- "token_title": "Enhanced Security and Trust"
+ "avatar": {
+ "hint": "Min 200x200px .PNG or .JPEG"
},
+ "back": "Back",
"billing": "Billing",
"blog": "Blog",
"calculator": {
@@ -69,6 +65,14 @@
"vote_overwrite": "Vote overwrite",
"voting_process_cost": "Voting process cost:"
},
+ "calendar": {
+ "define_active_period": "Define the active period for receiving votes",
+ "end_date": "End date",
+ "end_date_description": "Define the exact date and time of completion",
+ "start_date": "Start date",
+ "subtitle": "Specify the active period for receiving votes",
+ "title": "Calendar"
+ },
"cc": {
"actions": {
"cancel": "Cancel the process immediately, not allowing new votes and not counting any results (caution: it cannot be reverted)",
@@ -144,7 +148,6 @@
"gitcoin_description": "With this census only voters with a Gitcoin Passport will be able to vote, providing a sybil-attack resistance method. You can define the general score (GPS) and different stamps that the voter must have.",
"gitcoin_read_more": "Read more about Gitcoin's Scorer & Thresholds",
"gitcoin_title": "Gitcoin Passport",
- "pro": "Pro Census",
"request_custom_token": "'Request Custom Tokens'",
"social_address_title": "Github users",
"spreadsheet_title": "Custom data",
@@ -154,6 +157,7 @@
"token_title": "Token based census",
"wallet_address_title": "Wallet addresses"
},
+ "census_details": "Census Details",
"claim": {
"loading_description": "Wallet Authentication (Metamask, Rainbow, Coinbase):
To receive your tokens, please sign the request when prompted.
Important:If you leave this page without signing, you will not receive your paid tokens.
Social Account Authentication (Google, Github, Facebook):
Please wait while we process your request.
",
"purchase_success": "We appreciate your business!If you have any questions, please email orders@vocdoni.org
",
@@ -168,10 +172,11 @@
"success_title": "Tokens were successfully claimed"
}
},
- "close": "Close",
"contact_us": "Contact us",
+ "control": "Control:",
"copy": {
"address": "Copy address",
+ "copied": "Copied",
"copied_title": "Copied!"
},
"cost_preview": {
@@ -216,6 +221,7 @@
"credit_card": "No credit card, no automatic renewal.",
"full_access": "Full access to basic features",
"header": "Try Vocdoni for free for 7 days",
+ "logout": "If you want to login from another account, please logout",
"multiple_administrators": "Multiple administrators",
"private_org": "Private Organization Details",
"private_org_description": "Help us tailor your experience with information about your org. We won't share this info",
@@ -232,25 +238,27 @@
"selected_users": "Selected users:"
}
},
- "dashboard": {
- "card": {
- "finish": "Finish",
- "finished": "Finished",
- "started": "Started",
- "starts": "Starts"
- }
- },
+ "cumulative": "cumulative",
+ "customization": "Customization",
+ "delete_my_account": "Delete my account",
"description": "Description",
- "draft": "Draft",
- "edit_my_organization": "My entity",
+ "edit_saas_profile": {
+ "customization_details": "Define the params that will enhance the user experience and customize the voting page",
+ "edited_successfully": "Updated successfully",
+ "header_image": "Header Image",
+ "upload_file": "Upload a file"
+ },
"email": "Email",
- "enter_email": "Enter email",
+ "email_placeholder": "your@email.com",
+ "emailReminder": "emailReminder",
"error": {
+ "error_doing_things": "Error al realizar la operación",
"go_back": "Go back",
"invalid_cell_data": "Some rows do not contain correct addresses: {{rows,list(style:short)}}",
"invalid_row_length": "Correct document lines {{rows,list(style: short)}} and load it again",
"invalid_weight_type": "Expecting weight in first column at lines {{rows,list(style:short)}}, but found unexpected data",
"loading_page": "Error loading the page",
+ "loading_roles": "Loading roles",
"not_found": "Sorry, the page you are looking for was not found",
"return_to_home": "Go to home"
},
@@ -275,6 +283,7 @@
"title": "Vocdoni Tokens Faucet",
"tokens_you_own": "You own {{ balance }} tokens."
},
+ "features": "Features",
"finished": "Finished",
"footer": {
"company": "Company",
@@ -285,10 +294,8 @@
"demo4": "Ranked Voting",
"demo5": "Participatory Budgeting",
"demo6": "Weighted Voting",
- "follow_us": "Follow us",
"footer_subtitle": "The Global Voting Protocol",
"terms_and_privacy": "Terms of use & Privacy Policy",
- "text": "The futureof Web3 voting starts here",
"uses_cases": "Use Cases",
"uses_cases1": "AGMs",
"uses_cases2": "Elections",
@@ -303,57 +310,26 @@
"form": {
"account_create": {
"delete_image": "Delete image",
- "description_helper": "A brief description of your organization",
"description_placeholder": "Provide a brief description of your organization (optional)",
- "title_helper": "The organization name",
- "title_placeholder": "Enter your organization's name"
- },
- "edit_profile": {
- "avatar_helper": "Image/logo of your organization",
- "avatar_placeholder": "Image URL",
- "btn": "Save",
- "footer": "Modifying your organization will prompt a signature request, incurring a cost of 1 token"
+ "title_placeholder": "Enter your organization's name",
+ "website_placeholder": "https://example.com"
},
+ "choose_an_option": "Choose an option",
"error": {
"address_already_in_use": "Address already in use",
"address_pattern": "Only hex addresses are allowed (e.g 0x031101A...)",
- "avatar_error": "URL not valid",
"field_is_required": "This field is required",
"min_address": "Please, provide at least one address",
"min_users_address": "Please, provide at least one address",
+ "password_min_length": "Min. 8 characters",
"recipient_address_invalid": "Specified address does not seem to be valid"
},
"process_create": {
- "behavior": {
- "anonymous": {
- "description": "This setting ensures that votes remain unlinked to voter identities by utilizing advanced zkSNARKs technology on the Vocdoni Protocol.",
- "title": "Anonymous"
- },
- "customization": {
- "description": "Select your desired theme, colors, texts and add your branding in the voting page. More complex options are also available.",
- "title": "Customization"
- },
- "overwrite": {
- "description": "This setting allow voters to revise their vote a single time if needed, providing flexibility and protection against vote coercion.",
- "title": "Vote overwrite"
- },
- "secret": {
- "description": "This setting ensures that the votes are encrypted until the end, so the results are only visible and available after the voting process has officially ended.",
- "title": "Results at the end"
- },
- "title": "Other Settings"
- },
"calendar": {
"date_format": "PPPPpppp",
- "end_date": "End date",
"end_date_description": "This voting will start at {{ date.begin, format }} and end at {{ date.end, format }}, lasting approx. {{ date, duration }}",
- "end_date_title_helper": "Determine the exact closing time.",
"now": "Now",
- "start_date": "Start time",
- "start_date_description": "Specify when the voting process will be open to receive votes. Select \"Now\" to activate immediately upon publishing.",
- "start_on_a_date": "Start on a date",
- "title": "Voting schedule",
- "title_description": "Set up the voting schedule."
+ "start_on_a_date": "Start on a date"
},
"census": {
"add_button": "Add",
@@ -413,14 +389,8 @@
"confirm_spreadsheet_removal": "Are you sure? Take in mind that the uploaded file will be removed",
"creating_process": "Creating Voting Process...",
"meta": {
- "description": "Give your voting process a name and description to inform your voters about its purpose.",
- "description_helper": "A brief description of your voting process",
"description_label": "Description",
- "description_placeholder": "Provide more details about your voting process.",
- "title": "Set up your voting process",
- "title_helper": "The voting process title / purpose",
- "title_label": "Title",
- "title_placeholder": "Enter the title for your voting process."
+ "description_placeholder": "Provide more details about your voting process."
},
"navbar": {
"close_form_btn": "Close form"
@@ -467,13 +437,6 @@
},
"spreadsheet_total_rows_one": "Census has a single record",
"spreadsheet_total_rows_other": "Census has {{ count }} records",
- "steps": {
- "census": "Census",
- "checks": "Organization",
- "confirm": "Confirm",
- "info": "Voting setup",
- "questions": "Questions"
- },
"success_description": "Redirecting you to the voting process page...",
"success_title": "Voting process successfully created",
"web3": {
@@ -482,8 +445,19 @@
"your_wallet_is_added": "Your wallet address was automatically added into the census. You can remove it if you want."
},
"weighted": "Weighted vote"
+ },
+ "process_create_saas": {
+ "steps": {
+ "census_title": "Census",
+ "confirm_title": "Confirm",
+ "features_title": "Features",
+ "info_title": "Information",
+ "questions_title": "Questions"
+ }
}
},
+ "generate_pdf": "Generate PDF",
+ "generate_pdf_description": "Generate a PDF with the results",
"get_voc_tokens": {
"authentification_method": "Select your prefered authentification method:",
"authentification_method_helper": "You can claim {{ faucetAmount }} tokens from the faucet once every {{ waitHours }} hours.",
@@ -497,7 +471,6 @@
"more_effective": "25: More Effective",
"most_effective": "30: Most Effective"
},
- "help_and_support": "Help and Support",
"home": {
"benefits": {
"card_1": {
@@ -724,28 +697,33 @@
"title": "are youReady for a new Era of Web3 governance?"
},
"invite": {
- "admin": "Admin",
- "admin_description": "Can view, comment, or also create and edit all workspace projects and folders. Typically used for employees.",
- "guest": "Guest",
- "guest_description": "Can only access projects that you specify choose. Tipically use for clients and stackholders.",
+ "error": "Error",
"select_option": "Select an option",
"subtitle": "Work together on projects",
- "title": "Invite people to your workspace"
+ "success": "Invitation sent successfully!",
+ "title": "Invite people to your team",
+ "user_invited": "Email sent to {{email}}"
},
+ "invite_people": "Invite People",
"keep_me_logged": "Keep me logged in",
"link": {
"discord": "Link to Vocdoni's discord",
"github": "Link to Vocdoni's github",
"twitter": "Link to Vocdoni's twitter"
},
+ "liveStreaming": "liveStreaming",
"loading": "Loading...",
"login": {
"facebook": "Sign in with Facebook",
"github": "Sign in with Github",
"google": "Sign in with Google"
},
+ "logo": "Logo",
+ "logout": "Logout",
"membership_size": {
- "selector_label": "Membership size"
+ "language": "Default Language",
+ "selector_label": "Membership size",
+ "timezone": "Timezone"
},
"menu": {
"burger_aria_label": "user menu",
@@ -753,6 +731,7 @@
"copy_aria_label": "copy address",
"create": "Create Process",
"create_process": "New process",
+ "dashboard": "Dashboard",
"documentation": "Documentation",
"get_more": "Get More",
"languages": "Languages",
@@ -760,21 +739,20 @@
"login": "Login",
"logout": "Logout",
"my_org": "My Org",
- "new_process": "New Voting",
"organization": "Edit Organization",
"privacy": "Privacy",
"terms": "Terms",
"wallet": "Wallet"
},
"meta": {
- "length": "{{ length }} / {{ maxLength }} chars.",
- "maxLength": "Max. length reached"
+ "helper": "Provide a clear title and description to help voters understand the vote"
},
+ "multiple": "multiple",
+ "name": "Name",
"new_organization": {
"create_organization_btn": "Create Organization",
"description1": "Set up your organization for free and start creating voting processes to engage with your community.",
"description2": "You will have the chance to claim tokens later from the faucet to create proposals and engage with your community.",
- "name": "Organization name",
"title": "Create your organization"
},
"new_voting": "New Voting",
@@ -782,18 +760,9 @@
"open_in_explorer": "Open in explorer",
"or": "or",
"org_type_selector": {
- "assembly": "Assembly",
- "association": "Association",
- "chamber": "Chamber",
- "church": "Church",
- "city": "City/Municipality",
+ "community": "Community",
"company": "Company",
- "cooperative": "Cooperative",
- "others": "Others",
- "party": "Party",
- "selector_label": "Select Organization Type",
- "union": "Union",
- "university": "University"
+ "selector_label": "Select Organization Type"
},
"organization": {
"avatar_alt": "Avatar image of {{ name }} organization",
@@ -808,19 +777,17 @@
"not_owner": "This organization has no voting processes yet",
"title": "Create your first voting process"
},
- "my_entity": "My entity",
"organization": "Organization",
- "overview": "Overview",
- "required_signin": "You must sign in first",
"title": {
"read_more": "Expand title"
},
- "voting_processes_one": "{{ count }} voting process",
- "voting_processes_other": "{{ count }} voting processes",
- "votings_list": "Votings Processes List",
- "votings_overview": "Votings overview"
+ "votings_list": "Votings Processes List"
},
+ "overwrite": "overwrite",
"password": "Password",
+ "password_placeholder": "Min 8 characters",
+ "personalization": "personalization",
+ "preview": "Preview",
"pricing_card": {
"from": "From ${{ price }}/year",
"most_popular_plan": "Most popular plan",
@@ -864,6 +831,7 @@
"title": "You need to upgrade to use this feature",
"your_plan": "Currently you are subscribed to the 'Your plan' subscription. If you upgrade, we will only charge the yearly difference. In the next billing period, starting on 'dd/mm/yy' you will pay for the new select plan."
},
+ "privacy_policy": "Privacy Policy",
"process": {
"census": "Census",
"census_strategies": {
@@ -933,6 +901,7 @@
},
"process_actions": {
"cancel": "Cancel process",
+ "continue": "Continue",
"end": "End voting",
"pause": "Pause",
"start": "Start/Resume"
@@ -1008,7 +977,16 @@
"description": "Select the voting type for this election. If you don't find what you need can contact us.",
"title": "Voting Types"
}
- }
+ },
+ "title": "Title",
+ "title_placeholder": "Title of the voting process"
+ },
+ "process_list": {
+ "start_end_date": "Start-end date",
+ "status": "Status",
+ "title": "Title",
+ "type": "Type",
+ "voters": "Voters"
},
"profile": "Profile",
"rainbow": {
@@ -1017,8 +995,14 @@
},
"recovery": "Account recovery"
},
- "retry": "Retry",
+ "ranked": "ranked",
+ "remove": "Remove",
"rights": "© 2024 Vocdoni Association. All Rights Reserved.",
+ "role": {
+ "read_permission": "Read-only access",
+ "write_permission": "Can create and edit content"
+ },
+ "secretUntilTheEnd": "secretUntilTheEnd",
"settings": "Settings",
"share": {
"copy": "Copy",
@@ -1038,13 +1022,24 @@
"signup_last_name": "Last Name",
"signup_subtitle": "Enter your email and password to sign up!",
"signup_title": "Sign Up",
+ "single": "single",
+ "smsNotification": "smsNotification",
"submit": "Submit",
"subscribe": "Subscribe",
"subscription": "Subscription",
"support": "Support",
+ "surname": {
+ "label": "Surname",
+ "required": "Surname is required"
+ },
"team": "Team",
+ "teams": "Teams",
+ "terms_and_conditions": "Terms and Conditions",
"terms_of_use": "Terms of Use",
+ "total_votes_submitted": "Total Votes Submitted",
"trust_on_us": "Trust on us",
+ "update": "Update",
+ "upload": "Upload",
"uploader": {
"click_or_drag_and_drop": "Upload or drag and drop the voter list here(Allowed formats: CSV, XLSX, and ODS)",
"drop_here": "Drop here"
@@ -1054,40 +1049,28 @@
"read_more": "Read more"
},
"user_management": "User Managment",
+ "verify": {
+ "account_created_succesfully": "Account created successfully!",
+ "email_sent": "Email sent successfully",
+ "follow_email_instructions": "Follow the instructions there to activate your account.",
+ "resend_confirmation_mail": "Resend Email",
+ "verification_email_is_sent": "A verification email has been sent to:",
+ "verify_code": "Verify"
+ },
+ "verify_mail": {
+ "error_subtitle": "We found an error verifying your email, please check verification mail to ensure all data is correct",
+ "error_title": "Error verifying {{ email }}",
+ "verifying_subtitle": "Await until we verify your email address. You will be redirect on success.",
+ "verifying_title": "Verifying {{ email }}"
+ },
"view_pricing": "View Pricing",
+ "vote_details": "Vote details",
+ "voters": "voters",
+ "voting_link": "Voting Link",
"voting_processes": "Voting Processes",
- "votings": "Votings",
- "web3cards": {
- "farcaster": {
- "btn": "Go to Farcaster.vote",
- "description": "With \"Farcaster.vote\" we allow a simple and social way to vote. Your members only have to vote trough Farcaster in 2 simple clicks. Try creating your farcaster vote frame.",
- "title": "Farcaster"
- },
- "onvote": {
- "btn": "Create",
- "description": "Secure, gasless and transparent Web3 voting. Allows to create token census, multichain census, anonymous voting, sybil-resistant census with a flexible voting type.",
- "title": "Onvote"
- },
- "others": {
- "btn": "Contact Us",
- "description": "We've build a voting suite allowing an easy integration with our dedicated voting Blockchain via our SDK & UI-Components.
Start integrating with us now!",
- "title": "Others"
- },
- "plugins": {
- "btn": "Try Aragon App",
- "description": "We implemented a custom DAO gasless voting solution for Aragon DAO, and we can do the same for you!
Check gasless DAO voting!",
- "title": "DAO Plugins"
- },
- "title": "Our Web3 governance solutions"
- },
+ "voting_questions": "Voting Questions",
+ "voting_results": "Voting Results",
"website": "Website",
- "welcome": {
- "description": "To access all its features, including anonymous voting, you must create an account on the Vocdoni Protocol and register your Secret Identity Key (SIK) by signing two transactions. It's secure and free.",
- "intro": "This is your first time using {{ sitename }}.",
- "step": {
- "register": "Register account",
- "sik": "Create SIK"
- },
- "title": "Welcome to {{ sitename }}"
- }
+ "weighted": "weighted",
+ "whiteLabel": "whiteLabel"
}
diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json
index dd5941fef..eba68e14c 100644
--- a/src/i18n/locales/es.json
+++ b/src/i18n/locales/es.json
@@ -1,7 +1,12 @@
{
+ "actions": {
+ "save": "Save Changes"
+ },
"active": "Activo",
"all": "Todos",
"already_member": "¿Ya eres miembro?",
+ "anonymous": "anonymous",
+ "approval": "approval",
"aside": {
"has_already_voted": "Tu voto ha sido registrado correctamente",
"is_not_in_census": "No estás en el censo",
@@ -23,19 +28,10 @@
"subtitle": "Reduce costos, ahorra tiempo: Votación segura, privada y conforme al RGPD",
"title": "La plataforma global de votación"
},
- "back": "Atrás",
- "banner": {
- "start_now": "¡Crea una votación ahora!",
- "title": "Voto digital seguro, verificable y flexible"
- },
- "banner_voting_types": {
- "anonymous_description": "La identidad de los votantes permanece completamente confidencial, gracias a la tecnología zk-SNARKS.",
- "anonymous_title": "100% Anónimo",
- "flexible_description": "Personaliza tu proceso de votación y censo para satisfacer los requisitos únicos de tu comunidad.",
- "flexible_title": "Votación Flexible",
- "token_description": "Vota con tokens ERC20/ERC721 (NFT) o agrega tus propios tokens y vota sin coste de gas con ellos.",
- "token_title": "Votación con Tokens"
+ "avatar": {
+ "hint": "Min 200x200px .PNG or .JPEG"
},
+ "back": "Atrás",
"billing": "Facturación",
"blog": "Blog",
"calculator": {
@@ -72,6 +68,14 @@
"vote_overwrite": "Corrección de voto",
"voting_process_cost": "Coste del proceso de votación:"
},
+ "calendar": {
+ "define_active_period": "Define the active period for receiving votes",
+ "end_date": "End date",
+ "end_date_description": "Define the exact date and time of completion",
+ "start_date": "Start date",
+ "subtitle": "Specify the active period for receiving votes",
+ "title": "Calendar"
+ },
"cc": {
"actions": {
"cancel": "Cancelar el proceso inmediatamente, sin permitir nuevos votos y sin contar ningún resultado (precaución: no puede revertirse)",
@@ -147,7 +151,6 @@
"gitcoin_description": "Con este censo, solo los votantes con Gitcoin Passport podrán votar, proporcionando un método de resistencia contra sybil-attack. Puedes definir la puntuación general (GPS) y diferentes stamps que el votante debe tener.",
"gitcoin_read_more": "Lee más sobre Scorer & Thresholds de Gitcoin",
"gitcoin_title": "Gitcoin Passport",
- "pro": "",
"request_custom_token": "Solicitar Tokens Personalizados",
"social_address_title": "Usuarios de Github",
"spreadsheet_title": "Datos personalizados",
@@ -157,6 +160,7 @@
"token_title": "Censo basado en tokens",
"wallet_address_title": "Direcciones de billetera"
},
+ "census_details": "Census Details",
"claim": {
"loading_description": "Autenticación de cartera (Metamask, Rainbow, Coinbase):
Para recibir tus tokens, por favor firma la solicitud cuando se te pida.
Importante:Si sales de esta página sin firmar, no recibirás los tokens que has pagado.
Autenticación de cuenta social (Google, Github, Facebook):Por favor, espera mientras procesamos tu solicitud.
",
"purchase_success": "¡Apreciamos su compra!Si tienes alguna pregunta, por favor envía un correo a orders@vocdoni.org
",
@@ -171,10 +175,11 @@
"success_title": "Los tokens han sido reclamados correctamente"
}
},
- "close": "Cerrar",
"contact_us": "Contact us",
+ "control": "Control:",
"copy": {
"address": "Copiar dirección",
+ "copied": "Copied",
"copied_title": "¡Copiado!"
},
"cost_preview": {
@@ -220,6 +225,7 @@
"credit_card": "No credit card, no automatic renewal.",
"full_access": "Full access to basic features",
"header": "Try Vocdoni for free for 7 days",
+ "logout": "If you want to login from another account, please logout",
"multiple_administrators": "Multiple administrators",
"private_org": "Private Organization Details",
"private_org_description": "Help us tailor your experience with information about your org. We won't share this info",
@@ -236,25 +242,27 @@
"selected_users": "Usuarios seleccionados:"
}
},
- "dashboard": {
- "card": {
- "finish": "Termina",
- "finished": "Terminado",
- "started": "Empezado",
- "starts": "Empieza"
- }
- },
+ "cumulative": "cumulative",
+ "customization": "Customization",
+ "delete_my_account": "Delete my account",
"description": "Description",
- "draft": "Borrador",
- "edit_my_organization": "Mi entidad",
+ "edit_saas_profile": {
+ "customization_details": "Define the params that will enhance the user experience and customize the voting page",
+ "edited_successfully": "Updated successfully",
+ "header_image": "Header Image",
+ "upload_file": "Upload a file"
+ },
"email": "Correo electrónico",
- "enter_email": "Enter email",
+ "email_placeholder": "your@email.com",
+ "emailReminder": "emailReminder",
"error": {
+ "error_doing_things": "Error al realizar la operación",
"go_back": "Volver atrás",
"invalid_cell_data": "Algunas filas no contienen direcciones correctas: {{rows, list}}",
"invalid_row_length": "Corrige las líneas {{rows, list}} del documento y vuelve a cargarlo",
"invalid_weight_type": "Se esperaba encontrar el peso en la primera columna en las líneas {{rows, list}}, pero se han encontrado datos inesperados",
"loading_page": "Error al cargar la página",
+ "loading_roles": "Cargando roles",
"not_found": "Lo sentimos, la página que buscabas no fue encontrada.",
"return_to_home": "Ves al inicio"
},
@@ -279,6 +287,7 @@
"title": "Faucet de Tokens Vocdoni",
"tokens_you_own": "Tienes {{ balance }} tokens."
},
+ "features": "Features",
"finished": "Finalizado",
"footer": {
"company": "Empresa",
@@ -289,10 +298,8 @@
"demo4": "Votación por Clasificación",
"demo5": "Presupuestos Participativos",
"demo6": "Votación Ponderada",
- "follow_us": "Síguenos",
"footer_subtitle": "El Protocolo de Votación Global",
"terms_and_privacy": "Términos de uso y Política de privacidad",
- "text": "El futurode la votación en Web3 comienza aquí",
"uses_cases": "Casos de Uso",
"uses_cases1": "Asambleas Generales de Accionistas (AGMs)",
"uses_cases2": "Elecciones",
@@ -307,57 +314,26 @@
"form": {
"account_create": {
"delete_image": "Eliminar imagen",
- "description_helper": "Una breve descripción de tu organización",
"description_placeholder": "Descripción (opcional)",
- "title_helper": "El nombre de la organización",
- "title_placeholder": "El nombre de la organización"
- },
- "edit_profile": {
- "avatar_helper": "Imagen/logotipo de tu organización",
- "avatar_placeholder": "URL de la imagen",
- "btn": "Guardar",
- "footer": "Editar tu organización generará una solicitud de firma, con un coste de 1 token"
+ "title_placeholder": "El nombre de la organización",
+ "website_placeholder": "https://example.com"
},
+ "choose_an_option": "Choose an option",
"error": {
"address_already_in_use": "Esta dirección ya está en el censo",
"address_pattern": "Solo se permiten direcciones hexadecimales (p.ej. 0x031101A...)",
- "avatar_error": "URL no válida",
"field_is_required": "Este campo es obligatorio",
"min_address": "Por favor, proporciona al menos una dirección",
"min_users_address": "Por favor, proporciona al menos una dirección",
+ "password_min_length": "Min. 8 characters",
"recipient_address_invalid": "La dirección especificada no parece válida"
},
"process_create": {
- "behavior": {
- "anonymous": {
- "description": "La identidad de los votantes será completamente anonimizada, incluyendo para el organizador. Cada votante deberá establecer una contraseña para garantizar la confidencialidad de su identidad.",
- "title": "Anónimo"
- },
- "customization": {
- "description": "Selecciona tu tema deseado, colores, textos y añade tu marca en la página de votación. También hay opciones más complejas disponibles.",
- "title": "Personalización"
- },
- "overwrite": {
- "description": "Si se selecciona, los votantes tendrán la opción de corregir su voto una vez.",
- "title": "Sobrescribir voto"
- },
- "secret": {
- "description": "Los resultados estarán disponibles cuando termine el proceso en lugar de estar disponibles en tiempo real.",
- "title": "Secreto hasta el final"
- },
- "title": "Opciones"
- },
"calendar": {
"date_format": "PPPPpppp",
- "end_date": "Fecha de finalización",
"end_date_description": "Esta votación comenzará en {{ date.begin, format }} y terminará en {{ date.end, format }}, durando ~{{ date, duration }}",
- "end_date_title_helper": "Definir la fecha y hora exactas de conclusión. ",
"now": "Ahora",
- "start_date": "Hora de inicio",
- "start_date_description": "Define el período activo para recibir votos. Si seleccionas \"Ahora\", la propuesta estará activa inmediatamente después de publicarla.",
- "start_on_a_date": "Comenzar en una fecha",
- "title": "Calendario",
- "title_description": "Especificar el período activo para recibir votos."
+ "start_on_a_date": "Comenzar en una fecha"
},
"census": {
"add_button": "Añadir",
@@ -419,14 +395,8 @@
"confirm_spreadsheet_removal": "Seguro? Piensa que al hacerlo se eliminará el fichero que has cargado.",
"creating_process": "Creando Proceso de Votación...",
"meta": {
- "description": "Proporciona un título y descripción claros. Esto ayudará a los votantes a entender el propósito de la votación.",
- "description_helper": "Una breve descripción de tu votación",
"description_label": "Descripción",
- "description_placeholder": "Descripción (opcional)",
- "title": "Información de la votación",
- "title_helper": "Título / propósito del proceso de votación",
- "title_label": "Título",
- "title_placeholder": "Título del proceso de votación"
+ "description_placeholder": "Descripción (opcional)"
},
"navbar": {
"close_form_btn": "Cerrar formulario"
@@ -474,13 +444,6 @@
"spreadsheet_total_rows_one": "El censo tiene un solo registro",
"spreadsheet_total_rows_many": "",
"spreadsheet_total_rows_other": "El censo tiene {{ count }} registros",
- "steps": {
- "census": "Censo",
- "checks": "Organización",
- "confirm": "Confirmar",
- "info": "Info",
- "questions": "Preguntas"
- },
"success_description": "Redirigiéndote a la página del proceso de votación...",
"success_title": "Proceso de votación creado con éxito",
"web3": {
@@ -490,8 +453,19 @@
"your_wallet_is_added": "Tu dirección de billetera se ha añadido automáticamente al censo. Puedes eliminarla si lo deseas."
},
"weighted": "Voto ponderado"
+ },
+ "process_create_saas": {
+ "steps": {
+ "census_title": "Census",
+ "confirm_title": "Confirm",
+ "features_title": "Features",
+ "info_title": "Information",
+ "questions_title": "Questions"
+ }
}
},
+ "generate_pdf": "Generate PDF",
+ "generate_pdf_description": "Generate a PDF with the results",
"get_voc_tokens": {
"authentification_method": "Seleccione su método de autenticación preferido:",
"authentification_method_helper": "Puede obtener {{ faucetAmount }} tokens por método de autenticación a la semana",
@@ -505,7 +479,6 @@
"more_effective": "25: Más efectivo",
"most_effective": "30: Muy efectivo"
},
- "help_and_support": "Ayuda y soporte",
"home": {
"benefits": {
"card_1": {
@@ -732,28 +705,33 @@
"title": "¿Estáslisto para una nueva Era en la gobernanza Web3?"
},
"invite": {
- "admin": "Admin",
- "admin_description": "Can view, comment, or also create and edit all workspace projects and folders. Typically used for employees.",
- "guest": "Guest",
- "guest_description": "Can only access projects that you specify choose. Tipically use for clients and stackholders.",
- "select_option": "Select an option",
- "subtitle": "Work together on projects",
- "title": "Invite people to your workspace"
+ "error": "Error",
+ "select_option": "Selecciona una opción",
+ "subtitle": "Trabajar junto a otros es la clave para el éxito.",
+ "success": "¡Invitación enviada!",
+ "title": "Invita gente a tu equipo",
+ "user_invited": "Se ha mandado a {{ email }}"
},
+ "invite_people": "Invitar Gente",
"keep_me_logged": "Mantenerme conectado",
"link": {
"discord": "Enlace al Discord de Vocdoni",
"github": "Enlace al Github de Vocdoni",
"twitter": "Enlace al Twitter de Vocdoni"
},
+ "liveStreaming": "liveStreaming",
"loading": "Cargando...",
"login": {
"facebook": "Iniciar sesión usando Facebook",
"github": "Iniciar sesión con Github",
"google": "Iniciar sesión con Google"
},
+ "logo": "Logo",
+ "logout": "Logout",
"membership_size": {
- "selector_label": "Membership size"
+ "language": "Default Language",
+ "selector_label": "Membership size",
+ "timezone": "Timezone"
},
"menu": {
"burger_aria_label": "menú de usuario",
@@ -761,6 +739,7 @@
"copy_aria_label": "copiar dirección",
"create": "Crear Proceso",
"create_process": "Nuevo proceso",
+ "dashboard": "Dashboard",
"documentation": "Documentación",
"get_more": "Obtener más",
"languages": "Idiomas",
@@ -768,21 +747,20 @@
"login": "Iniciar sesión",
"logout": "Cerrar sesión",
"my_org": "Mi Org",
- "new_process": "Crear Votación",
"organization": "Editar Organización",
"privacy": "Privacidad",
"terms": "Términos",
"wallet": "Billetera"
},
"meta": {
- "length": "{{ length }} / {{ maxLength }} caracteres.",
- "maxLength": "Longitud máxima alcanzada"
+ "helper": "Provide a clear title and description to help voters understand the vote"
},
+ "multiple": "multiple",
+ "name": "Name",
"new_organization": {
"create_organization_btn": "Crear Organización",
"description1": "Antes de comenzar a crear su proceso de votación, debe crear una organización, es gratuito. Con una organización, podrá crear una amplia gama de elecciones y dar voz a los miembros de su comunidad.",
"description2": "Como paquete de bienvenida, recibirá {{ faucetAmount }} tokens gratis para comenzar a utilizar nuestra plataforma.",
- "name": "Nombre de la organización",
"title": "Nueva Organización"
},
"new_voting": "Nueva votación",
@@ -790,18 +768,9 @@
"open_in_explorer": "Abrir en explorador",
"or": "o",
"org_type_selector": {
- "assembly": "Assembly",
- "association": "Association",
- "chamber": "Chamber",
- "church": "Church",
- "city": "City/Municipality",
+ "community": "Community",
"company": "Company",
- "cooperative": "Cooperative",
- "others": "Others",
- "party": "Party",
- "selector_label": "Select Organization Type",
- "union": "Union",
- "university": "University"
+ "selector_label": "Select Organization Type"
},
"organization": {
"avatar_alt": "Imagen de avatar de la organización {{ name }}",
@@ -816,20 +785,17 @@
"not_owner": "Esta organización aún no tiene votaciones.",
"title": "Crea tu primer proceso de votación"
},
- "my_entity": "Mi entidad",
"organization": "Organización",
- "overview": "Visión general",
- "required_signin": "Primero debes iniciar sesión",
"title": {
"read_more": "Expandir título"
},
- "voting_processes_one": "{{ count }} proceso de votación",
- "voting_processes_many": "",
- "voting_processes_other": "{{ count }} procesos de votación",
- "votings_list": "Lista de procesos de votación",
- "votings_overview": "Visión general de les votaciones"
+ "votings_list": "Lista de procesos de votación"
},
+ "overwrite": "overwrite",
"password": "Contraseña",
+ "password_placeholder": "Min 8 characters",
+ "personalization": "personalization",
+ "preview": "Preview",
"pricing_card": {
"from": "Desde {{price}}/año",
"most_popular_plan": "Most popular plan",
@@ -873,6 +839,7 @@
"title": "You need to upgrade to use this feature",
"your_plan": "Currently you are subscribed to the 'Your plan' subscription. If you upgrade, we will only charge the yearly difference. In the next billing period, starting on 'dd/mm/yy' you will pay for the new select plan."
},
+ "privacy_policy": "Privacy Policy",
"process": {
"census": "Censo",
"census_strategies": {
@@ -944,6 +911,7 @@
},
"process_actions": {
"cancel": "Cancelar proceso",
+ "continue": "Continue",
"end": "Finalizar proceso",
"pause": "Pausar",
"start": "Iniciar/Reanudar"
@@ -1020,7 +988,16 @@
"description": "Selecciona el tipo de votación para esta elección. Si no encuentras lo que necesitas, puedes contactarnos.",
"title": "Tipos de Votación"
}
- }
+ },
+ "title": "Title",
+ "title_placeholder": "Title of the voting process"
+ },
+ "process_list": {
+ "start_end_date": "Start-end date",
+ "status": "Status",
+ "title": "Title",
+ "type": "Type",
+ "voters": "Voters"
},
"profile": "Perfil",
"rainbow": {
@@ -1029,8 +1006,14 @@
},
"recovery": "Recuperar cuenta"
},
- "retry": "Reintentar",
+ "ranked": "ranked",
+ "remove": "Remove",
"rights": "© 2024 Asociación Vocdoni. Todos los derechos reservados.",
+ "role": {
+ "read_permission": "Read-only access",
+ "write_permission": "Can create and edit content"
+ },
+ "secretUntilTheEnd": "secretUntilTheEnd",
"settings": "Configuración",
"share": {
"copy": "Copiar",
@@ -1050,13 +1033,24 @@
"signup_last_name": "Apellido",
"signup_subtitle": "¡Introduce tu correo electrónico y contraseña para registrarte!",
"signup_title": "Regístrate",
+ "single": "single",
+ "smsNotification": "smsNotification",
"submit": "Submit",
"subscribe": "Subscribe",
"subscription": "Suscripción",
"support": "Soporte",
+ "surname": {
+ "label": "Surname",
+ "required": "Surname is required"
+ },
"team": "Equipo",
+ "teams": "Teams",
+ "terms_and_conditions": "Terms and Conditions",
"terms_of_use": "Condiciones de uso",
+ "total_votes_submitted": "Total Votes Submitted",
"trust_on_us": "Trust on us",
+ "update": "Update",
+ "upload": "Upload",
"uploader": {
"click_or_drag_and_drop": "Sube o arrastra y suelta aqui la lista de votantes(Formap permitidos: CSV, XLSX y ODS)",
"drop_here": "Suelta aqui"
@@ -1066,40 +1060,28 @@
"read_more": "Leer más"
},
"user_management": "Gestión de usuarios",
+ "verify": {
+ "account_created_succesfully": "Account created successfully!",
+ "email_sent": "Email sent successfully",
+ "follow_email_instructions": "Follow the instructions there to activate your account.",
+ "resend_confirmation_mail": "Resend Email",
+ "verification_email_is_sent": "A verification email has been sent to:",
+ "verify_code": "Verify"
+ },
+ "verify_mail": {
+ "error_subtitle": "We found an error verifying your email, please check verification mail to ensure all data is correct",
+ "error_title": "Error verifying {{ email }}",
+ "verifying_subtitle": "Await until we verify your email address. You will be redirect on success.",
+ "verifying_title": "Verifying {{ email }}"
+ },
"view_pricing": "View Pricing",
+ "vote_details": "Vote details",
+ "voters": "voters",
+ "voting_link": "Voting Link",
"voting_processes": "Procesos de votación",
- "votings": "Votaciones",
- "web3cards": {
- "farcaster": {
- "btn": "Ir a Farcaster.vote",
- "description": "Con \"Farcaster.vote\" ofrecemos una manera simple y social de votar. Tus miembros solo tienen que votar a través de Farcaster en 2 simples clics. Prueba creando una votación con Farcaster frame",
- "title": "Farcaster"
- },
- "onvote": {
- "btn": "Crear",
- "description": "Sistema Web3 de votación segura, sin tasas y transparente. Permite crear censo de tokens, censo multichain, votación anónima y censo sybil-resistant con un tipo de votación flexible.",
- "title": "Onvote"
- },
- "others": {
- "btn": "Contáctanos",
- "description": "Hemos construido un conjunto de votaciones que permite una integración fácil con nuestra Blockchain dedicada a votaciones a través de nuestro SDK &; Componentes UI.
¡Empieza a integrarlo ahora!",
- "title": "Otros"
- },
- "plugins": {
- "btn": "Prueba la Aragon App",
- "description": "Hemos implementado una solución de votación sin tasas personalizada para la DAO de Aragon, ¡y podemos hacer lo mismo por ti!
Empieza con votación sin tasas!",
- "title": "Complementos DAO"
- },
- "title": "Nuestras soluciones de gobernanza Web3"
- },
+ "voting_questions": "Voting Questions",
+ "voting_results": "Voting Results",
"website": "Website",
- "welcome": {
- "description": "Para empezar, debes registrar tu cuenta y tu SIK (clave de identidad segura) firmando dos transacciones (es seguro y gratuito).",
- "intro": "Con esta dApp puedes crear votaciones anónimas, seguras y verificables.",
- "step": {
- "register": "Registrar cuenta",
- "sik": "Crear SIK"
- },
- "title": "Bienvenido a {{ sitename }}"
- }
+ "weighted": "weighted",
+ "whiteLabel": "whiteLabel"
}
diff --git a/src/queries/account.ts b/src/queries/account.ts
index 764fe5239..d0fb7ba06 100644
--- a/src/queries/account.ts
+++ b/src/queries/account.ts
@@ -1,5 +1,5 @@
import { DefinedInitialDataOptions, QueryKey, useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
-import { ApiEndpoints } from '~components/Auth/api'
+import { api, ApiEndpoints } from '~components/Auth/api'
import { useAuth } from '~components/Auth/useAuth'
export interface Organization {
@@ -65,3 +65,21 @@ export const useUpdateProfile = () => {
},
})
}
+
+type InviteAcceptRequestBody = {
+ code: string
+ user: {
+ firstName: string
+ lastName: string
+ password: string
+ }
+}
+
+export const useSignupFromInvite = (address: string) =>
+ useMutation({
+ mutationFn: (body) =>
+ api(ApiEndpoints.InviteAccept.replace('{address}', address), {
+ method: 'POST',
+ body,
+ }),
+ })
diff --git a/src/router/NonLoggedRoute.tsx b/src/router/NonLoggedRoute.tsx
index 771d74e6e..cc12801a9 100644
--- a/src/router/NonLoggedRoute.tsx
+++ b/src/router/NonLoggedRoute.tsx
@@ -1,10 +1,11 @@
-import { Navigate, Outlet } from 'react-router-dom'
+import { Navigate, Outlet, useOutletContext } from 'react-router-dom'
import { useAuth } from '~components/Auth/useAuth'
import { Loading } from '~src/router/SuspenseLoader'
import { Routes } from './routes'
const NonLoggedRoute = () => {
const { isAuthenticated, isAuthLoading } = useAuth()
+ const context = useOutletContext()
if (isAuthLoading) {
return
@@ -14,7 +15,7 @@ const NonLoggedRoute = () => {
return
}
- return
+ return
}
export default NonLoggedRoute
diff --git a/src/router/routes/auth.tsx b/src/router/routes/auth.tsx
index f38524c21..3e6254a3e 100644
--- a/src/router/routes/auth.tsx
+++ b/src/router/routes/auth.tsx
@@ -2,18 +2,19 @@ import { lazy } from 'react'
// These aren't lazy loaded since they are main layouts and related components
import LayoutAuth from '~elements/LayoutAuth'
import { Routes } from '.'
+import NonLoggedRoute from '../NonLoggedRoute'
import { SuspenseLoader } from '../SuspenseLoader'
-const NonLoggedRoute = lazy(() => import('../NonLoggedRoute'))
+const AcceptInvite = lazy(() => import('~elements/account/invite'))
const Signin = lazy(() => import('~elements/account/signin'))
-const SignUp = lazy(() => import('~components/Auth/SignUp'))
+const Signup = lazy(() => import('~elements/account/signup'))
const Verify = lazy(() => import('~components/Auth/Verify'))
const PasswordForgot = lazy(() => import('~elements/account/password'))
const PasswordReset = lazy(() => import('~elements/account/password/reset'))
const AuthElements = [
{
- element: ,
+ element: ,
children: [
{
children: [
@@ -29,7 +30,7 @@ const AuthElements = [
path: Routes.auth.signUp,
element: (
-
+
),
},
@@ -61,15 +62,19 @@ const AuthElements = [
},
],
},
-]
-
-export const useAuthRoutes = () => {
- return {
+ {
+ path: Routes.auth.acceptInvite,
element: (
-
+
),
+ },
+]
+
+export const useAuthRoutes = () => {
+ return {
+ element: ,
children: AuthElements,
}
}
diff --git a/src/router/routes/index.ts b/src/router/routes/index.ts
index 8e5a8d77b..7e81aec3f 100644
--- a/src/router/routes/index.ts
+++ b/src/router/routes/index.ts
@@ -1,6 +1,7 @@
export const Routes = {
root: '/',
auth: {
+ acceptInvite: '/account/invite',
signIn: '/account/signin',
signUp: '/account/signup',
recovery: '/account/password',
diff --git a/src/theme/colors.ts b/src/theme/colors.ts
index 8f4fe4131..50af13766 100644
--- a/src/theme/colors.ts
+++ b/src/theme/colors.ts
@@ -51,7 +51,7 @@ export const colors = {
dark: colorsBase.white.pure,
},
invite: {
- bg_checked_light: colorsBase.white.pure,
+ bg_checked_light: colorsBase.white.dark,
bg_checked_dark: colorsBase.blue.dark,
},
read_more: {
diff --git a/src/theme/components/radio.ts b/src/theme/components/radio.ts
index 1b8129060..e60d40ab6 100644
--- a/src/theme/components/radio.ts
+++ b/src/theme/components/radio.ts
@@ -1,6 +1,5 @@
import { radioAnatomy } from '@chakra-ui/anatomy'
-import { createMultiStyleConfigHelpers, defineStyle } from '@chakra-ui/react'
-import { mode } from '@chakra-ui/theme-tools'
+import { createMultiStyleConfigHelpers } from '@chakra-ui/react'
const { definePartsStyle, defineMultiStyleConfig } = createMultiStyleConfigHelpers(radioAnatomy.keys)
diff --git a/src/utils/callback-provider.tsx b/src/utils/callback-provider.tsx
new file mode 100644
index 000000000..7bb90a5fe
--- /dev/null
+++ b/src/utils/callback-provider.tsx
@@ -0,0 +1,41 @@
+import { createContext } from '@chakra-ui/react-utils'
+import { ReactNode } from 'react'
+
+// Define the context type
+type CallbackContextType = {
+ success: () => void
+ error: () => void
+}
+
+// Use `createContext` to initialize the context and its provider
+const [CallbackContextProvider, _useCallbackContext] = createContext({
+ name: 'CallbackContext',
+ errorMessage: 'useCallbackContext must be used within a CallbackProvider',
+})
+
+// Wrapper hook to make the context optional
+export const useCallbackContext = (): CallbackContextType => {
+ try {
+ return _useCallbackContext()
+ } catch {
+ return {
+ success: () => {}, // default no-op function
+ error: () => {}, // default no-op function
+ }
+ }
+}
+
+// CallbackProvider component to wrap around components needing callback functionality
+export const CallbackProvider = ({
+ children,
+ success,
+ error = () => {}, // default to a no-op if not provided
+}: {
+ children: ReactNode
+ success: () => void
+ error?: () => void
+}) => {
+ const value = { success, error }
+
+ return {children}
+}
diff --git a/src/constants/components.tsx b/src/utils/components.tsx
similarity index 100%
rename from src/constants/components.tsx
rename to src/utils/components.tsx
diff --git a/src/constants/strings.ts b/src/utils/strings.ts
similarity index 100%
rename from src/constants/strings.ts
rename to src/utils/strings.ts
diff --git a/tsconfig.paths.json b/tsconfig.paths.json
index 7c9aa8fc6..c4aeb8114 100644
--- a/tsconfig.paths.json
+++ b/tsconfig.paths.json
@@ -10,6 +10,7 @@
"~i18n/*": ["i18n/*"],
"~theme": ["theme/index.ts"],
"~theme/*" : ["theme/*"],
+ "~utils/*": ["utils/*"],
"~src/*": ["./*"]
}
}