Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Interface/src/Components/navbar/navbar.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
<select [value]="getCurrentLanguage()" (change)="switchLanguage($any($event.target).value)" id="language-selector">
<option value="en">English</option>
<option value="ar">العربية</option>
<option value="fr">français</option>
<option value="es">español</option>
</select>
</li>
<li><a routerLink="/home" routerLinkActive="active active-link" [routerLinkActiveOptions]="{ exact: true }">{{ 'HOME' | translate }}</a></li>
Expand Down
2 changes: 1 addition & 1 deletion Interface/src/app/app.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<title>{{ title }}</title>
</head>
<body>
<div [attr.dir]="languageService.getCurrentLang() === 'ar' ? 'rtl' : 'ltr'" [attr.lang]="languageService.getCurrentLang()">
<div [attr.lang]="languageService.getCurrentLang()">
<app-navbar></app-navbar>
<app-spinner></app-spinner>
<router-outlet></router-outlet>
Expand Down
6 changes: 4 additions & 2 deletions Interface/src/app/services/language.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,16 @@ import { TranslateService } from '@ngx-translate/core';
@Injectable({ providedIn: 'root' })
export class LanguageService {
private isBrowser: boolean;
private rtl_languages: Set<string>;

constructor(
private translate: TranslateService,
@Inject(PLATFORM_ID) private platformId: object
) {
this.isBrowser = isPlatformBrowser(platformId);
this.rtl_languages = new Set(['ar']);

translate.addLangs(['en', 'ar']);
translate.addLangs(['en', 'ar', 'fr', 'es']);
translate.setDefaultLang('en');

const savedLang = this.isBrowser ? localStorage.getItem('lang') : 'en';
Expand All @@ -39,7 +41,7 @@ export class LanguageService {

private setDirection(lang: string) {
if (this.isBrowser) {
const dir = lang === 'ar' ? 'rtl' : 'ltr';
const dir = this.rtl_languages.has(lang) ? 'rtl' : 'ltr';
document.documentElement.setAttribute('dir', dir);
document.documentElement.setAttribute('lang', lang);
}
Expand Down
139 changes: 139 additions & 0 deletions Interface/src/assets/i18n/es.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
{
"HOME": "Inicio",
"ABOUT_US": "Sobre Nosotros",
"INSIGHTS": "Análisis",
"LOGOUT": "Cerrar Sesión",
"LOGIN": "Iniciar Sesión",
"SIGNUP": "Registrarse",
"OUR_TEAM": "Nuestro Equipo",
"TEAM_SUBHEADING": "Somos un equipo de apasionados estudiantes de Ciencias de la Computación de la Universidad de Assiut, impulsados por la innovación y la búsqueda incansable de la excelencia.",
"TEAM_DESCRIPTION": "A lo largo de nuestro viaje, hemos enfrentado desafíos, superado límites y aprovechado cada oportunidad de aprendizaje. Nuestro compromiso de entregar resultados de alta calidad bajo presión nos ha convertido en los solucionadores de problemas que somos hoy.",
"WELCOME_TITLE": "Bienvenido a FeedPulse",
"WELCOME_SUBTITLE": "Analizamos comentarios reales de redes sociales para ayudar a tu negocio a crecer de manera inteligente",
"CREATE_REPORT": "Crear Informe",
"GET_STARTED": "Empezar",
"WATCH_VIDEO": "Ver Video",
"PROCESS": "Proceso",
"HOW_IT_WORKS": "¿Cómo funciona?",
"STEP_REGISTER_TITLE": "Registrarse",
"STEP_REGISTER_DESC": "Por favor, completa el proceso de registro para comenzar.",
"STEP_FB_TITLE": "Conectar con Facebook",
"STEP_FB_DESC": "Conecta tu cuenta a Facebook para acceder a funciones adicionales.",
"STEP_INSIGHTS_TITLE": "¡Mira tus análisis!",
"STEP_INSIGHTS_DESC": "Consulta tu rendimiento y análisis una vez conectado.",
"LEARN_MORE": "¿Quieres saber más?",
"CHECK_VIDEO": "Ver el video",
"ABOUT_FEEDPULSE": "Sobre FeedPulse",
"GROW_BUSINESS": "Haremos Todo lo Posible para Hacer Crecer tu Negocio",
"DESCRIPTION": "En FeedPulse, empoderamos tu marca transformando los comentarios de los clientes en insights accionables, impulsando el crecimiento sostenible y la innovación.",
"OUR_VISION": "Nuestra Visión",
"VISION_1": "Ser la plataforma líder.",
"VISION_2": "Ofrecer insights de clientes en tiempo real.",
"VISION_3": "Permitir que las organizaciones tomen decisiones más inteligentes.",
"OUR_MISSION": "Nuestra Misión",
"MISSION_1": "Simplificar el análisis de comentarios con tecnología inteligente.",
"MISSION_2": "Ayudar a las empresas a prosperar entendiendo y actuando según la voz del cliente.",
"OUR_STORY": "Nuestra Historia",
"services": {
"title": "Nuestros Servicios",
"subtitle": "Lo que ofrecemos",
"sentiment": "Análisis de Sentimientos",
"topic": "Detección de Temas",
"security": "Seguridad",
"eco": "Ecológico",
"report": "Informes y Visualizaciones Personalizados",
"chatbot": "Chatbot"
},
"CONTACT_GET_IN_TOUCH": "Contacto",
"CONTACT_WORK_WITH_US": "Siempre estamos buscando trabajar con nuevos clientes.",
"CONTACT_FULLNAME": "Nombre Completo",
"CONTACT_EMAIL": "Correo Electrónico",
"CONTACT_PHONE": "Número de Teléfono",
"CONTACT_SUBJECT": "Asunto",
"CONTACT_MESSAGE": "Mensaje",
"CONTACT_SEND_MESSAGE": "Enviar Mensaje",
"FOOTER_SUBSCRIBE_TITLE": "Suscríbete a las Actualizaciones de FeedPulse",
"FOOTER_EMAIL_PLACEHOLDER": "Tu Correo Electrónico",
"FOOTER_SUBSCRIBE_BUTTON": "Suscribirse Ahora",
"FOOTER_DESCRIPTION": "Analizamos comentarios reales de redes sociales para ayudar a tu negocio a crecer de manera inteligente.",
"FOOTER_QUICK_LINKS": "Enlaces Rápidos",
"FOOTER_HOME": "Inicio",
"FOOTER_SERVICES": "Servicios",
"FOOTER_ABOUT": "Sobre Nosotros",
"FOOTER_PRIVACY": "Política de Privacidad",
"FOOTER_CONTACT": "Contacto Rápido",
"FOOTER_EMAIL": "Correo: info@feedpulse.com",
"FOOTER_PHONE": "Teléfono: +123456789",
"FOOTER_ADDRESS": "Dirección: El Cairo, Egipto",
"FOOTER_RIGHTS": "Todos los derechos reservados.",
"ADD_ORG_TITLE": "Agregar Organización",
"ORG_NAME": "Nombre:",
"ORG_DESCRIPTION": "Descripción:",
"ORG_DESCRIPTION_PLACEHOLDER": "Ingresa la descripción",
"ORG_FB_ID": "ID de Facebook:",
"ORG_PAGE_TOKEN": "Token de Acceso a la Página:",
"ORG_USER_ID": "ID de Usuario:",
"SUBMIT": "Enviar",
"FB_CONNECT_TEXT": "Conectar con Facebook",
"FB_CONNECT_HEADER": "Conecta tu cuenta a Facebook para acceder a funciones adicionales",
"FB_CONNECT_BUTTON": "Conectar a Facebook",
"DISCONNECT": "Desconectar",
"WELCOME_USER": "Bienvenido,",
"UNREGISTERED_PAGES": "Tus páginas no registradas:",
"REGISTERED_PAGES": "Tus páginas registradas:",
"UNKNOWN_PAGE": "Página Desconocida",
"GO_TO_FORM": "Ir al formulario",
"LOG": {
"TITLE": "Iniciar Sesión",
"USERNAME": "Nombre de Usuario*",
"PASSWORD": "Contraseña*",
"PASSWORD_REQUIRED": "La contraseña es obligatoria.",
"PASSWORD_MIN": "La contraseña debe tener al menos 8 caracteres.",
"BUTTON": "Iniciar Sesión"
},
"FULL_NAME": "Nombre Completo",
"USER_NAME": "Nombre de Usuario",
"EMAIL": "Correo Electrónico",
"PHONE_NUMBER": "Número de Teléfono",
"PASSWORD": "Contraseña",
"CONFIRM_PASSWORD": "Confirmar Contraseña",
"COUNTRY": "País",
"ADDRESS": "Dirección",
"PHOTO": "Foto",
"REGISTER": "Registrarse",
"REQUIRED": "es obligatorio.",
"MIN_LENGTH": "debe tener al menos {{length}} caracteres.",
"MAX_LENGTH": "no puede exceder los {{length}} caracteres.",
"INVALID_EMAIL": "Por favor, ingresa un correo electrónico válido.",
"INVALID_PHONE": "Por favor, ingresa un número de teléfono válido de 11 dígitos.",
"PASSWORD_NOT_MATCH": "Las contraseñas no coinciden.",
"CHOOSE_COUNTRY": "Elegir País",
"ANALYTICS_PAGE": "Página de Análisis",
"START_DATE": "Fecha de Inicio",
"END_DATE": "Fecha de Fin",
"SEE_INSIGHTS": "Ver Análisis",
"SELECT_DATES_WARNING": "Por favor, selecciona una fecha de inicio y una fecha de fin para continuar.",
"REPORT_FROM": "Informe del",
"TO": "al",
"GOALS": "Objetivos",
"ANALYTICS_IMAGES": "Imágenes de Análisis",
"METRICS": "Métricas",
"SENTIMENT_COUNTS": "Conteo de Sentimientos",
"TOPIC_COUNTS": "Conteo de Temas",
"TOP_5_TOPICS": "Top 5 de Temas",
"MOST_FREQ_SENTIMENT_PER_TOPIC": "Sentimiento Más Frecuente por Tema",
"MOST_FREQ_TOPIC_PER_SENTIMENT": "Tema Más Frecuente por Sentimiento",
"SENTIMENT": "Sentimiento",
"TOPIC": "Tema",
"COUNT": "Conteo",
"GENERATE_REPORTS": "GENERAR INFORMES",
"WE_WILL_GROW_BUSINESS": "Haremos Todo lo Posible para Hacer Crecer tu Negocio",
"FEEDPULSE_DESCRIPTION": "En FeedPulse, empoderamos tu marca transformando los comentarios de los clientes en insights accionables, impulsando el crecimiento sostenible y la innovación.",
"ANALYTICS_PAGE_DESCRIPTION": "Aquí puedes ver tu rendimiento y análisis una vez conectado.",
"TRY_MOCK_PAGE": "Probar Página de Prueba",
"LOGIN_SUCCESSFUL": "Inicio de Sesión Exitoso",
"WELCOME_BACK": "¡Bienvenido de nuevo!",
"LOGIN_FAILED": "Error al Iniciar Sesión",
"INVALID_CREDENTIALS": "Credenciales inválidas",
"OK": "Aceptar"
}
139 changes: 139 additions & 0 deletions Interface/src/assets/i18n/fr.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
{
"HOME": "Accueil",
"ABOUT_US": "À Propos",
"INSIGHTS": "Analyses",
"LOGOUT": "Déconnexion",
"LOGIN": "Connexion",
"SIGNUP": "Inscription",
"OUR_TEAM": "Notre Équipe",
"TEAM_SUBHEADING": "Nous sommes une équipe d'étudiants passionnés en Informatique de l'Université d'Assiut, animés par l'innovation et une quête incessante d'excellence.",
"TEAM_DESCRIPTION": "Tout au long de notre parcours, nous avons relevé des défis, repoussé les limites et saisi chaque opportunité d'apprentissage. Notre engagement à fournir des résultats de qualité sous pression a façonné notre capacité à résoudre les problèmes.",
"WELCOME_TITLE": "Bienvenue sur FeedPulse",
"WELCOME_SUBTITLE": "Nous analysons les retours des réseaux sociaux pour aider votre entreprise à grandir intelligemment",
"CREATE_REPORT": "Créer un Rapport",
"GET_STARTED": "Commencer",
"WATCH_VIDEO": "Regarder la Vidéo",
"PROCESS": "Processus",
"HOW_IT_WORKS": "Comment ça marche ?",
"STEP_REGISTER_TITLE": "S'inscrire",
"STEP_REGISTER_DESC": "Veuillez compléter le processus d'inscription pour commencer.",
"STEP_FB_TITLE": "Se Connecter à Facebook",
"STEP_FB_DESC": "Connectez votre compte à Facebook pour accéder à des fonctionnalités supplémentaires.",
"STEP_INSIGHTS_TITLE": "Voir vos Analyses !",
"STEP_INSIGHTS_DESC": "Consultez vos performances et analyses une fois connecté.",
"LEARN_MORE": "Vous voulez en savoir plus ?",
"CHECK_VIDEO": "Regarder la vidéo",
"ABOUT_FEEDPULSE": "À Propos de FeedPulse",
"GROW_BUSINESS": "Nous Ferons de Notre Mieux pour Faire Croître Votre Entreprise",
"DESCRIPTION": "Chez FeedPulse, nous renforçons votre marque en transformant les retours clients en insights actionnables, favorisant une croissance durable et l'innovation.",
"OUR_VISION": "Notre Vision",
"VISION_1": "Être la plateforme leader.",
"VISION_2": "Fournir des insights clients en temps réel.",
"VISION_3": "Permettre aux organisations de prendre des décisions plus intelligentes.",
"OUR_MISSION": "Notre Mission",
"MISSION_1": "Simplifier l'analyse des retours avec une technologie intelligente.",
"MISSION_2": "Aider les entreprises à prospérer en comprenant et en agissant sur la voix des clients.",
"OUR_STORY": "Notre Histoire",
"services": {
"title": "Nos Services",
"subtitle": "Ce que nous offrons",
"sentiment": "Analyse des Sentiments",
"topic": "Détection de Thèmes",
"security": "Sécurité",
"eco": "Écologique",
"report": "Rapports et Visualisations Personnalisés",
"chatbot": "Chatbot"
},
"CONTACT_GET_IN_TOUCH": "Contactez-nous",
"CONTACT_WORK_WITH_US": "Nous sommes toujours à la recherche de nouveaux clients.",
"CONTACT_FULLNAME": "Nom Complet",
"CONTACT_EMAIL": "Email",
"CONTACT_PHONE": "Numéro de Téléphone",
"CONTACT_SUBJECT": "Sujet",
"CONTACT_MESSAGE": "Message",
"CONTACT_SEND_MESSAGE": "Envoyer le Message",
"FOOTER_SUBSCRIBE_TITLE": "Abonnez-vous aux Mises à Jour de FeedPulse",
"FOOTER_EMAIL_PLACEHOLDER": "Votre Adresse Email",
"FOOTER_SUBSCRIBE_BUTTON": "S'abonner Maintenant",
"FOOTER_DESCRIPTION": "Nous analysons les retours des réseaux sociaux pour aider votre entreprise à grandir intelligemment.",
"FOOTER_QUICK_LINKS": "Liens Rapides",
"FOOTER_HOME": "Accueil",
"FOOTER_SERVICES": "Services",
"FOOTER_ABOUT": "À Propos",
"FOOTER_PRIVACY": "Politique de Confidentialité",
"FOOTER_CONTACT": "Contact Rapide",
"FOOTER_EMAIL": "Email : info@feedpulse.com",
"FOOTER_PHONE": "Téléphone : +123456789",
"FOOTER_ADDRESS": "Adresse : Le Caire, Égypte",
"FOOTER_RIGHTS": "Tous droits réservés.",
"ADD_ORG_TITLE": "Ajouter une Organisation",
"ORG_NAME": "Nom :",
"ORG_DESCRIPTION": "Description :",
"ORG_DESCRIPTION_PLACEHOLDER": "Entrez la description",
"ORG_FB_ID": "ID Facebook :",
"ORG_PAGE_TOKEN": "Jeton d'Accès à la Page :",
"ORG_USER_ID": "ID Utilisateur :",
"SUBMIT": "Soumettre",
"FB_CONNECT_TEXT": "Se Connecter avec Facebook",
"FB_CONNECT_HEADER": "Connectez votre compte à Facebook pour accéder à des fonctionnalités supplémentaires",
"FB_CONNECT_BUTTON": "Se Connecter à Facebook",
"DISCONNECT": "Déconnecter",
"WELCOME_USER": "Bienvenue,",
"UNREGISTERED_PAGES": "Vos pages non enregistrées :",
"REGISTERED_PAGES": "Vos pages enregistrées :",
"UNKNOWN_PAGE": "Page Inconnue",
"GO_TO_FORM": "Aller au formulaire",
"LOG": {
"TITLE": "Connexion",
"USERNAME": "Nom d'Utilisateur*",
"PASSWORD": "Mot de Passe*",
"PASSWORD_REQUIRED": "Le mot de passe est requis.",
"PASSWORD_MIN": "Le mot de passe doit contenir au moins 8 caractères.",
"BUTTON": "Se Connecter"
},
"FULL_NAME": "Nom Complet",
"USER_NAME": "Nom d'Utilisateur",
"EMAIL": "Email",
"PHONE_NUMBER": "Numéro de Téléphone",
"PASSWORD": "Mot de Passe",
"CONFIRM_PASSWORD": "Confirmer le Mot de Passe",
"COUNTRY": "Pays",
"ADDRESS": "Adresse",
"PHOTO": "Photo",
"REGISTER": "S'inscrire",
"REQUIRED": "est requis.",
"MIN_LENGTH": "doit contenir au moins {{length}} caractères.",
"MAX_LENGTH": "ne peut pas dépasser {{length}} caractères.",
"INVALID_EMAIL": "Veuillez entrer une adresse email valide.",
"INVALID_PHONE": "Veuillez entrer un numéro de téléphone valide à 11 chiffres.",
"PASSWORD_NOT_MATCH": "Les mots de passe ne correspondent pas.",
"CHOOSE_COUNTRY": "Choisir un Pays",
"ANALYTICS_PAGE": "Page d'Analyses",
"START_DATE": "Date de Début",
"END_DATE": "Date de Fin",
"SEE_INSIGHTS": "Voir les Analyses",
"SELECT_DATES_WARNING": "Veuillez sélectionner une date de début et une date de fin pour continuer.",
"REPORT_FROM": "Rapport du",
"TO": "au",
"GOALS": "Objectifs",
"ANALYTICS_IMAGES": "Images d'Analyses",
"METRICS": "Métriques",
"SENTIMENT_COUNTS": "Nombre de Sentiments",
"TOPIC_COUNTS": "Nombre de Thèmes",
"TOP_5_TOPICS": "Top 5 des Thèmes",
"MOST_FREQ_SENTIMENT_PER_TOPIC": "Sentiment le Plus Fréquent par Thème",
"MOST_FREQ_TOPIC_PER_SENTIMENT": "Thème le Plus Fréquent par Sentiment",
"SENTIMENT": "Sentiment",
"TOPIC": "Thème",
"COUNT": "Nombre",
"GENERATE_REPORTS": "GÉNÉRER DES RAPPORTS",
"WE_WILL_GROW_BUSINESS": "Nous Ferons de Notre Mieux pour Faire Croître Votre Entreprise",
"FEEDPULSE_DESCRIPTION": "Chez FeedPulse, nous renforçons votre marque en transformant les retours clients en insights actionnables, favorisant une croissance durable et l'innovation.",
"ANALYTICS_PAGE_DESCRIPTION": "Ici, vous pouvez voir vos performances et analyses une fois connecté.",
"TRY_MOCK_PAGE": "Essayer une Page de Test",
"LOGIN_SUCCESSFUL": "Connexion Réussie",
"WELCOME_BACK": "Content de vous revoir !",
"LOGIN_FAILED": "Échec de la Connexion",
"INVALID_CREDENTIALS": "Identifiants invalides",
"OK": "Ok"
}
Loading