Skip to content

Commit

Permalink
spanish
Browse files Browse the repository at this point in the history
  • Loading branch information
kubk committed Dec 23, 2023
1 parent a90df89 commit 1b1fd3e
Show file tree
Hide file tree
Showing 5 changed files with 141 additions and 9 deletions.
17 changes: 17 additions & 0 deletions src/translations/get-encouraging-message.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,26 @@ const ru = [
"Подумай о накопленных знаниях, которые ты получаешь с каждым повторением. Будущий 'ты' благодарит тебя!",
];

const es = [
"La constancia es la clave para la maestría, y cada repetición te hace mejor",
"Recuerda que el camino del conocimiento es infinito, y cada lección cuenta",
"Cada repetición profundiza el conocimiento en tu memoria. ¡Bien hecho por no rendirte!",
"Cada repetición fortalece tus conexiones neuronales. No solo estás aprendiendo, estás creciendo",
"Cada repetición alimenta tu futuro. ¡Imagina cuánto sabrás dentro de un año!",
"Como dice el dicho, 'La repetición es la madre del aprendizaje'. Estás encarnando esta sabiduría en cada sesión",
"Tus esfuerzos de hoy son la base para la maestría de mañana. ¡Sigue así!",
"Aprender es como construir un castillo ladrillo a ladrillo. Cada repetición agrega una piedra más a tu fortaleza del conocimiento",
"El árbol de tu conocimiento no crecerá sin cuidado constante. Continúa regando tu árbol del aprendizaje",
"No solo estás repitiendo información; la estás convirtiendo en parte de ti",
"Piensa en el conocimiento acumulado que obtienes con cada repetición. Tu futuro yo te lo agradecerá",
];

export const getEncouragingMessage = () => {
if (translator.getLang() === "ru") {
return random(ru);
}
if (translator.getLang() === "es") {
return random(es);
}
return random(en);
};
18 changes: 10 additions & 8 deletions src/translations/get-user-language.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import { Language } from "./t.ts";
import WebApp from "@twa-dev/sdk";

export const getUserLanguage = (): Language => {
return "ru";
// const languageCode = WebApp.initDataUnsafe.user?.language_code;
// switch (languageCode) {
// case "ru":
// return "ru";
// default:
// return "en";
// }
const languageCode = WebApp.initDataUnsafe.user?.language_code;
switch (languageCode) {
case "ru":
return "ru";
case "es":
return "es";
default:
return "en";
}
};
92 changes: 91 additions & 1 deletion src/translations/t.ts
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,97 @@ const ru: Translation = {
validation_number: "Это поле должно быть числом",
};

