-
Notifications
You must be signed in to change notification settings - Fork 4.4k
feat: translate frontend to Spanish #362
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -49,12 +49,12 @@ function SignupPageInner() { | |
| setError(null); | ||
|
|
||
| if (password !== confirmPassword) { | ||
| setError("Passwords do not match"); | ||
| setError("Las contraseñas no coinciden"); | ||
|
Owner
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This hardcodes Spanish and bypasses next-intl, so it shows even under the default/fallback |
||
| return; | ||
| } | ||
|
|
||
| if (password.length < 6) { | ||
| setError("Password must be at least 6 characters"); | ||
| setError("La contraseña debe tener al menos 6 caracteres"); | ||
| return; | ||
| } | ||
|
|
||
|
|
@@ -98,12 +98,12 @@ function SignupPageInner() { | |
| <CheckCircle className="h-6 w-6 text-primary" /> | ||
| </div> | ||
| <CardTitle className="text-xl text-foreground"> | ||
| Check your email | ||
| Revisa tu correo | ||
| </CardTitle> | ||
| <CardDescription className="text-muted-foreground"> | ||
| We've sent a confirmation link to{" "} | ||
| <span className="text-foreground">{email}</span>. Please check your | ||
| inbox and click the link to verify your account. | ||
| Enviamos un enlace de confirmación a{" "} | ||
| <span className="text-foreground">{email}</span>. Revisa tu | ||
| bandeja de entrada y haz clic en el enlace para verificar tu cuenta. | ||
| </CardDescription> | ||
| </CardHeader> | ||
| <CardContent> | ||
|
|
@@ -118,7 +118,7 @@ function SignupPageInner() { | |
| variant="outline" | ||
| className="w-full border-border text-muted-foreground hover:bg-muted hover:text-foreground" | ||
| > | ||
| Back to sign in | ||
| Volver a iniciar sesión | ||
| </Button> | ||
| </Link> | ||
| </CardContent> | ||
|
|
@@ -139,12 +139,12 @@ function SignupPageInner() { | |
| )} | ||
| </div> | ||
| <CardTitle className="text-xl text-foreground"> | ||
| {inviteToken ? "Create account & join" : "Create account"} | ||
| {inviteToken ? "Crear cuenta y unirte" : "Crear cuenta"} | ||
| </CardTitle> | ||
| <CardDescription className="text-muted-foreground"> | ||
| {inviteToken | ||
| ? "Verify your email, then accept the invitation to join your team." | ||
| : "Get started with CRM Template for WhatsApp"} | ||
| ? "Verifica tu correo y luego acepta la invitación para unirte a tu equipo." | ||
| : "Comienza con la plantilla de CRM para WhatsApp"} | ||
| </CardDescription> | ||
| </CardHeader> | ||
| <CardContent> | ||
|
|
@@ -157,12 +157,12 @@ function SignupPageInner() { | |
|
|
||
| <div className="flex flex-col gap-2"> | ||
| <Label htmlFor="fullName" className="text-muted-foreground"> | ||
| Full name | ||
| Nombre completo | ||
| </Label> | ||
| <Input | ||
| id="fullName" | ||
| type="text" | ||
| placeholder="John Doe" | ||
| placeholder="Juan Pérez" | ||
| value={fullName} | ||
| onChange={(e) => setFullName(e.target.value)} | ||
| required | ||
|
|
@@ -172,12 +172,12 @@ function SignupPageInner() { | |
|
|
||
| <div className="flex flex-col gap-2"> | ||
| <Label htmlFor="email" className="text-muted-foreground"> | ||
| Correo electrónico | ||
| </Label> | ||
| <Input | ||
| id="email" | ||
| type="email" | ||
| placeholder="you@example.com" | ||
| placeholder="tu@ejemplo.com" | ||
| value={email} | ||
| onChange={(e) => setEmail(e.target.value)} | ||
| required | ||
|
|
@@ -187,12 +187,12 @@ function SignupPageInner() { | |
|
|
||
| <div className="flex flex-col gap-2"> | ||
| <Label htmlFor="password" className="text-muted-foreground"> | ||
| Password | ||
| Contraseña | ||
| </Label> | ||
| <Input | ||
| id="password" | ||
| type="password" | ||
| placeholder="At least 6 characters" | ||
| placeholder="Al menos 6 caracteres" | ||
| value={password} | ||
| onChange={(e) => setPassword(e.target.value)} | ||
| required | ||
|
|
@@ -202,12 +202,12 @@ function SignupPageInner() { | |
|
|
||
| <div className="flex flex-col gap-2"> | ||
| <Label htmlFor="confirmPassword" className="text-muted-foreground"> | ||
| Confirm password | ||
| Confirmar contraseña | ||
| </Label> | ||
| <Input | ||
| id="confirmPassword" | ||
| type="password" | ||
| placeholder="Repeat your password" | ||
| placeholder="Repite tu contraseña" | ||
| value={confirmPassword} | ||
| onChange={(e) => setConfirmPassword(e.target.value)} | ||
| required | ||
|
|
@@ -220,12 +220,12 @@ function SignupPageInner() { | |
| disabled={loading} | ||
| className="mt-2 h-10 w-full bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-50" | ||
| > | ||
| {loading ? "Creating account..." : "Create account"} | ||
| {loading ? "Creando cuenta..." : "Crear cuenta"} | ||
| </Button> | ||
| </form> | ||
|
|
||
| <p className="mt-6 text-center text-sm text-muted-foreground"> | ||
| Already have an account?{" "} | ||
| ¿Ya tienes una cuenta?{" "} | ||
| <Link | ||
| href={ | ||
| inviteToken | ||
|
|
@@ -234,7 +234,7 @@ function SignupPageInner() { | |
| } | ||
| className="text-primary hover:text-primary/80" | ||
| > | ||
| Sign in | ||
| Iniciar sesión | ||
| </Link> | ||
| </p> | ||
| </CardContent> | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please keep this on
en. Changing the committed default makes every new install and every forker who hasn't set the var boot in Spanish — the language should be opt-in. Documentesas an available locale instead.