Skip to content

Commit f001c2e

Browse files
client: Spanish Localization (#1263)
* began spanish localization * Finished spanish localization * ran yarn lint * requested changes * missed a few * ran yarn lint
1 parent d7c7eec commit f001c2e

File tree

2 files changed

+387
-0
lines changed

2 files changed

+387
-0
lines changed

client/src/components/navbar/LocaleSelector.vue

+4
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ const locales = [
3030
text: "🇷🇺",
3131
value: "ru",
3232
},
33+
{
34+
text: "🇪🇸",
35+
value: "es",
36+
},
3337
];
3438
3539
export const LocaleSelector = defineComponent({

client/src/locales/es.ts

+383
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,383 @@
1+
import { OttWebsocketError, BehaviorOption, Role } from "ott-common/models/types";
2+
3+
export default {
4+
"common": {
5+
"yes": "Si",
6+
"no": "No",
7+
"ok": "OK",
8+
"cancel": "Cancelar",
9+
"close": "Cerrar",
10+
"close-all": "Cerrar Todos",
11+
"add": "Agregar",
12+
"remove": "Eliminar",
13+
"delete": "Borrar",
14+
"play": "Jugar",
15+
"pause": "Pausar",
16+
"save": "Guardar",
17+
"search": "Buscar",
18+
"undo": "Deshacer",
19+
"copy": "Copiar",
20+
"show": "Mostrar",
21+
"hide": "Esconder",
22+
"discard": "Desechar",
23+
"loading": "Cargando...",
24+
"view": "Mirar",
25+
"restore": "Restaurar",
26+
"success": "Éxito",
27+
},
28+
"landing": {
29+
hero: {
30+
title: "Disfrutar juntos.",
31+
description:
32+
"Reproducción sincronizada en tiempo real. Sistema de votación opcional.\nModo oscuro. No es necesario registrarse. Código fuente abierto.\nNunca ha sido tan fácil ver vídeos juntos.",
33+
btns: {
34+
create: "@:nav.create.title",
35+
browse: "Navegar salas",
36+
source: "Ver el código original",
37+
},
38+
},
39+
intro: {
40+
title: "Las fiestas de visualización remota ahora son mucho más fáciles",
41+
name: "OpenTogetherTube",
42+
text1: "Es una plataforma de sincronizacion de videos en tiempo real.\nEs fácil para usar y no tienes que inscribirte. Simplemente crea un sala, agrega videos y\ninvita a tus amigos. BOOM! Estás listo para disfrutar de videos con tus amigos hasta las 3 de la mañana",
43+
text2: "El TogetherTube original fue amado por su interfaz simple,\ny lo fácil que fue empezar a ver vídeos de inmediato.\nOpenTogetherTube pretende ser igual de fácil de usar y luego mejoralo\npara hacerlo aún mejor.",
44+
text3: "Actualmente, puedes ver videos en línea con tus amigos de Youtube, Vimeo, Dailymotion, enlaces directos a videos .mp4 y",
45+
link: "hay más en camino",
46+
},
47+
features: {
48+
"title": "Características Principales",
49+
"syncronized-playback": {
50+
title: "Reproducción sincronizada",
51+
text: "Golpea play, y el video se reproduce para todos\nen la sala. Asi de simple",
52+
},
53+
"permanent-rooms": {
54+
title: "Salas Permanentes",
55+
text: "¿Tú y el equipo vienen aquí bastante? Evite la molestia\nde enviar un enlace nuevo cada vez. Las salas\npermanentes obtienen una URL personalizada que no cambia.",
56+
},
57+
"dark-theme": {
58+
title: "Modo Oscuro",
59+
text: "¿Estás viendo recopilaciones de Vine a altas horas de la noche?\nOpenTogetherTube tiene un modo oscuro automáticamente\npara que tus ojos no sufran.",
60+
},
61+
"room-permissions": {
62+
title: "Permisos de sala",
63+
text: "¿Cansado de desconocidos que se unen a tu sala y\ny agregando videos ruidosos a tu sesión relaja de hip-hop lofi?\nSimplemente bloquéelos para que no agreguen videos.",
64+
},
65+
"voting-system": {
66+
title: "Sistema de votación",
67+
text: "¿No puedes decidir qué ver a continuación? Cambie la cola\nal sistema de votación y deje que la democracia haga\nlo que mejor sabe hacer.",
68+
},
69+
"playlist-copying": {
70+
title: "Copia de lista de reproducción",
71+
text: "Agregue listas de reproducción o canales completos a la cola de videos\nde una vez para no tener que quedarse sentado agregando\ncada video a la cola uno por uno. Es la mejor manera\nde ver ese nuevo canal con tus amigos.",
72+
},
73+
},
74+
support: {
75+
title: "Apoyar el Desarrollo",
76+
description1:
77+
"OpenTogetherTube no sería posible sin la ayuda de contribuyentes y seguidores como usted.",
78+
description2:
79+
"Participe en el desarrollo contribuyendo con sus ideas o código, o muestre su apoyo convirtiéndose en patrocinador. Todas las donaciones se utilizan para pagar los costos de alojamiento, para el desarrollo de OpenTogetherTube y para mantener OpenTogetherTube libre de publicidad.",
80+
how: "¿Cómo puedo ayudar?",
81+
sponsor: "Conviértete en patrocinador",
82+
contribute: "Contribuir",
83+
},
84+
},
85+
"footer": {
86+
"disclaimer":
87+
"Descargo de responsabilidad: El proyecto OpenTogetherTube no está asociado con TogetherTube ni con Watch2Gether.",
88+
"made-in": "Hecho en America",
89+
"thanks-to": "Agradecimientos especiales a",
90+
"privacy-policy": "Política de privacidad",
91+
"attribution": "Atribución",
92+
},
93+
"not-found": {
94+
title: "Página no encontrada",
95+
home: "@:nav.home",
96+
browse: "@:landing.hero.btns.browse",
97+
},
98+
"quick-room": {
99+
text: "Haciendo una sala temporaria para ti...",
100+
},
101+
"attribution": {
102+
"sponsorblock-text": "Utiliza SponsorBlock datos de",
103+
},
104+
"nav": {
105+
"home": "Página Principal",
106+
"browse": "Navegar",
107+
"faq": "FAQ",
108+
"bug": "Reportar un Error",
109+
"support": "Apoyarme!",
110+
"login": "Registrarse",
111+
"link-discord": "Conectar Discord",
112+
"logout": "Cerrar Sesión",
113+
"create": {
114+
"title": "Crear Sala",
115+
"temp": "Crear Sala Temporaria",
116+
"temp-desc": "Comienza a ver videos con tus amigos ahora",
117+
"perm": "Crear Sala Permanente",
118+
"perm-desc": "Perfecto para visitantes frecuentes.",
119+
},
120+
},
121+
"room-list": {
122+
"no-rooms": "No hay salas en este momento......",
123+
"create": "@:nav.create.title",
124+
"no-description": "Sin descripción.",
125+
"nothing-playing": "Nada Jugando.",
126+
},
127+
"room": {
128+
"title-temp": "Sala Temporario",
129+
"kick-me": "Sacame",
130+
"rewind": "Devolver 10s",
131+
"skip": "Adelantar 10s",
132+
"play-pause": "Reproducir/Pausar",
133+
"next-video": "Siguiente vídeo",
134+
"next-video-vote": "Vota para saltar el vídeo",
135+
"toggle-fullscreen": "Alternar pantalla completa",
136+
"con-status": {
137+
connecting: "Conectando...",
138+
connected: "Conectado",
139+
},
140+
"tabs": {
141+
queue: "Cola",
142+
settings: "Ajustes",
143+
},
144+
"users": {
145+
title: "Usuarios",
146+
set: "Establece tu nombre",
147+
empty: "Parece que no hay nadie más aquí. ¡Invita a algunos amigos!",
148+
you: "Tu",
149+
demote: "Degradar",
150+
promote: "Promover",
151+
kick: "Sacar",
152+
},
153+
},
154+
"privacy": {
155+
title: "@:footer.privacy-policy",
156+
},
157+
"chat": {
158+
"title": "Hablar",
159+
"type-here": "Escribe tu mensaje aquí...",
160+
},
161+
"share-invite": {
162+
title: "Compartir Invitacion",
163+
text: "Copia este enlace y compártelo con tus amigos!",
164+
copied: "Copiado!",
165+
},
166+
"video": {
167+
"add-explanation": "Agregar a la cola.",
168+
"playnow": "Reproducir ahora",
169+
"playnow-explanation":
170+
"Reproduce este video ahora, empujando el video actual al principio de la cola.",
171+
"no-video": "No se está reproduciendo ningún video.",
172+
"no-video-text": 'Haz clic en "Agregar" para añadir un video.',
173+
},
174+
"add-preview": {
175+
"add-all": "Agregar a la cola",
176+
"placeholder":
177+
"Escriba para buscar en YouTube o ingrese la URL de un video para agregarlo a la cola",
178+
"title": "Que puedo agregar??",
179+
"single-videos": "Vídeos Individuales",
180+
"playlists": "Listas de reproducción",
181+
"playlist": "Lista de reproducción",
182+
"text": "O simplemente escriba texto para buscar en Youtube.",
183+
"search-for": 'Busque "{search}" en YouTube presionando Intro o haciendo clic en Buscar.',
184+
"platforms": {
185+
"youtube-videos": "Vídeos de Youtube: {url}",
186+
"vimeo-videos": "Vídeos de Vimeo: {url}",
187+
"dailymotion-videos": "Vídeos de Dailymotion: {url}",
188+
"any-mp4-videos": "Cualquier video público .mp4: {url}",
189+
"youtube-playlists": "Listas de reproducción de youtube: {url}",
190+
"youtube-channels": "Canales de Youtube: {url}",
191+
"subreddits": "Subreddits: {url}",
192+
},
193+
"messages": {
194+
"unknown-status":
195+
"Estado desconocido para agregar respuesta de vista previa: {status}.",
196+
"unknown-error":
197+
"Se produjo un error desconocido al obtener la vista previa de agregar. Vuelve a intentarlo más tarde.",
198+
"failed-to-get-add-preview":
199+
"No se pudo obtener la vista previa para agregar. Probablemente es un error; consulte la consola para obtener más detalles.",
200+
"failed-to-all-videos": "Error en todos los vídeos: {message}",
201+
},
202+
},
203+
"processed-text": {
204+
"link-hint": "Haga clic para copiar este enlace a la pestaña de agregar.",
205+
},
206+
"video-queue": {
207+
"no-videos": "No hay vídeos en la cola.",
208+
"add-video": "Agregar un vídeos",
209+
"export": "Exportar",
210+
"export-diag-title": "Exportar Cola",
211+
"export-hint": 'Copie y pegue este texto en la pestaña "Agregar" para restaurar esta cola.',
212+
"restore": "¿Quieres restaurar los vídeos de la cola anterior?",
213+
"restore-queue": "¿Restaurar Cola?",
214+
"restore-queue-hint":
215+
"Esto es lo que estaba en la cola la última vez que esta sala estuvo activa. ¿Quieres restaurarlo?",
216+
},
217+
"video-queue-item": {
218+
"experimental": "¡Soporte experimental para este servicio! Espere que se rompa mucho.",
219+
"play-next": "Reproducir Próximo",
220+
"play-last": "Reproducir Último",
221+
"messages": {
222+
"video-added": "Vídeo agregado",
223+
"video-removed": "Vídeos borrado",
224+
},
225+
"start-at": "Empieza en {timestamp}",
226+
},
227+
"room-settings": {
228+
"title": "@:create-room-form.title",
229+
"description": "@:create-room-form.description",
230+
"visibility": "@:create-room-form.visibility",
231+
"public": "@:create-room-form.public",
232+
"unlisted": "@:create-room-form.unlisted",
233+
"queue-mode": "@:create-room-form.queue-mode",
234+
"manual": "@:create-room-form.manual",
235+
"manual-hint":
236+
"Comportamiento normal predeterminado, funciona como lo piensas. Puedes reordenar manualmente los elementos en la cola.",
237+
"vote": "@:create-room-form.vote",
238+
"vote-hint": "El vídeo más votado se reproduce a continuación.",
239+
"loop": "Loop",
240+
"loop-hint": "Cuando termine el video, colóquelo al final de la cola.",
241+
"dj": "DJ",
242+
"dj-hint":
243+
"Cuando termine el video, comience el mismo video desde el principio. Bueno para reproducir música de fondo.",
244+
"auto-skip-text":
245+
"Omitir automáticamente segmentos patrocinados, introducciones, autopromociones, etc. utilizando los datos de SponsorBlock.",
246+
"permissions-not-available": "Los permisos no están disponibles en salas temporarias",
247+
"room-needs-owner":
248+
"Esta sala necesita un propietario antes de poder modificar los permisos.",
249+
"login-to-claim": "Inicie sesión para reclamar esta sala.",
250+
"arent-able-to-modify-permissions": "No puedes modificar los permisos en esta sala.",
251+
"settings-applied": "Configuración aplicada",
252+
"now-own-the-room": "Ahora eres dueño de la sala {room}.",
253+
"load-failed": "No se pudo cargar la configuración de la sala.",
254+
"restore-queue": "Restaurar la cola cuando la sala esté cargada.",
255+
"enable-vote-skip": "Habilitar la omisión de votos",
256+
},
257+
"create-room-form": {
258+
"card-title": "Crear una Sala Permanente.",
259+
"create-room": "Crear Sala",
260+
"name": "Nombre",
261+
"name-hint": "Utilizado en la URL de la sala. No se puede cambiar más tarde.",
262+
"title": "Título",
263+
"title-hint": "Opcional",
264+
"description": "Descripción",
265+
"description-hint": "@:create-room-form.title-hint",
266+
"visibility": "Visibilidad",
267+
"visibility-hint": "Controla si la sala aparece o no en la lista de salas.",
268+
"queue-mode": "Modo de Cola",
269+
"manual": "Manual",
270+
"vote": "Votar",
271+
"public": "Público",
272+
"unlisted": "No incluido en listado",
273+
"rules": {
274+
"name": {
275+
"name-required": "Se requiere el nombre.",
276+
"no-spaces": "El nombre no debe contener espacios.",
277+
"length": "El nombre debe tener entre 3 y 32 caracteres.",
278+
"alphanumeric":
279+
"El nombre solo debe contener caracteres alfanuméricos, guiones y guiones bajos.",
280+
"taken": "Nombre ya esta en uso.",
281+
},
282+
"invalid-visibility": "Visibilidad no válida",
283+
"invalid-queue": "Modo de cola no válido",
284+
},
285+
"unknown-error": "Un error desconocido ocurrió. Vuelve a intentarlo más tarde.",
286+
},
287+
"login-form": {
288+
"login": "@:nav.login",
289+
"register": "Registrar",
290+
"login-discord": "Iniciar sesión con Discord.",
291+
"email": "Correo Electrónico",
292+
"email-or-username": "Correo Electrónico o Nombre de Usuario",
293+
"username": "Nombre de Usuario",
294+
"password": "Contraseña",
295+
"retype-password": "Vuelva a escribir la contraseña",
296+
"email-optional":
297+
"Dando un correo electrónico es opcional, pero hace imposible recuperar su cuenta si olvida su contraseña.",
298+
"rules": {
299+
"email-required": "Correo electronico es requerido",
300+
"valid-email": "Debe ser un correo electrónico válido",
301+
"username-required": "Se requiere nombre de usuario",
302+
"username-length": "El nombre de usuario debe tener entre 1 y {length} caracteres",
303+
"password-required": "Se requiere contraseña",
304+
"password-length": "La contraseña debe tener al menos 10 caracteres",
305+
"retype-password": "Por favor, escriba de nuevo su contraseña",
306+
"passwords-match": "Las contraseñas deben coincidir",
307+
},
308+
"errors": {
309+
"something-weird-happened":
310+
"Algo extraño sucedió, pero ¿es posible que hayas iniciado sesión? Recarga la página.",
311+
"login-failed-noserver":
312+
"No se pudo iniciar sesión, pero el servidor no dijo por qué. Reportar esto como un error.",
313+
"login-failed": "No pude iniciar sesión y no sé por qué. Reportar esto como un error.",
314+
"register-failed-noserver":
315+
"No se pudo registrar, pero el servidor no dijo por qué. Reportar esto como un error.",
316+
"register-failed":
317+
"No pude registrarme y no sé por qué. Verifique la consola y reportar esto como un error.",
318+
"in-use": "Ya en uso.",
319+
},
320+
"change-password": {
321+
title: "Cambiar la contraseña",
322+
success: "Cambio de contraseña exitoso.",
323+
forgot: "¿Olvidaste tu contraseña?",
324+
prompt: "Ingrese la dirección de correo electrónico o el nombre de usuario asociado con su cuenta.",
325+
reset: "Restablecer",
326+
sent: "Correo electrónico de restablecimiento de contraseña enviado.",
327+
failed: "No se puede restablecer la contraseña.",
328+
},
329+
},
330+
"permissions-editor": {
331+
"title": "Editor de permisos",
332+
"text1":
333+
"Todos los permisos concedidos a usuarios con menos privilegios se conceden automáticamente a usuarios con más privilegios.",
334+
"text2":
335+
"A los administradores se les concede todo. El propietario de la sala es automáticamente administrador y no puede ser degradado.",
336+
"viewing-as": "Viendo como",
337+
"permission": "Permisos",
338+
},
339+
"client-settings": {
340+
"title": "Preferencias",
341+
"description":
342+
"Estas configuraciones se guardan en su navegador y solo le afectan a usted.",
343+
"activator": "@:client-settings.title",
344+
"room-layout": "Diseño de la sala",
345+
"theme": "Modo",
346+
"sfx-enable": "Habilitar efectos de sonido",
347+
"sfx-volume": "Volumen del efecto de sonido",
348+
},
349+
"connect-overlay": {
350+
"title": "Desconectado",
351+
"find-another": "Encuentra otra sala",
352+
"dc-reasons": {
353+
[OttWebsocketError.UNKNOWN]: "@:connect-overlay.dc-reasons.unknown",
354+
[OttWebsocketError.ROOM_NOT_FOUND]: "Sala no encontrada.",
355+
[OttWebsocketError.ROOM_UNLOADED]: "La sala se ha cerrado.",
356+
[OttWebsocketError.MISSING_TOKEN]:
357+
"No se proporcionó ninguna token. Actualiza la página y vuelve a intentarlo. Si continúa, abra un problema en GitHub.",
358+
[OttWebsocketError.KICKED]: "Fuiste expulsado de la sala por un usuario.",
359+
unknown: "Algo pasó, pero no sabemos qué. Por favor, reporte esto como un error.",
360+
},
361+
},
362+
"vote-skip": {
363+
remaining: "{count} votos más para omitir",
364+
},
365+
"roles": {
366+
[Role.Administrator]: "Administrador",
367+
[Role.Moderator]: "Moderador",
368+
[Role.TrustedUser]: "Usuario Confiado",
369+
[Role.RegisteredUser]: "Usuario Registrado",
370+
[Role.UnregisteredUser]: "Usuario no Registrado",
371+
[Role.Owner]: "Dueño",
372+
},
373+
"errors": {
374+
BadPasswordError:
375+
"La contraseña no cumple con los requisitos mínimos. Debe tener al menos 8 caracteres y contener 2 de las siguientes categorías de caracteres: letras minúsculas, letras mayúsculas, números, caracteres especiales.",
376+
BadApiArgumentException: "Mal argumento de API. Probablemente es un error, Reportalo",
377+
},
378+
"player": {
379+
"buffer-warn": {
380+
spans: "Aún no has almacenado suficiente cantidad del vídeo. Intervalos de tiempo actuales almacenados en búfer: {range}",
381+
},
382+
},
383+
};

0 commit comments

Comments
 (0)