const translations = { en, ru };
const es: Translation = {
my_decks: "Mis mazos",
show_all_decks: "Mostrar todos",
hide_all_decks: "Ocultar",
no_personal_decks_start:
"Todavía no tienes ningún mazo personal. Siéntete libre de",
no_personal_decks_create: "crear uno",
no_personal_decks_explore:
"o explorar los mazos públicos a continuación. ¡Feliz aprendizaje! 😊",
add_deck: "Añadir mazo",
edit_deck: "Editar mazo",
edit: "Editar",
all_decks_reviewed: `¡Increíble trabajo! 🌟 Has repasado todos los mazos por ahora. Vuelve más tarde para más.`,
public_decks: "Mazos públicos",
explore_public_decks: "Explorar más mazos",
news_and_updates: "Noticias y actualizaciones",
telegram_channel: "Canal de Telegram",
settings: "Configuración",
deck_has_been_added: "Este mazo está en tu lista",
deck_catalog: "Catálogo de Mazos",
i_understand: "Entiendo",
any_language: "Cualquier idioma",
category: "Categoría",
any_category: "Cualquiera",
deck_search_not_found: "No se encontraron mazos",
deck_search_not_found_description:
"Intenta actualizar los filtros para ver más mazos",
category_English: "Inglés",
category_Geography: "Geografía",
category_History: "Historia",
save: "Guardar",
add_card: "Añadir tarjeta",
add_card_short: "Añadir",
card_front_title: "Cara frontal",
card_back_title: "Cara posterior",
card_front_side_hint: "La pregunta o indicación",
card_back_side_hint: "La respuesta que necesitas proporcionar",
card_field_example_title: "Ejemplo",
card_field_example_hint: "Información adicional opcional",
cards: "Tarjetas",
search_card: "Buscar tarjeta",
card_sort_by_date: "Fecha",
card_sort_by_front: "Frente",
card_sort_by_back: "Dorso",
sort_by: "Ordenar por",
title: "Título",
description: "Descripción",
speaking_cards: "Tarjetas habladas",
voice_language: "Idioma de voz",
card_speak_side: "Lado de la tarjeta",
card_speak_side_front: "Frente",
card_speak_side_back: "Dorso",
card_speak_description:
"Reproducir audio hablado para cada tarjeta y mejorar la pronunciación",
review_deck_finished: `Has terminado este mazo por ahora 🎉`,
review_all_cards: `Has repasado todas las tarjetas por hoy 🎉`,
review_finished_want_more: "¿Quieres más? Tienes",
review_finished_to_review: "para estudiar",
review_deck: "Repasar mazo",
cards_to_repeat: "Tarjetas para repetir",
cards_new: "Nuevas tarjetas",
cards_total: "Total de tarjetas",
duplicate: "Duplicar",
duplicate_confirm: "¿Estás seguro de duplicar este mazo?",
delete_deck_confirm:
"¿Estás seguro de eliminar el mazo de tu colección? Esta acción no se puede deshacer",
delete: "Eliminar",
no_cards_to_review_in_deck: `¡Increíble trabajo! 🌟 Has repasado todas las tarjetas en este mazo por ahora. Vuelve más tarde para más.`,
no_cards_to_review_all: `¡Increíble trabajo! 🌟 Has repasado todas las tarjetas por hoy. Vuelve más tarde para más.`,
review_need_to_repeat: "Necesito repasar",
review_right: "Lo recordé bien",
review_show_answer: "Mostrar respuesta",
share: "Compartir",
warning_telegram_outdated_title: "Tu Telegram está desactualizado",
warning_telegram_outdated_description:
"Por favor, actualiza tu Telegram para asegurar el funcionamiento estable de esta aplicación.",
settings_review_notifications: "Notificaciones de repaso",
settings_time: "Hora",
settings_review_notifications_hint:
"Los recordatorios diarios te ayudan a recordar repetir las tarjetas",
validation_deck_title: "El título del mazo es obligatorio",
deck_form_quit_card_confirm: "¿Salir sin guardar la tarjeta?",
deck_form_quit_deck_confirm: "¿Salir sin guardar el mazo?",
deck_form_no_cards_alert:
"Por favor, añade al menos 1 tarjeta para crear un mazo",
deck_category: "Categoría del mazo",
validation_required: "Este campo es obligatorio",
validation_number: "Este campo debe ser un número",
};

const translations = { en, ru, es };
export type Language = keyof typeof translations;

export const translateCategory = (category: string) => {
Expand Down
11 changes: 11 additions & 0 deletions src/translations/translate-new-cards-count.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,15 @@ describe("translate new cards count", () => {
expect(translateNewCardsCount(3)).toBe("new cards");
expect(translateNewCardsCount(21)).toBe("new cards");
});

test("spanish", () => {
lang.mockReturnValue("es");

expect(translateNewCardsCount(1)).toBe("nueva tarjeta");
expect(translateNewCardsCount(2)).toBe("nuevas tarjetas");
expect(translateNewCardsCount(3)).toBe("nuevas tarjetas");
expect(translateNewCardsCount(21)).toBe("nuevas tarjetas");
});

});

12 changes: 12 additions & 0 deletions src/translations/translate-new-cards-count.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,18 @@ export const translateNewCardsCount = (count: number) => {
}
}

if (language === 'es') {
const rules = new Intl.PluralRules("es-ES");
const result = rules.select(count);

switch (result) {
case "one":
return "nueva tarjeta";
case "other":
return "nuevas tarjetas";
}
}

if (count === 1) {
return `new card`;
}
Expand Down

0 comments on commit 1b1fd3e

Please sign in to comment.