Upload 6 files
Browse files- translations/__init__.py +64 -0
- translations/en.py +341 -0
- translations/es.py +318 -0
- translations/landing_translations.py +173 -0
- translations/recommendations.py +311 -0
- translations/uk.py +337 -0
translations/__init__.py
ADDED
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# translations/__init__.py
|
2 |
+
import logging
|
3 |
+
from importlib import import_module
|
4 |
+
|
5 |
+
logger = logging.getLogger(__name__)
|
6 |
+
|
7 |
+
def get_translations(lang_code):
|
8 |
+
# Asegurarse de que lang_code sea válido
|
9 |
+
if lang_code not in ['es', 'en', 'uk']:
|
10 |
+
print(f"Invalid lang_code: {lang_code}. Defaulting to 'es'")
|
11 |
+
lang_code = 'es'
|
12 |
+
|
13 |
+
try:
|
14 |
+
# Importar dinámicamente el módulo de traducción
|
15 |
+
translation_module = import_module(f'.{lang_code}', package='translations')
|
16 |
+
translations = getattr(translation_module, 'TRANSLATIONS', {})
|
17 |
+
except ImportError:
|
18 |
+
logger.warning(f"Translation module for {lang_code} not found. Falling back to English.")
|
19 |
+
# Importar el módulo de inglés como fallback
|
20 |
+
translation_module = import_module('.en', package='translations')
|
21 |
+
translations = getattr(translation_module, 'TRANSLATIONS', {})
|
22 |
+
|
23 |
+
def get_text(key, section='COMMON', default=''):
|
24 |
+
return translations.get(section, {}).get(key, default)
|
25 |
+
|
26 |
+
return {
|
27 |
+
'get_text': get_text,
|
28 |
+
**translations.get('COMMON', {}),
|
29 |
+
**translations.get('TABS', {}),
|
30 |
+
**translations.get('MORPHOSYNTACTIC', {}),
|
31 |
+
**translations.get('SEMANTIC', {}),
|
32 |
+
**translations.get('DISCOURSE', {}),
|
33 |
+
**translations.get('ACTIVITIES', {}),
|
34 |
+
**translations.get('FEEDBACK', {}),
|
35 |
+
**translations.get('TEXT_TYPES', {}),
|
36 |
+
**translations.get('CURRENT_SITUATION', {})
|
37 |
+
}
|
38 |
+
|
39 |
+
# Nueva función para obtener traducciones específicas del landing page
|
40 |
+
def get_landing_translations(lang_code):
|
41 |
+
# Asegurarse de que lang_code sea válido
|
42 |
+
if lang_code not in ['es', 'en', 'uk']:
|
43 |
+
print(f"Invalid lang_code: {lang_code}. Defaulting to 'es'")
|
44 |
+
lang_code = 'es'
|
45 |
+
|
46 |
+
try:
|
47 |
+
# Importar dinámicamente el módulo de traducción del landing page
|
48 |
+
from .landing_translations import LANDING_TRANSLATIONS
|
49 |
+
|
50 |
+
# Asegurarse de que el idioma esté disponible, si no usar español como fallback
|
51 |
+
if lang_code not in LANDING_TRANSLATIONS:
|
52 |
+
logger.warning(f"Landing translations for {lang_code} not found. Falling back to Spanish.")
|
53 |
+
lang_code = 'es'
|
54 |
+
|
55 |
+
return LANDING_TRANSLATIONS[lang_code]
|
56 |
+
except ImportError:
|
57 |
+
logger.warning("Landing translations module not found. Using default translations.")
|
58 |
+
# Crear un conjunto mínimo de traducciones por defecto
|
59 |
+
return {
|
60 |
+
'select_language': 'Select language' if lang_code == 'en' else 'Selecciona tu idioma' if lang_code == 'es' else 'Виберіть мову',
|
61 |
+
'login': 'Login' if lang_code == 'en' else 'Iniciar Sesión' if lang_code == 'es' else 'Увійти',
|
62 |
+
'register': 'Sign Up' if lang_code == 'en' else 'Registrarse' if lang_code == 'es' else 'Зареєструватися',
|
63 |
+
# Añadir más traducciones por defecto si es necesario
|
64 |
+
}
|
translations/en.py
ADDED
@@ -0,0 +1,341 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# translations/en.py
|
2 |
+
|
3 |
+
COMMON = {
|
4 |
+
# A
|
5 |
+
'initial_instruction': "To start a new semantic analysis, upload a new text file (.txt)",
|
6 |
+
'analysis_complete': "Analysis complete and saved. To perform a new analysis, upload another file.",
|
7 |
+
'current_analysis_message': "Showing analysis of file: {}. To perform a new analysis, please upload another file.",
|
8 |
+
'upload_prompt': "Attach a file to start the analysis",
|
9 |
+
'analysis_completed': "Analysis completed",
|
10 |
+
'analysis_section': "Semantic Analysis",
|
11 |
+
'analyze_document': 'Analyze document',
|
12 |
+
'analysis_saved_success': 'Analysis saved successfully',
|
13 |
+
'analysis_save_error': 'Error saving the analysis',
|
14 |
+
'analyze_button': "Analyze text",
|
15 |
+
'analyzing_doc': "Analyzing document",
|
16 |
+
'activities_message':"Activities messages",
|
17 |
+
'activities_placeholder':"Activities placeholder",
|
18 |
+
'analysis_placeholder':"Analysis placeholder",
|
19 |
+
'analyze_button' : "Analyze",
|
20 |
+
'analysis_types_chart' : "Analyze type chart",
|
21 |
+
'analysis_from': "Analysis carried out on",
|
22 |
+
# C
|
23 |
+
'chat_title': "Analysis Chat",
|
24 |
+
'export_button': "Export Current Analysis",
|
25 |
+
'export_success': "Analysis and chat exported successfully.",
|
26 |
+
'export_error': "There was a problem exporting the analysis and chat.",
|
27 |
+
'get_text': "Get text.",
|
28 |
+
'hello': "Hello",
|
29 |
+
# L
|
30 |
+
'logout': "End session.",
|
31 |
+
'loading_data': "Loading data",
|
32 |
+
'load_selected_file': 'Load selected file',
|
33 |
+
# N
|
34 |
+
'no_analysis': "No analysis available. Use the chat to perform an analysis.",
|
35 |
+
'nothing_to_export': "No analysis or chat to export.",
|
36 |
+
'results_title': "Analysis Results",
|
37 |
+
'select_language': "Language select",
|
38 |
+
'student_activities':"Student activities",
|
39 |
+
# T
|
40 |
+
'total_analyses': "Total analyses",
|
41 |
+
# W
|
42 |
+
'welcome': "Welcome to AIdeaText"
|
43 |
+
}
|
44 |
+
|
45 |
+
TABS = {
|
46 |
+
'current_situation_tab': "Current situation",
|
47 |
+
'morpho_tab': "Morphosyntactic analysis",
|
48 |
+
'semantic_live_tab': "Semantic live",
|
49 |
+
'semantic_tab': "Semantic analysis",
|
50 |
+
'discourse_live_tab': "Discourse live",
|
51 |
+
'discourse_tab': "Discourse analysis",
|
52 |
+
'activities_tab': "My activities",
|
53 |
+
'feedback_tab': "Feedback form"
|
54 |
+
}
|
55 |
+
|
56 |
+
CURRENT_SITUATION = {
|
57 |
+
'title': "My Current Situation",
|
58 |
+
'input_prompt': "Write or paste your text here:",
|
59 |
+
'analyze_button': "Analyze my writing",
|
60 |
+
'processing': "Analyzing...",
|
61 |
+
'analysis_error': "Error analyzing text",
|
62 |
+
'help': "We will analyze your text to know its current status", # <-- Añadir esta línea
|
63 |
+
|
64 |
+
# Radio buttons para tipo de texto
|
65 |
+
'text_type_header': "Text type",
|
66 |
+
'text_type_help': "Select the type of text to adjust the evaluation criteria",
|
67 |
+
|
68 |
+
# Métricas
|
69 |
+
'vocabulary_label': "Vocabulary",
|
70 |
+
'vocabulary_help': "Richness and variety of vocabulary",
|
71 |
+
'structure_label': "Structure",
|
72 |
+
'structure_help': "Organization and complexity of sentences",
|
73 |
+
'cohesion_label': "Cohesion",
|
74 |
+
'cohesion_help': "Connection and fluidity between ideas",
|
75 |
+
'clarity_label': "Clarity",
|
76 |
+
'clarity_help': "Ease of understanding the text",
|
77 |
+
|
78 |
+
# Estados de métricas
|
79 |
+
'metric_improvement': "⚠️ Needs improvement",
|
80 |
+
'metric_acceptable': "📈 Acceptable",
|
81 |
+
'metric_optimal': "✅ Optimal",
|
82 |
+
'metric_target': "Goal: {:.2f}",
|
83 |
+
|
84 |
+
# Errores
|
85 |
+
'error_interface': "An error occurred while loading the interface",
|
86 |
+
'error_results': "Error displaying results",
|
87 |
+
'error_chart': "Error displaying chart"
|
88 |
+
}
|
89 |
+
|
90 |
+
MORPHOSYNTACTIC = {
|
91 |
+
#A
|
92 |
+
'analyze_button': "Analyze text",
|
93 |
+
'arc_diagram': "Syntactic analysis: Arc diagram",
|
94 |
+
#C
|
95 |
+
'count': "Count",
|
96 |
+
#D
|
97 |
+
'dependency': "Dependency",
|
98 |
+
'dep': "Dependency",
|
99 |
+
#E
|
100 |
+
'error_message': "There was a problem saving the analysis. Please try again.",
|
101 |
+
'examples': "Examples",
|
102 |
+
#G
|
103 |
+
'grammatical_category': "Grammatical category",
|
104 |
+
#L
|
105 |
+
'lemma': "Lemma",
|
106 |
+
'legend': "Legend: Grammatical categories",
|
107 |
+
#O
|
108 |
+
'objects': "Objects",
|
109 |
+
#P
|
110 |
+
'pos_analysis': "Part of Speech Analysis",
|
111 |
+
'percentage': "Percentage",
|
112 |
+
#N
|
113 |
+
'no_results': "No results available. Please perform an analysis first.",
|
114 |
+
#M
|
115 |
+
'morpho_analyze_button': 'Morphosyntactic Analysis',
|
116 |
+
'morpho_title': "AIdeaText - Morphological analysis ",
|
117 |
+
'morpho_initial_message': "This is a general purpose chatbot, but it has a specific function for visual text analysis: generating arc diagrams. To produce them, enter the following command /analisis_morfosintactico [followed by brackets inside which you must place the text you want to analyze]",
|
118 |
+
'morpho_input_label': "Enter a text to analyze (max 30 words):",
|
119 |
+
'morpho_input_placeholder': "morphosyntax placeholder",
|
120 |
+
'morphosyntactic_analysis_completed': 'Morphosyntactic analysis completed. Please review the results in the following section.',
|
121 |
+
'morphological_analysis': "Morphological Analysis",
|
122 |
+
'morphology': "Morphology",
|
123 |
+
'morph': "Morphology",
|
124 |
+
#R
|
125 |
+
'root': "Root",
|
126 |
+
'repeated_words': "Repeated words",
|
127 |
+
#S
|
128 |
+
'sentence': "Sentence",
|
129 |
+
'success_message': "Analysis saved successfully.",
|
130 |
+
'sentence_structure': "Sentence Structure",
|
131 |
+
'subjects': "Subjects",
|
132 |
+
#V
|
133 |
+
'verbs': "Verbs",
|
134 |
+
#T
|
135 |
+
'title': "AIdeaText - Morphological and Syntactic Analysis",
|
136 |
+
'tag': "Tag",
|
137 |
+
#W
|
138 |
+
'warning_message': "Please enter a text to analyze.",
|
139 |
+
'word': "Word",
|
140 |
+
'processing': 'Processing...',
|
141 |
+
'error_processing': 'Error processing',
|
142 |
+
'morphosyntactic_analysis_error': 'Error in morphosyntactic analysis',
|
143 |
+
'morphosyntactic_analysis_completed': 'Morphosyntactic analysis completed'
|
144 |
+
}
|
145 |
+
|
146 |
+
SEMANTIC = {
|
147 |
+
# A
|
148 |
+
|
149 |
+
# C
|
150 |
+
'chat_title': "Semantic Analysis Chat",
|
151 |
+
'chat_placeholder': "Ask a question or use a command (/summary, /entities, /sentiment, /topics, /concept_graph, /entity_graph, /topic_graph)",
|
152 |
+
'clear_chat': "Clear chat",
|
153 |
+
'conceptual_relations': "Conceptual Relations",
|
154 |
+
# D
|
155 |
+
'delete_file': "Delete file",
|
156 |
+
# E
|
157 |
+
'error_message': "There was a problem saving the semantic analysis. Please try again.",
|
158 |
+
# F
|
159 |
+
'file_uploader': "Or upload a text file",
|
160 |
+
'file_upload_success': "File uploaded and saved successfully",
|
161 |
+
'file_upload_error': 'Error uploading file',
|
162 |
+
'file_section': "Files",
|
163 |
+
'file_loaded_success': "File loaded successfully",
|
164 |
+
'file_load_error': "Error loading file",
|
165 |
+
'file_upload_error': "Error uploading and saving file",
|
166 |
+
'file_deleted_success': 'File deleted successfully',
|
167 |
+
'file_delete_error': 'Error deleting file',
|
168 |
+
# G
|
169 |
+
'graph_title': "Semantic Analysis Visualization",
|
170 |
+
# I
|
171 |
+
'identified_entities': "Identified Entities",
|
172 |
+
# K
|
173 |
+
'key_concepts': "Key Concepts",
|
174 |
+
# N
|
175 |
+
'no_analysis': "No analysis available. Please upload or select a file.",
|
176 |
+
'no_results': "No results available. Please perform an analysis first.",
|
177 |
+
'no_file': "Please upload a file to start the analysis.",
|
178 |
+
'no_file_selected': "Please select an archive to start the analysis.",
|
179 |
+
# S
|
180 |
+
'semantic_title': "Semantic Analysis",
|
181 |
+
'semantic_initial_message': "This is a general-purpose chatbot, but it has a specific function for visual text analysis: it generates a graph with the main entities of the text. To produce it, enter a text file in txt, pdf, doc, docx or odt format and press the 'analyze file' button. After generating the graph, you can interact with the chat based on the document.",
|
182 |
+
'send_button': "Send",
|
183 |
+
'select_saved_file': "Select saved file",
|
184 |
+
'success_message': "Semantic analysis saved successfully.",
|
185 |
+
'semantic_analyze_button': 'Semantic Analysis',
|
186 |
+
'semantic_export_button': 'Export Semantic Analysis',
|
187 |
+
'semantic_new_button': 'New Semantic Analysis',
|
188 |
+
'semantic_file_uploader': 'Upload a text file for semantic analysis',
|
189 |
+
# T
|
190 |
+
'text_input_label': "Enter a text to analyze (max. 5,000 words):",
|
191 |
+
'text_input_placeholder': "The purpose of this application is to improve your writing skills...",
|
192 |
+
'title': "AIdeaText - Semantic Analysis",
|
193 |
+
# U
|
194 |
+
'upload_file': "Upload file",
|
195 |
+
# W
|
196 |
+
'warning_message': "Please enter a text or upload a file to analyze."
|
197 |
+
}
|
198 |
+
|
199 |
+
DISCOURSE = {
|
200 |
+
'discourse_title': "AIdeaText - Discourse Analysis",
|
201 |
+
'file_uploader1': "Upload text file 1 (Pattern)",
|
202 |
+
'file_uploader2': "Upload text file 2 (Comparison)",
|
203 |
+
'discourse_analyze_button': "Discourse Analysis",
|
204 |
+
'discourse_initial_message': "This is a general purpose chatbot, but it has a specific function for visual text analysis: it generates two graphs with the main entities of each file to make a comparison between both texts. To produce it, enter one file first and then another in txt, pdf, doc, docx or odt format and press the 'analyze file' button. After the graph is generated, you can interact with the chat based on the document.",
|
205 |
+
'analyze_button': "Analyze texts",
|
206 |
+
'comparison': "Comparison of Semantic Relations",
|
207 |
+
'success_message': "Discourse analysis saved successfully.",
|
208 |
+
'error_message': "There was a problem saving the discourse analysis. Please try again.",
|
209 |
+
'warning_message': "Please upload both files to analyze.",
|
210 |
+
'no_results': "No results available. Please perform an analysis first.",
|
211 |
+
'key_concepts': "Key Concepts",
|
212 |
+
'graph_not_available': "The graph is not available.",
|
213 |
+
'concepts_not_available': "Key concepts are not available.",
|
214 |
+
'comparison_not_available': "The comparison is not available.",
|
215 |
+
'warning_message': "Please enter a text or upload a file to analyze.",
|
216 |
+
'morphosyntax_history': "Morphosyntax history",
|
217 |
+
'analysis_of': "Analysis of"
|
218 |
+
|
219 |
+
}
|
220 |
+
|
221 |
+
ACTIVITIES = {
|
222 |
+
'analysis_types_chart_title': "Types of analyses performed",
|
223 |
+
'analysis_types_chart_x': "Analysis type",
|
224 |
+
'analysis_types_chart_y': "Count",
|
225 |
+
'analysis_from': "Analysis from",
|
226 |
+
'assistant': "Assistant",
|
227 |
+
'activities_summary': "Activities and Progress Summary",
|
228 |
+
'chat_history_expander': "Chat History",
|
229 |
+
'chat_from': "Chat from",
|
230 |
+
'combined_graph': "Combined Graph",
|
231 |
+
'conceptual_relations_graph': "Conceptual Relations Graph",
|
232 |
+
'conversation': "Conversation",
|
233 |
+
'discourse_analyses_expander': "Discourse Analyses History",
|
234 |
+
'discourse_analyses': "Discourse Analyses",
|
235 |
+
'discourse_history': "Discourse Analysis History",
|
236 |
+
'document': "Document",
|
237 |
+
'data_load_error': "Error loading student data",
|
238 |
+
'graph_display_error': "Could not display the graph",
|
239 |
+
'graph_doc1': "Graph document 1",
|
240 |
+
'graph_doc2': "Graph document 2",
|
241 |
+
'key_concepts': "Key concepts",
|
242 |
+
'loading_data': "Loading student data...",
|
243 |
+
'morphological_analysis': "Morphological Analysis",
|
244 |
+
'morphosyntax_analyses_expander': "Morphosyntactic Analyses History",
|
245 |
+
'morphosyntax_history': "Morphosyntactic Analysis History",
|
246 |
+
'no_arc_diagram': "No arc diagram found for this analysis.",
|
247 |
+
'no_chat_history': "No conversations with the ChatBot were found.",
|
248 |
+
'no_data_warning': "No analysis data found for this student.",
|
249 |
+
'progress_of': "Progress of",
|
250 |
+
'semantic_analyses': "Semantic Analyses",
|
251 |
+
'semantic_analyses_expander': "Semantic Analyses History",
|
252 |
+
'semantic_history': "Semantic Analysis History",
|
253 |
+
'show_debug_data': "Show debug data",
|
254 |
+
'student_debug_data': "Student data (for debugging):",
|
255 |
+
'summary_title': "Activities Summary",
|
256 |
+
'title': "Activities",
|
257 |
+
'timestamp': "Timestamp",
|
258 |
+
'total_analyses': "Total analyses performed:",
|
259 |
+
'try_analysis': "Try performing some text analyses first.",
|
260 |
+
'user': "User"
|
261 |
+
}
|
262 |
+
|
263 |
+
FEEDBACK = {
|
264 |
+
'email': "Email",
|
265 |
+
'feedback': "Feedback",
|
266 |
+
'feedback_title': "Feedback form",
|
267 |
+
'feedback_error': "There was a problem submitting the form. Please try again.",
|
268 |
+
'feedback_success': "Thank for your feedback",
|
269 |
+
'complete_all_fields': "Please, complete all fields",
|
270 |
+
'name': "Name",
|
271 |
+
'submit': "Submit"
|
272 |
+
}
|
273 |
+
|
274 |
+
|
275 |
+
CHATBOT_TRANSLATIONS = {
|
276 |
+
'chat_title': "AIdeaText Assistant",
|
277 |
+
'input_placeholder': "Any questions?",
|
278 |
+
'initial_message': "Hi! I'm your assistant. How can I help?",
|
279 |
+
'expand_chat': "Open assistant",
|
280 |
+
'clear_chat': "Clear chat",
|
281 |
+
'processing': "Processing...",
|
282 |
+
'error_message': "Sorry, an error occurred"
|
283 |
+
}
|
284 |
+
|
285 |
+
TEXT_TYPES = {
|
286 |
+
'descriptive': [
|
287 |
+
'What are you describing?',
|
288 |
+
'What are its main characteristics?',
|
289 |
+
'How does it look, sound, smell, or feel?',
|
290 |
+
'What makes it unique or special?'
|
291 |
+
],
|
292 |
+
'narrative': [
|
293 |
+
'Who is the protagonist?',
|
294 |
+
'Where and when does the story take place?',
|
295 |
+
'What event starts the action?',
|
296 |
+
'What happens next?',
|
297 |
+
'How does the story end?'
|
298 |
+
],
|
299 |
+
'expository': [
|
300 |
+
'What is the main topic?',
|
301 |
+
'What important aspects do you want to explain?',
|
302 |
+
'Can you provide examples or data to support your explanation?',
|
303 |
+
'How does this topic relate to other concepts?'
|
304 |
+
],
|
305 |
+
'argumentative': [
|
306 |
+
'What is your main thesis or argument?',
|
307 |
+
'What are your supporting arguments?',
|
308 |
+
'What evidence do you have to back up your arguments?',
|
309 |
+
'What are the counterarguments and how do you refute them?',
|
310 |
+
'What is your conclusion?'
|
311 |
+
],
|
312 |
+
'instructive': [
|
313 |
+
'What task or process are you explaining?',
|
314 |
+
'What materials or tools are needed?',
|
315 |
+
'What are the steps to follow?',
|
316 |
+
'Are there any important precautions or tips to mention?'
|
317 |
+
],
|
318 |
+
'pitch': [
|
319 |
+
'What?',
|
320 |
+
'What for?',
|
321 |
+
'For whom?',
|
322 |
+
'How?'
|
323 |
+
]
|
324 |
+
}
|
325 |
+
|
326 |
+
# Configuration of the language model for English
|
327 |
+
NLP_MODEL = 'en_core_web_lg'
|
328 |
+
|
329 |
+
# Esta línea es crucial:
|
330 |
+
TRANSLATIONS = {
|
331 |
+
'COMMON': COMMON,
|
332 |
+
'TABS': TABS,
|
333 |
+
'MORPHOSYNTACTIC': MORPHOSYNTACTIC,
|
334 |
+
'SEMANTIC': SEMANTIC,
|
335 |
+
'DISCOURSE': DISCOURSE,
|
336 |
+
'ACTIVITIES': ACTIVITIES,
|
337 |
+
'FEEDBACK': FEEDBACK,
|
338 |
+
'TEXT_TYPES': TEXT_TYPES,
|
339 |
+
'CURRENT_SITUATION': CURRENT_SITUATION, # Añadir esta línea
|
340 |
+
'NLP_MODEL': NLP_MODEL
|
341 |
+
}
|
translations/es.py
ADDED
@@ -0,0 +1,318 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# translations/es.py
|
2 |
+
|
3 |
+
COMMON = {
|
4 |
+
'initial_instruction': "Para comenzar un nuevo análisis semántico, cargue un nuevo archivo de texto (.txt)",
|
5 |
+
'analysis_complete': "Análisis completo y guardado. Para realizar un nuevo análisis, cargue otro archivo.",
|
6 |
+
'current_analysis_message': "Mostrando análisis del archivo: {}. Para realizar un nuevo análisis, cargue otro archivo.",
|
7 |
+
'upload_prompt': "Cargue un archivo para comenzar el análisis",
|
8 |
+
'analyze_button' : "Analizar",
|
9 |
+
'activities_message':"Mensajes de las actividades",
|
10 |
+
'activities_placeholder':"Espacio de las actividades",
|
11 |
+
'analysis_placeholder':"Marcador de posición del análisis",
|
12 |
+
'analysis_types_chart' : "Gráfico para el tipo de análisis",
|
13 |
+
'analysis_from': "Análisis realizado el ",
|
14 |
+
'welcome': "Bienvenido a AIdeaText",
|
15 |
+
'select_language': "Selecciona un idioma",
|
16 |
+
'hello': "Hola",
|
17 |
+
'chat_title': "Chat de Análisis",
|
18 |
+
'results_title': "Resultados del Análisis",
|
19 |
+
'export_button': "Exportar Análisis Actual",
|
20 |
+
'no_analysis': "No hay análisis disponible. Utiliza el chat para realizar un análisis.",
|
21 |
+
'export_success': "Análisis y chat exportados correctamente.",
|
22 |
+
'export_error': "Hubo un problema al exportar el análisis y el chat.",
|
23 |
+
'nothing_to_export': "No hay análisis o chat para exportar.",
|
24 |
+
# L
|
25 |
+
'loading_data': "Cargando datos",
|
26 |
+
'load_selected_file': 'Load selected file',
|
27 |
+
'logout': "Cerrar sesión.",
|
28 |
+
# S
|
29 |
+
'student_activities':"Actividades del estudiante",
|
30 |
+
'get_text': "Obtener texto.",
|
31 |
+
#T
|
32 |
+
'total_analyses': "Analisis total"
|
33 |
+
}
|
34 |
+
|
35 |
+
TABS = {
|
36 |
+
'current_situation_tab': "Mi situación actual",
|
37 |
+
'morpho_tab': "Análisis morfosintáctico",
|
38 |
+
'semantic_live_tab': "Semántica en vivo",
|
39 |
+
'semantic_tab': "Análisis semántico",
|
40 |
+
'discourse_live_tab': "Discurso en vivo",
|
41 |
+
'discourse_tab': "Análisis del discurso",
|
42 |
+
'activities_tab': "Mis actividades",
|
43 |
+
'feedback_tab': "Formulario de comentarios"
|
44 |
+
}
|
45 |
+
|
46 |
+
CURRENT_SITUATION = {
|
47 |
+
'title': "Mi Situación Actual",
|
48 |
+
'input_prompt': "Escribe o pega tu texto aquí:",
|
49 |
+
'analyze_button': "Analizar mi escritura",
|
50 |
+
'processing': "Analizando...",
|
51 |
+
'analysis_error': "Error al analizar el texto",
|
52 |
+
'help': "Analizaremos tu texto para conocer su estado actual", # <-- Añadir esta línea
|
53 |
+
|
54 |
+
# Radio buttons para tipo de texto
|
55 |
+
'text_type_header': "Tipo de texto",
|
56 |
+
'text_type_help': "Selecciona el tipo de texto para ajustar los criterios de evaluación",
|
57 |
+
|
58 |
+
# Métricas
|
59 |
+
'vocabulary_label': "Vocabulario",
|
60 |
+
'vocabulary_help': "Riqueza y variedad del vocabulario",
|
61 |
+
'structure_label': "Estructura",
|
62 |
+
'structure_help': "Organización y complejidad de oraciones",
|
63 |
+
'cohesion_label': "Cohesión",
|
64 |
+
'cohesion_help': "Conexión y fluidez entre ideas",
|
65 |
+
'clarity_label': "Claridad",
|
66 |
+
'clarity_help': "Facilidad de comprensión del texto",
|
67 |
+
|
68 |
+
# Estados de métricas
|
69 |
+
'metric_improvement': "⚠️ Por mejorar",
|
70 |
+
'metric_acceptable': "📈 Aceptable",
|
71 |
+
'metric_optimal': "✅ Óptimo",
|
72 |
+
'metric_target': "Meta: {:.2f}",
|
73 |
+
|
74 |
+
# Errores
|
75 |
+
'error_interface': "Ocurrió un error al cargar la interfaz",
|
76 |
+
'error_results': "Error al mostrar los resultados",
|
77 |
+
'error_chart': "Error al mostrar el gráfico"
|
78 |
+
}
|
79 |
+
|
80 |
+
MORPHOSYNTACTIC = {
|
81 |
+
'morpho_title': "AIdeaText - Análisis morfológico y sintáctico",
|
82 |
+
'morpho_initial_message': "Este es un chatbot de propósito general, pero tiene una función específica para el análisis visual de textos: generación de diagramas de arco. Para producirlos, ingrese el siguiente comando /analisis_morfosintactico [seguido de corchetes dentro de los cuales debe colocar el texto que quiere analizar]",
|
83 |
+
'morpho_input_label': "Ingrese un texto para analizar (máximo 30 palabras)",
|
84 |
+
'morphosyntactic_analysis_completed': "Análisis morfosintáctico completado. Por favor, revisa los resultados en la siguiente sección.",
|
85 |
+
'morpho_analyze_button': 'Análisis Morfosintáctico',
|
86 |
+
'repeated_words': "Palabras repetidas",
|
87 |
+
'legend': "Leyenda: Categorías gramaticales",
|
88 |
+
#A
|
89 |
+
'arc_diagram': "Análisis sintáctico: Diagrama de arco",
|
90 |
+
#
|
91 |
+
'sentence': "Oración",
|
92 |
+
'success_message': "Análisis guardado correctamente.",
|
93 |
+
'error_message': "Hubo un problema al guardar el análisis. Por favor, inténtelo de nuevo.",
|
94 |
+
'warning_message': "Por favor, ingrese un texto para analizar.",
|
95 |
+
'no_results': "No hay resultados disponibles. Por favor, realice un análisis primero.",
|
96 |
+
'pos_analysis': "Análisis de categorías gramaticales",
|
97 |
+
'morphological_analysis': "Análisis morfológico",
|
98 |
+
'sentence_structure': "Estructura de oraciones",
|
99 |
+
'word': "Palabra",
|
100 |
+
'count': "Cantidad",
|
101 |
+
'percentage': "Porcentaje",
|
102 |
+
'examples': "Ejemplos",
|
103 |
+
'lemma': "Lema",
|
104 |
+
'tag': "Etiqueta",
|
105 |
+
'dep': "Dependencia",
|
106 |
+
'morph': "Morfología",
|
107 |
+
'root': "Raíz",
|
108 |
+
'subjects': "Sujetos",
|
109 |
+
'objects': "Objetos",
|
110 |
+
'verbs': "Verbos",
|
111 |
+
'grammatical_category': "Categoría gramatical",
|
112 |
+
'dependency': "Dependencia",
|
113 |
+
'morphology': "Morfología",
|
114 |
+
'processing': 'Procesando...',
|
115 |
+
'error_processing': 'Error al procesar',
|
116 |
+
'morphosyntactic_analysis_error': 'Error en el análisis morfosintáctico',
|
117 |
+
'morphosyntactic_analysis_completed': 'Análisis morfosintáctico completado'
|
118 |
+
}
|
119 |
+
|
120 |
+
SEMANTIC = {
|
121 |
+
# A
|
122 |
+
'analysis_completed': "Análisis terminado",
|
123 |
+
'analysis_section': "Análisis Semántico",
|
124 |
+
'analyze_document': 'Analizar documento',
|
125 |
+
'analysis_saved_success': 'Análisis guardado con éxito',
|
126 |
+
'analysis_save_error': 'Error al guardar el análisis',
|
127 |
+
'analyze_button': "Analizar texto",
|
128 |
+
'analyzing_doc': "Analizando documento",
|
129 |
+
# C
|
130 |
+
'chat_title': "Chat de Análisis Semántico",
|
131 |
+
'chat_placeholder': "Haz una pregunta o usa un comando (/resumen, /entidades, /sentimiento, /temas, /grafo_conceptos, /grafo_entidades, /grafo_temas)",
|
132 |
+
'clear_chat': "Limpiar chat",
|
133 |
+
'conceptual_relations': "Relaciones Conceptuales",
|
134 |
+
# D
|
135 |
+
'delete_file': "Borrar archivo",
|
136 |
+
# E
|
137 |
+
'error_message': "Hubo un problema al guardar el análisis semántico. Por favor, inténtelo de nuevo.",
|
138 |
+
# F
|
139 |
+
'file_uploader': "O cargue un archivo de texto",
|
140 |
+
'file_upload_success': "Archivo subido y guardado exitosamente",
|
141 |
+
'file_upload_error': 'Error al cargar el archivo',
|
142 |
+
'file_section': "Archivos",
|
143 |
+
'file_loaded_success': "Archivo cargado exitosamente",
|
144 |
+
'file_load_error': "Error al cargar el archivo",
|
145 |
+
'file_upload_error': "Error al subir y guardar el archivo",
|
146 |
+
'file_deleted_success': 'Archivo borrado con éxito',
|
147 |
+
'file_delete_error': 'Error al borrar el archivo',
|
148 |
+
# G
|
149 |
+
'graph_title': "Visualización de Análisis Semántico",
|
150 |
+
# I
|
151 |
+
'identified_entities': "Entidades Identificadas",
|
152 |
+
# K
|
153 |
+
'key_concepts': "Conceptos Clave",
|
154 |
+
# L
|
155 |
+
'load_selected_file': 'Cargar archivo seleccionado',
|
156 |
+
# N
|
157 |
+
'no_analysis': "No hay análisis disponible. Por favor, cargue o seleccione un archivo.",
|
158 |
+
'no_results': "No hay resultados disponibles. Por favor, realice un análisis primero.",
|
159 |
+
'no_file': "Por favor, cargue un archivo para comenzar el análisis.",
|
160 |
+
'no_file_selected': "Por favor, seleccione un archivo para comenzar el análisis.",
|
161 |
+
# S
|
162 |
+
'semantic_initial_message': "Este es un chatbot de propósito general, pero tiene una función específica para el análisis visual de textos: genera un grafo con las principales entidades del texto. Para producirlo, ingrese un archivo de texto en formato txt, pdf, doc, docx o odt y pulse el botón 'analizar archivo'. Después de la generación del grafo puede interactuar con el chat en función del documento.",
|
163 |
+
'semantic_title': "Análisis Semántico",
|
164 |
+
'send_button': "Enviar",
|
165 |
+
'select_saved_file': "Seleccionar archivo guardado",
|
166 |
+
'success_message': "Análisis semántico guardado correctamente.",
|
167 |
+
'semantic_analyze_button': 'Análisis Semántico',
|
168 |
+
'semantic_export_button': 'Exportar Análisis Semántico',
|
169 |
+
'semantic_new_button': 'Nuevo Análisis Semántico',
|
170 |
+
'semantic_file_uploader': 'Ingresar un archivo de texto para análisis semántico',
|
171 |
+
# T
|
172 |
+
'text_input_label': "Ingrese un texto para analizar (máx. 5,000 palabras):",
|
173 |
+
'text_input_placeholder': "El objetivo de esta aplicación es que mejore sus habilidades de redacción...",
|
174 |
+
'title': "AIdeaText - Análisis semántico",
|
175 |
+
# U
|
176 |
+
'upload_file': "Agregar un archivo",
|
177 |
+
# W
|
178 |
+
'warning_message': "Por favor, ingrese un texto o cargue un archivo para analizar."
|
179 |
+
}
|
180 |
+
|
181 |
+
DISCOURSE = {
|
182 |
+
'discourse_analyze_button': "Análisis del discurso",
|
183 |
+
'discourse_title': "AIdeaText - Análisis del discurso",
|
184 |
+
'discourse_initial_message': "Este es un chatbot de propósito general, pero tiene una función específica para el análisis visual de textos: genera dos grafos con las principales entidades de cada archivo para hacer una comparación entre ambos textos. Para producirlo, ingrese un archivo primero y otro después en formato txt, pdf, doc, docx o odt y pulse el botón 'analizar archivo'. Después de la generación del grafo puede interactuar con el chat en función del documento.",
|
185 |
+
'file_uploader1': "Cargar archivo de texto 1 (Patrón)",
|
186 |
+
'file_uploader2': "Cargar archivo de texto 2 (Comparación)",
|
187 |
+
'analyze_button': "Analizar textos",
|
188 |
+
'comparison': "Comparación de Relaciones Semánticas",
|
189 |
+
'success_message': "Análisis del discurso guardado correctamente.",
|
190 |
+
'error_message': "Hubo un problema al guardar el análisis del discurso. Por favor, inténtelo de nuevo.",
|
191 |
+
'warning_message': "Por favor, cargue ambos archivos para analizar.",
|
192 |
+
'no_results': "No hay resultados disponibles. Por favor, realice un análisis primero.",
|
193 |
+
'key_concepts': "Conceptos Clave",
|
194 |
+
'graph_not_available': "El gráfico no está disponible.",
|
195 |
+
'concepts_not_available': "Los conceptos clave no están disponibles.",
|
196 |
+
'comparison_not_available': "La comparación no está disponible."
|
197 |
+
}
|
198 |
+
|
199 |
+
ACTIVITIES = {
|
200 |
+
'analysis_types_chart_title': "Tipos de análisis realizados",
|
201 |
+
'analysis_types_chart_x': "Tipo de análisis",
|
202 |
+
'analysis_types_chart_y': "Cantidad",
|
203 |
+
'analysis_from': "Análisis del",
|
204 |
+
'assistant': "Asistente",
|
205 |
+
'activities_summary': "Resumen de Actividades y Progreso",
|
206 |
+
'chat_history_expander': "Historial de Chat",
|
207 |
+
'chat_from': "Chat del",
|
208 |
+
'combined_graph': "Gráfico combinado",
|
209 |
+
'conceptual_relations_graph': "Gráfico de relaciones conceptuales",
|
210 |
+
'conversation': "Conversación",
|
211 |
+
'discourse_analyses_expander': "Historial de Análisis del Discurso",
|
212 |
+
'discourse_analyses': "Análisis del Discurso",
|
213 |
+
'discourse_history': "Histórico de Análisis del Discurso",
|
214 |
+
'document': "Documento",
|
215 |
+
'data_load_error': "Error al cargar los datos del estudiante",
|
216 |
+
'graph_display_error': "No se pudo mostrar el gráfico",
|
217 |
+
'graph_doc1': "Gráfico documento 1",
|
218 |
+
'graph_doc2': "Gráfico documento 2",
|
219 |
+
'key_concepts': "Conceptos clave",
|
220 |
+
'loading_data': "Cargando datos del estudiante...",
|
221 |
+
'morphological_analysis': "Análisis Morfológico",
|
222 |
+
'morphosyntax_analyses_expander': "Historial de Análisis Morfosintácticos",
|
223 |
+
'morphosyntax_history': "Histórico de Análisis Morfosintácticos",
|
224 |
+
'no_arc_diagram': "No se encontró diagrama de arco para este análisis.",
|
225 |
+
'no_chat_history': "No se encontraron conversaciones con el ChatBot.",
|
226 |
+
'no_data_warning': "No se encontraron datos de análisis para este estudiante.",
|
227 |
+
'progress_of': "Progreso de",
|
228 |
+
'semantic_analyses': "Análisis Semánticos",
|
229 |
+
'semantic_analyses_expander': "Historial de Análisis Semánticos",
|
230 |
+
'semantic_history': "Histórico de Análisis Semánticos",
|
231 |
+
'show_debug_data': "Mostrar datos de depuración",
|
232 |
+
'student_debug_data': "Datos del estudiante (para depuración):",
|
233 |
+
'summary_title': "Resumen de Actividades",
|
234 |
+
'title': "Actividades",
|
235 |
+
'timestamp': "Fecha y hora",
|
236 |
+
'total_analyses': "Total de análisis realizados:",
|
237 |
+
'try_analysis': "Intenta realizar algunos análisis de texto primero.",
|
238 |
+
'user': "Usuario"
|
239 |
+
}
|
240 |
+
|
241 |
+
FEEDBACK = {
|
242 |
+
'email': "Correo electrónico",
|
243 |
+
'feedback': "Retroalimentación",
|
244 |
+
'feedback_title': "Formulario de opinión",
|
245 |
+
'feedback_error': "Hubo un problema al enviar el formulario. Por favor, intenta de nuevo.",
|
246 |
+
'feedback_success': "Gracias por tu respuesta",
|
247 |
+
'complete_all_fields': "Por favor, completa todos los campos",
|
248 |
+
'name': "Nombre",
|
249 |
+
'submit': "Enviar"
|
250 |
+
}
|
251 |
+
|
252 |
+
CHATBOT_TRANSLATIONS = {
|
253 |
+
'chat_title': "Asistente AIdeaText",
|
254 |
+
'input_placeholder': "¿Tienes alguna pregunta?",
|
255 |
+
'initial_message': "¡Hola! Soy tu asistente. ¿En qué puedo ayudarte?",
|
256 |
+
'expand_chat': "Abrir asistente",
|
257 |
+
'clear_chat': "Limpiar chat",
|
258 |
+
'processing': "Procesando...",
|
259 |
+
'error_message': "Lo siento, ocurrió un error"
|
260 |
+
}
|
261 |
+
|
262 |
+
TEXT_TYPES = {
|
263 |
+
'descriptivo': [
|
264 |
+
'¿Qué estás describiendo?',
|
265 |
+
'¿Cuáles son sus características principales?',
|
266 |
+
'¿Cómo se ve, suena, huele o se siente?',
|
267 |
+
'¿Qué lo hace único o especial?'
|
268 |
+
],
|
269 |
+
'narrativo': [
|
270 |
+
'¿Quién es el protagonista?',
|
271 |
+
'¿Dónde y cuándo ocurre la historia?',
|
272 |
+
'¿Qué evento inicia la acción?',
|
273 |
+
'¿Qué sucede después?',
|
274 |
+
'¿Cómo termina la historia?'
|
275 |
+
],
|
276 |
+
'expositivo': [
|
277 |
+
'¿Cuál es el tema principal?',
|
278 |
+
'¿Qué aspectos importantes quieres explicar?',
|
279 |
+
'¿Puedes dar ejemplos o datos que apoyen tu explicación?',
|
280 |
+
'¿Cómo se relaciona este tema con otros conceptos?'
|
281 |
+
],
|
282 |
+
'argumentativo': [
|
283 |
+
'¿Cuál es tu tesis o argumento principal?',
|
284 |
+
'¿Cuáles son tus argumentos de apoyo?',
|
285 |
+
'¿Qué evidencias tienes para respaldar tus argumentos?',
|
286 |
+
'¿Cuáles son los contraargumentos y cómo los refutas?',
|
287 |
+
'¿Cuál es tu conclusión?'
|
288 |
+
],
|
289 |
+
'instructivo': [
|
290 |
+
'¿Qué tarea o proceso estás explicando?',
|
291 |
+
'¿Qué materiales o herramientas se necesitan?',
|
292 |
+
'¿Cuáles son los pasos a seguir?',
|
293 |
+
'¿Hay precauciones o consejos importantes que mencionar?'
|
294 |
+
],
|
295 |
+
'pitch': [
|
296 |
+
'¿Qué?',
|
297 |
+
'¿Para qué?',
|
298 |
+
'¿Para quién?',
|
299 |
+
'¿Cómo?'
|
300 |
+
]
|
301 |
+
}
|
302 |
+
|
303 |
+
# Configuración del modelo de lenguaje para español
|
304 |
+
NLP_MODEL = 'es_core_news_lg'
|
305 |
+
|
306 |
+
# Esta línea es crucial:
|
307 |
+
TRANSLATIONS = {
|
308 |
+
'COMMON': COMMON,
|
309 |
+
'TABS': TABS,
|
310 |
+
'MORPHOSYNTACTIC': MORPHOSYNTACTIC,
|
311 |
+
'SEMANTIC': SEMANTIC,
|
312 |
+
'DISCOURSE': DISCOURSE,
|
313 |
+
'ACTIVITIES': ACTIVITIES,
|
314 |
+
'FEEDBACK': FEEDBACK,
|
315 |
+
'TEXT_TYPES': TEXT_TYPES,
|
316 |
+
'CURRENT_SITUATION': CURRENT_SITUATION, # Añadir esta línea
|
317 |
+
'NLP_MODEL': NLP_MODEL
|
318 |
+
}
|
translations/landing_translations.py
ADDED
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# landing_translations.py
|
2 |
+
|
3 |
+
LANDING_TRANSLATIONS = {
|
4 |
+
'en': {
|
5 |
+
# Language selector
|
6 |
+
'select_language': "Select language - Selecciona tu idioma - Виберіть мову",
|
7 |
+
|
8 |
+
# Auth tabs
|
9 |
+
'login': "Login",
|
10 |
+
'register': "Sign Up",
|
11 |
+
|
12 |
+
# Login form
|
13 |
+
'email': "Email",
|
14 |
+
'password': "Password",
|
15 |
+
'login_button': "Login",
|
16 |
+
'invalid_credentials': "Invalid credentials",
|
17 |
+
|
18 |
+
# Registration form
|
19 |
+
'name': "Name",
|
20 |
+
'lastname': "Last Name",
|
21 |
+
'institution': "Institution",
|
22 |
+
'current_role': "Role in your institution",
|
23 |
+
'professor': "Professor",
|
24 |
+
'student': "Student",
|
25 |
+
'administrative': "Administrative",
|
26 |
+
'institutional_email': "Institutional email",
|
27 |
+
'interest_reason': "Why are you interested in trying AIdeaText?",
|
28 |
+
'submit_application': "Submit application",
|
29 |
+
'complete_all_fields': "Please complete all fields.",
|
30 |
+
'use_institutional_email': "Please use an institutional email.",
|
31 |
+
'application_sent': "Your application has been sent. We will contact you soon.",
|
32 |
+
'application_error': "There was a problem sending your application. Please try again later.",
|
33 |
+
|
34 |
+
# Info tabs
|
35 |
+
'use_cases': "Use Cases",
|
36 |
+
'presentation_videos': "Presentation Videos",
|
37 |
+
'academic_presentations': "Academic Presentations",
|
38 |
+
'event_photos': "Event Photos",
|
39 |
+
'version_control': "Version Control",
|
40 |
+
|
41 |
+
# Video selectors
|
42 |
+
'select_use_case': "Select a use case in English, Spanish or Ukrainian:",
|
43 |
+
'select_presentation': "Select a presentation:",
|
44 |
+
|
45 |
+
# Version control info
|
46 |
+
'latest_version_title': "Latest Version Updates",
|
47 |
+
'version_updates': [
|
48 |
+
"Improved interface for a better user experience",
|
49 |
+
"Optimization of morphosyntactic analysis",
|
50 |
+
"Support for Ukrainian language",
|
51 |
+
"New discourse analysis module",
|
52 |
+
"Integrated chat system for support"
|
53 |
+
]
|
54 |
+
},
|
55 |
+
'es': {
|
56 |
+
# Language selector
|
57 |
+
'select_language': "Selecciona tu idioma - Select language - Виберіть мову",
|
58 |
+
|
59 |
+
# Auth tabs
|
60 |
+
'login': "Iniciar Sesión",
|
61 |
+
'register': "Registrarse",
|
62 |
+
|
63 |
+
# Login form
|
64 |
+
'email': "Correo electrónico",
|
65 |
+
'password': "Contraseña",
|
66 |
+
'login_button': "Iniciar Sesión",
|
67 |
+
'invalid_credentials': "Credenciales incorrectas",
|
68 |
+
|
69 |
+
# Registration form
|
70 |
+
'name': "Nombre",
|
71 |
+
'lastname': "Apellidos",
|
72 |
+
'institution': "Institución",
|
73 |
+
'current_role': "Rol en la institución donde labora",
|
74 |
+
'professor': "Profesor",
|
75 |
+
'student': "Estudiante",
|
76 |
+
'administrative': "Administrativo",
|
77 |
+
'institutional_email': "Correo electrónico de su institución",
|
78 |
+
'interest_reason': "¿Por qué estás interesado en probar AIdeaText?",
|
79 |
+
'submit_application': "Enviar solicitud",
|
80 |
+
'complete_all_fields': "Por favor, completa todos los campos.",
|
81 |
+
'use_institutional_email': "Por favor, utiliza un correo electrónico institucional.",
|
82 |
+
'application_sent': "Tu solicitud ha sido enviada. Te contactaremos pronto.",
|
83 |
+
'application_error': "Hubo un problema al enviar tu solicitud. Por favor, intenta de nuevo más tarde.",
|
84 |
+
|
85 |
+
# Info tabs
|
86 |
+
'use_cases': "Casos de uso",
|
87 |
+
'presentation_videos': "Videos de presentaciones",
|
88 |
+
'academic_presentations': "Ponencias académicas",
|
89 |
+
'event_photos': "Fotos de eventos",
|
90 |
+
'version_control': "Control de versiones",
|
91 |
+
|
92 |
+
# Video selectors
|
93 |
+
'select_use_case': "Selecciona un caso de uso en español, inglés o ucraniano:",
|
94 |
+
'select_presentation': "Selecciona una conferencia:",
|
95 |
+
|
96 |
+
# Version control info
|
97 |
+
'latest_version_title': "Novedades de la versión actual",
|
98 |
+
'version_updates': [
|
99 |
+
"Interfaz mejorada para una mejor experiencia de usuario",
|
100 |
+
"Optimización del análisis morfosintáctico",
|
101 |
+
"Soporte para el idioma ucraniano",
|
102 |
+
"Nuevo módulo de análisis del discurso",
|
103 |
+
"Sistema de chat integrado para soporte"
|
104 |
+
]
|
105 |
+
},
|
106 |
+
'uk': {
|
107 |
+
# Language selector
|
108 |
+
'select_language': "Виберіть мову - Selecciona tu idioma - Select language",
|
109 |
+
|
110 |
+
# Auth tabs
|
111 |
+
'login': "Увійти",
|
112 |
+
'register': "Зареєструватися",
|
113 |
+
|
114 |
+
# Login form
|
115 |
+
'email': "Електронна пошта",
|
116 |
+
'password': "Пароль",
|
117 |
+
'login_button': "Увійти",
|
118 |
+
'invalid_credentials': "Невірні облікові дані",
|
119 |
+
|
120 |
+
# Registration form
|
121 |
+
'name': "Ім'��",
|
122 |
+
'lastname': "Прізвище",
|
123 |
+
'institution': "Установа",
|
124 |
+
'current_role': "Роль у вашій установі",
|
125 |
+
'professor': "Викладач",
|
126 |
+
'student': "Студент",
|
127 |
+
'administrative': "Адміністративний персонал",
|
128 |
+
'institutional_email': "Інституційна електронна пошта",
|
129 |
+
'interest_reason': "Чому ви зацікавлені у випробуванні AIdeaText?",
|
130 |
+
'submit_application': "Надіслати заявку",
|
131 |
+
'complete_all_fields': "Будь ласка, заповніть усі поля.",
|
132 |
+
'use_institutional_email': "Будь ласка, використовуйте інституційну електронну пошту.",
|
133 |
+
'application_sent': "Вашу заявку надіслано. Ми зв'яжемося з вами найближчим часом.",
|
134 |
+
'application_error': "Виникла проблема з надсиланням вашої заявки. Будь ласка, спробуйте пізніше.",
|
135 |
+
|
136 |
+
# Info tabs
|
137 |
+
'use_cases': "Приклади використання",
|
138 |
+
'presentation_videos': "Презентаційні відео",
|
139 |
+
'academic_presentations': "Академічні презентації",
|
140 |
+
'event_photos': "Фото подій",
|
141 |
+
'version_control': "Контроль версій",
|
142 |
+
|
143 |
+
# Video selectors
|
144 |
+
'select_use_case': "Виберіть приклад використання українською, англійською або іспанською мовою:",
|
145 |
+
'select_presentation': "Виберіть презентацію:",
|
146 |
+
|
147 |
+
# Version control info
|
148 |
+
'latest_version_title': "Останні оновлення версії",
|
149 |
+
'version_updates': [
|
150 |
+
"Покращений інтерфейс для кращого досвіду користувача",
|
151 |
+
"Оптимізація морфосинтаксичного аналізу",
|
152 |
+
"Підтримка української мови",
|
153 |
+
"Новий модуль аналізу дискурсу",
|
154 |
+
"Інтегрована система чату для підтримки"
|
155 |
+
]
|
156 |
+
}
|
157 |
+
}
|
158 |
+
|
159 |
+
def get_landing_translations(lang_code):
|
160 |
+
"""
|
161 |
+
Get translations for the landing page based on language code.
|
162 |
+
|
163 |
+
Args:
|
164 |
+
lang_code (str): Language code ('en', 'es', 'uk')
|
165 |
+
|
166 |
+
Returns:
|
167 |
+
dict: Dictionary with translations for the landing page
|
168 |
+
"""
|
169 |
+
# Default to Spanish if language not available
|
170 |
+
if lang_code not in LANDING_TRANSLATIONS:
|
171 |
+
lang_code = 'es'
|
172 |
+
|
173 |
+
return LANDING_TRANSLATIONS[lang_code]
|
translations/recommendations.py
ADDED
@@ -0,0 +1,311 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# translations/recommendations.py
|
2 |
+
|
3 |
+
# Recomendaciones en español
|
4 |
+
RECOMMENDATIONS_ES = {
|
5 |
+
'vocabulary': {
|
6 |
+
'low': [
|
7 |
+
"Amplía tu vocabulario utilizando sinónimos para palabras repetidas.",
|
8 |
+
"Incorpora terminología específica relacionada con el tema.",
|
9 |
+
"Lee textos similares para familiarizarte con el vocabulario del campo."
|
10 |
+
],
|
11 |
+
'medium': [
|
12 |
+
"Mejora la precisión léxica usando términos más específicos.",
|
13 |
+
"Considera incluir algunos términos técnicos relevantes.",
|
14 |
+
"Evita repeticiones innecesarias usando sinónimos."
|
15 |
+
],
|
16 |
+
'high': [
|
17 |
+
"Mantén el excelente nivel de vocabulario.",
|
18 |
+
"Asegúrate de que los términos técnicos sean comprensibles para tu audiencia."
|
19 |
+
]
|
20 |
+
},
|
21 |
+
'structure': {
|
22 |
+
'low': [
|
23 |
+
"Simplifica tus oraciones largas dividiéndolas en varias más cortas.",
|
24 |
+
"Varía la estructura de tus oraciones para mantener el interés.",
|
25 |
+
"Organiza tus ideas siguiendo una secuencia lógica (introducción, desarrollo, conclusión)."
|
26 |
+
],
|
27 |
+
'medium': [
|
28 |
+
"Equilibra oraciones simples y compuestas para mejorar el ritmo.",
|
29 |
+
"Asegúrate de que cada párrafo desarrolle una idea central.",
|
30 |
+
"Considera usar conectores para transiciones más suaves entre ideas."
|
31 |
+
],
|
32 |
+
'high': [
|
33 |
+
"Mantén la excelente estructura de tu texto.",
|
34 |
+
"Considera ocasionalmente variar el ritmo con alguna oración más breve o más compleja."
|
35 |
+
]
|
36 |
+
},
|
37 |
+
'cohesion': {
|
38 |
+
'low': [
|
39 |
+
"Añade conectores (además, sin embargo, por lo tanto) para relacionar ideas.",
|
40 |
+
"Mantén la consistencia temática entre párrafos.",
|
41 |
+
"Usa referencias explícitas a ideas mencionadas anteriormente."
|
42 |
+
],
|
43 |
+
'medium': [
|
44 |
+
"Mejora las transiciones entre párrafos para una progresión más fluida.",
|
45 |
+
"Utiliza términos del mismo campo semántico para reforzar la unidad temática.",
|
46 |
+
"Considera usar palabras clave de forma recurrente."
|
47 |
+
],
|
48 |
+
'high': [
|
49 |
+
"Mantén la excelente cohesión de tu texto.",
|
50 |
+
"Asegúrate de que las referencias a conceptos previos sean claras."
|
51 |
+
]
|
52 |
+
},
|
53 |
+
'clarity': {
|
54 |
+
'low': [
|
55 |
+
"Acorta las oraciones demasiado largas o complejas.",
|
56 |
+
"Evita ambigüedades usando términos precisos.",
|
57 |
+
"Añade ejemplos concretos para ilustrar conceptos abstractos."
|
58 |
+
],
|
59 |
+
'medium': [
|
60 |
+
"Elimina información innecesaria que pueda distraer.",
|
61 |
+
"Ordena las ideas de lo más simple a lo más complejo.",
|
62 |
+
"Utiliza un lenguaje directo y evita circunloquios."
|
63 |
+
],
|
64 |
+
'high': [
|
65 |
+
"Mantén la excelente claridad de tu texto.",
|
66 |
+
"Considera si algún término técnico podría necesitar una breve explicación."
|
67 |
+
]
|
68 |
+
},
|
69 |
+
'academic_article': [
|
70 |
+
"Asegúrate de fundamentar tus afirmaciones con evidencia.",
|
71 |
+
"Mantén un tono formal y objetivo.",
|
72 |
+
"Incluye referencias bibliográficas para apoyar tus argumentos."
|
73 |
+
],
|
74 |
+
'student_essay': [
|
75 |
+
"Asegúrate de tener una tesis clara y argumentos que la apoyen.",
|
76 |
+
"Conecta tus ideas con lo aprendido en clase o lecturas asignadas.",
|
77 |
+
"Concluye sintetizando tus principales puntos y su relevancia."
|
78 |
+
],
|
79 |
+
'general_communication': [
|
80 |
+
"Adapta tu lenguaje a la audiencia específica.",
|
81 |
+
"Mantén un equilibrio entre ser informativo y mantener el interés.",
|
82 |
+
"Considera incluir algún elemento visual si es apropiado."
|
83 |
+
],
|
84 |
+
'priority_intro': "Esta es el área donde puedes enfocar tus esfuerzos para mejorar más rápidamente.",
|
85 |
+
'detailed_recommendations': "Recomendaciones detalladas",
|
86 |
+
'save_button': "Guardar análisis y recomendaciones",
|
87 |
+
'save_success': "Análisis y recomendaciones guardados correctamente",
|
88 |
+
'save_error': "No se pudo guardar el análisis y recomendaciones",
|
89 |
+
'area_priority': "Área prioritaria",
|
90 |
+
'dimension_names': {
|
91 |
+
'vocabulary': 'Vocabulario',
|
92 |
+
'structure': 'Estructura',
|
93 |
+
'cohesion': 'Cohesión',
|
94 |
+
'clarity': 'Claridad',
|
95 |
+
'general': 'General'
|
96 |
+
},
|
97 |
+
'text_types': {
|
98 |
+
'academic_article': 'Artículo Académico',
|
99 |
+
'student_essay': 'Trabajo Universitario',
|
100 |
+
'general_communication': 'Comunicación General'
|
101 |
+
}
|
102 |
+
}
|
103 |
+
|
104 |
+
# Recomendaciones en inglés
|
105 |
+
RECOMMENDATIONS_EN = {
|
106 |
+
'vocabulary': {
|
107 |
+
'low': [
|
108 |
+
"Expand your vocabulary by using synonyms for repeated words.",
|
109 |
+
"Incorporate specific terminology related to the topic.",
|
110 |
+
"Read similar texts to familiarize yourself with the field's vocabulary."
|
111 |
+
],
|
112 |
+
'medium': [
|
113 |
+
"Improve lexical precision by using more specific terms.",
|
114 |
+
"Consider including some relevant technical terms.",
|
115 |
+
"Avoid unnecessary repetitions by using synonyms."
|
116 |
+
],
|
117 |
+
'high': [
|
118 |
+
"Maintain the excellent vocabulary level.",
|
119 |
+
"Ensure that technical terms are understandable for your audience."
|
120 |
+
]
|
121 |
+
},
|
122 |
+
'structure': {
|
123 |
+
'low': [
|
124 |
+
"Simplify your long sentences by dividing them into shorter ones.",
|
125 |
+
"Vary your sentence structure to maintain interest.",
|
126 |
+
"Organize your ideas following a logical sequence (introduction, development, conclusion)."
|
127 |
+
],
|
128 |
+
'medium': [
|
129 |
+
"Balance simple and compound sentences to improve rhythm.",
|
130 |
+
"Make sure each paragraph develops a central idea.",
|
131 |
+
"Consider using connectors for smoother transitions between ideas."
|
132 |
+
],
|
133 |
+
'high': [
|
134 |
+
"Maintain the excellent structure of your text.",
|
135 |
+
"Consider occasionally varying the rhythm with shorter or more complex sentences."
|
136 |
+
]
|
137 |
+
},
|
138 |
+
'cohesion': {
|
139 |
+
'low': [
|
140 |
+
"Add connectors (additionally, however, therefore) to relate ideas.",
|
141 |
+
"Maintain thematic consistency between paragraphs.",
|
142 |
+
"Use explicit references to previously mentioned ideas."
|
143 |
+
],
|
144 |
+
'medium': [
|
145 |
+
"Improve transitions between paragraphs for a more fluid progression.",
|
146 |
+
"Use terms from the same semantic field to reinforce thematic unity.",
|
147 |
+
"Consider using key words recurrently."
|
148 |
+
],
|
149 |
+
'high': [
|
150 |
+
"Maintain the excellent cohesion of your text.",
|
151 |
+
"Ensure that references to previous concepts are clear."
|
152 |
+
]
|
153 |
+
},
|
154 |
+
'clarity': {
|
155 |
+
'low': [
|
156 |
+
"Shorten overly long or complex sentences.",
|
157 |
+
"Avoid ambiguities by using precise terms.",
|
158 |
+
"Add concrete examples to illustrate abstract concepts."
|
159 |
+
],
|
160 |
+
'medium': [
|
161 |
+
"Eliminate unnecessary information that may distract.",
|
162 |
+
"Order ideas from simplest to most complex.",
|
163 |
+
"Use direct language and avoid circumlocutions."
|
164 |
+
],
|
165 |
+
'high': [
|
166 |
+
"Maintain the excellent clarity of your text.",
|
167 |
+
"Consider whether any technical term might need a brief explanation."
|
168 |
+
]
|
169 |
+
},
|
170 |
+
'academic_article': [
|
171 |
+
"Make sure to support your claims with evidence.",
|
172 |
+
"Maintain a formal and objective tone.",
|
173 |
+
"Include bibliographic references to support your arguments."
|
174 |
+
],
|
175 |
+
'student_essay': [
|
176 |
+
"Make sure you have a clear thesis and arguments that support it.",
|
177 |
+
"Connect your ideas with what you've learned in class or assigned readings.",
|
178 |
+
"Conclude by synthesizing your main points and their relevance."
|
179 |
+
],
|
180 |
+
'general_communication': [
|
181 |
+
"Adapt your language to the specific audience.",
|
182 |
+
"Maintain a balance between being informative and maintaining interest.",
|
183 |
+
"Consider including a visual element if appropriate."
|
184 |
+
],
|
185 |
+
'priority_intro': "This is the area where you can focus your efforts to improve more quickly.",
|
186 |
+
'detailed_recommendations': "Detailed recommendations",
|
187 |
+
'save_button': "Save analysis and recommendations",
|
188 |
+
'save_success': "Analysis and recommendations saved successfully",
|
189 |
+
'save_error': "Could not save the analysis and recommendations",
|
190 |
+
'area_priority': "Priority area",
|
191 |
+
'dimension_names': {
|
192 |
+
'vocabulary': 'Vocabulary',
|
193 |
+
'structure': 'Structure',
|
194 |
+
'cohesion': 'Cohesion',
|
195 |
+
'clarity': 'Clarity',
|
196 |
+
'general': 'General'
|
197 |
+
},
|
198 |
+
'text_types': {
|
199 |
+
'academic_article': 'Academic Article',
|
200 |
+
'student_essay': 'Student Essay',
|
201 |
+
'general_communication': 'General Communication'
|
202 |
+
}
|
203 |
+
}
|
204 |
+
|
205 |
+
# Recomendaciones en ucraniano
|
206 |
+
RECOMMENDATIONS_UK = {
|
207 |
+
'vocabulary': {
|
208 |
+
'low': [
|
209 |
+
"Розширте свій словниковий запас, використовуючи синоніми для повторюваних слів.",
|
210 |
+
"Включіть спеціальну термінологію, пов'язану з темою.",
|
211 |
+
"Читайте подібні тексти, щоб ознайомитися зі словниковим запасом у цій галузі."
|
212 |
+
],
|
213 |
+
'medium': [
|
214 |
+
"Покращіть лексичну точність, використовуючи більш специфічні терміни.",
|
215 |
+
"Розгляньте можливість включення деяких відповідних технічних термінів.",
|
216 |
+
"Уникайте непотрібних повторень, використовуючи синоніми."
|
217 |
+
],
|
218 |
+
'high': [
|
219 |
+
"Підтримуйте відмінний рівень словникового запасу.",
|
220 |
+
"Переконайтеся, що технічні терміни зрозумілі для вашої аудиторії."
|
221 |
+
]
|
222 |
+
},
|
223 |
+
'structure': {
|
224 |
+
'low': [
|
225 |
+
"Спростіть довгі речення, розділивши їх на коротші.",
|
226 |
+
"Змінюйте структуру речень, щоб підтримувати інтерес.",
|
227 |
+
"Організуйте свої ідеї, дотримуючись логічної послідовності (вступ, розвиток, висновок)."
|
228 |
+
],
|
229 |
+
'medium': [
|
230 |
+
"Збалансуйте прості та складні речення для покращення ритму.",
|
231 |
+
"Переконайтеся, що кожен абзац розвиває центральну ідею.",
|
232 |
+
"Розгляньте можливість використання сполучників для плавніших переходів між ідеями."
|
233 |
+
],
|
234 |
+
'high': [
|
235 |
+
"Підтримуйте відмінну структуру вашого тексту.",
|
236 |
+
"Розгляньте можливість іноді змінювати ритм з коротшими або складнішими реченнями."
|
237 |
+
]
|
238 |
+
},
|
239 |
+
'cohesion': {
|
240 |
+
'low': [
|
241 |
+
"Додайте сполучники (крім того, однак, тому) для зв'язку ідей.",
|
242 |
+
"Підтримуйте тематичну послідовність між абзацами.",
|
243 |
+
"Використовуйте явні посилання на раніше згадані ідеї."
|
244 |
+
],
|
245 |
+
'medium': [
|
246 |
+
"Покращіть переходи між абзацами для більш плавної прогресії.",
|
247 |
+
"Використовуйте терміни з одного семантичного поля для підсилення тематичної єдності.",
|
248 |
+
"Розгляньте можливість повторного використання ключових слів."
|
249 |
+
],
|
250 |
+
'high': [
|
251 |
+
"Підтримуйте відмінну згуртованість вашого тексту.",
|
252 |
+
"Переконайтеся, що посилання на попередні концепції є чіткими."
|
253 |
+
]
|
254 |
+
},
|
255 |
+
'clarity': {
|
256 |
+
'low': [
|
257 |
+
"Скоротіть надто довгі або складні речення.",
|
258 |
+
"Уникайте двозначностей, використовуючи точні терміни.",
|
259 |
+
"Додайте конкретні приклади для ілюстрації абстрактних понять."
|
260 |
+
],
|
261 |
+
'medium': [
|
262 |
+
"Усуньте непотрібну інформацію, яка може відволікати.",
|
263 |
+
"Розташуйте ідеї від найпростіших до найскладніших.",
|
264 |
+
"Використовуйте пряму мову та уникайте багатослів'я."
|
265 |
+
],
|
266 |
+
'high': [
|
267 |
+
"Підтримуйте відмінну ясність вашого тексту.",
|
268 |
+
"Розгляньте, чи потребує якийсь технічний термін короткого пояснення."
|
269 |
+
]
|
270 |
+
},
|
271 |
+
'academic_article': [
|
272 |
+
"Обов'язково підтверджуйте свої твердження доказами.",
|
273 |
+
"Підтримуйте формальний та об'єктивний тон.",
|
274 |
+
"Включайте бібліографічні посилання для підтримки ваших аргументів."
|
275 |
+
],
|
276 |
+
'student_essay': [
|
277 |
+
"Переконайтеся, що у вас є чітка теза та аргументи, які її підтримують.",
|
278 |
+
"Пов'яжіть свої ідеї з тим, що ви вивчили на заняттях або в заданих читаннях.",
|
279 |
+
"Завершіть, синтезуючи ваші основні тези та їх актуальність."
|
280 |
+
],
|
281 |
+
'general_communication': [
|
282 |
+
"Адаптуйте свою мову до конкретної аудиторії.",
|
283 |
+
"Підтримуйте баланс між інформативністю та підтриманням інтересу.",
|
284 |
+
"Розгляньте можливість включення візуального елемента, якщо це доречно."
|
285 |
+
],
|
286 |
+
'priority_intro': "Це область, де ви можете зосередити свої зусилля, щоб покращитися швидше.",
|
287 |
+
'detailed_recommendations': "Детальні рекомендації",
|
288 |
+
'save_button': "Зберегти аналіз та рекомендації",
|
289 |
+
'save_success': "Аналіз та рекомендації успішно збережено",
|
290 |
+
'save_error': "Не вдалося зберегти аналіз та рекомендації",
|
291 |
+
'area_priority': "Пріоритетна область",
|
292 |
+
'dimension_names': {
|
293 |
+
'vocabulary': 'Словниковий запас',
|
294 |
+
'structure': 'Структура',
|
295 |
+
'cohesion': 'Зв\'язність',
|
296 |
+
'clarity': 'Ясність',
|
297 |
+
'general': 'Загальне'
|
298 |
+
},
|
299 |
+
'text_types': {
|
300 |
+
'academic_article': 'Академічна стаття',
|
301 |
+
'student_essay': 'Студентське есе',
|
302 |
+
'general_communication': 'Загальна комунікація'
|
303 |
+
}
|
304 |
+
}
|
305 |
+
|
306 |
+
# Diccionario que mapea los códigos de idioma a sus respectivas recomendaciones
|
307 |
+
RECOMMENDATIONS = {
|
308 |
+
'es': RECOMMENDATIONS_ES,
|
309 |
+
'en': RECOMMENDATIONS_EN,
|
310 |
+
'uk': RECOMMENDATIONS_UK
|
311 |
+
}
|
translations/uk.py
ADDED
@@ -0,0 +1,337 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# translations/uk.py
|
2 |
+
|
3 |
+
COMMON = {
|
4 |
+
# A
|
5 |
+
'initial_instruction': "Щоб розпочати новий семантичний аналіз, завантажте новий текстовий файл (.txt)",
|
6 |
+
'analysis_complete': "Аналіз завершено та збережено. Щоб виконати новий аналіз, завантажте інший файл.",
|
7 |
+
'current_analysis_message': "Показ аналізу файлу: {}. Щоб виконати новий аналіз, завантажте інший файл.",
|
8 |
+
'upload_prompt': "Прикріпіть файл, щоб розпочати аналіз",
|
9 |
+
'analysis_completed': "Аналіз завершено",
|
10 |
+
'analysis_section': "Семантичний аналіз",
|
11 |
+
'analyze_document': 'Аналізувати документ',
|
12 |
+
'analysis_saved_success': 'Аналіз успішно збережено',
|
13 |
+
'analysis_save_error': 'Помилка збереження аналізу',
|
14 |
+
'analyze_button': "Аналізувати текст",
|
15 |
+
'analyzing_doc': "Аналіз документа",
|
16 |
+
'activities_message': "Повідомлення діяльності",
|
17 |
+
'activities_placeholder': "Заповнювач діяльності",
|
18 |
+
'analysis_placeholder': "Заповнювач аналізу",
|
19 |
+
'analyze_button': "Аналізувати",
|
20 |
+
'analysis_types_chart': "Аналіз типової діаграми",
|
21 |
+
'analysis_from': "Аналіз проведено",
|
22 |
+
# C
|
23 |
+
'chat_title': "Чат аналізу",
|
24 |
+
'export_button': "Експортувати поточний аналіз",
|
25 |
+
'export_success': "Аналіз і чат успішно експортовано.",
|
26 |
+
'export_error': "Виникла проблема при експорті аналізу та чату.",
|
27 |
+
'get_text': "Отримати текст.",
|
28 |
+
'hello': "Привіт",
|
29 |
+
# L
|
30 |
+
'logout': "Завершити сеанс.",
|
31 |
+
'loading_data': "Завантаження даних",
|
32 |
+
'load_selected_file': 'Завантажити вибраний файл',
|
33 |
+
# N
|
34 |
+
'no_analysis': "Немає доступного аналізу. Використовуйте чат для виконання аналізу.",
|
35 |
+
'nothing_to_export': "Немає аналізу або чату для експорту.",
|
36 |
+
'results_title': "Результати аналізу",
|
37 |
+
'select_language': "Вибір мови",
|
38 |
+
'student_activities': "Діяльність студента",
|
39 |
+
# T
|
40 |
+
'total_analyses': "Загальний аналіз",
|
41 |
+
# W
|
42 |
+
'welcome': "Ласкаво просимо до AIdeaText"
|
43 |
+
}
|
44 |
+
|
45 |
+
TABS = {
|
46 |
+
'current_situation_tab': "Поточна ситуація",
|
47 |
+
'morpho_tab': "Морфосинтаксичний аналіз",
|
48 |
+
'semantic_live_tab': "Семантика в реальному часі",
|
49 |
+
'semantic_tab': "Семантичний аналіз",
|
50 |
+
'discourse_live_tab': "Дискурс в реальному часі",
|
51 |
+
'discourse_tab': "Аналіз дискурсу",
|
52 |
+
'activities_tab': "Мої активності",
|
53 |
+
'feedback_tab': "Форма відгуку"
|
54 |
+
}
|
55 |
+
|
56 |
+
CURRENT_SITUATION = {
|
57 |
+
'title': "Моя поточна ситуація",
|
58 |
+
'input_prompt': "Напишіть або вставте ваш текст тут:",
|
59 |
+
'analyze_button': "Аналізувати моє письмо",
|
60 |
+
'processing': "Аналіз...",
|
61 |
+
'analysis_error': "Помилка аналізу тексту",
|
62 |
+
'help': "Ми проаналізуємо ваш текст, щоб дізнатися його поточний стан",
|
63 |
+
|
64 |
+
# Radio buttons для типу тексту
|
65 |
+
'text_type_header': "Тип тексту",
|
66 |
+
'text_type_help': "Виберіть тип тексту для налаштування критеріїв оцінювання",
|
67 |
+
|
68 |
+
# Метрики
|
69 |
+
'vocabulary_label': "Словниковий запас",
|
70 |
+
'vocabulary_help': "Багатство і різноманітність словникового запасу",
|
71 |
+
'structure_label': "Структура",
|
72 |
+
'structure_help': "Організація та складність речень",
|
73 |
+
'cohesion_label': "Когезія",
|
74 |
+
'cohesion_help': "Зв'язок і плавність між ідеями",
|
75 |
+
'clarity_label': "Ясність",
|
76 |
+
'clarity_help': "Легкість розуміння тексту",
|
77 |
+
|
78 |
+
# Стани метрик
|
79 |
+
'metric_improvement': "⚠️ Потребує покращення",
|
80 |
+
'metric_acceptable': "📈 Прийнятно",
|
81 |
+
'metric_optimal': "✅ Оптимально",
|
82 |
+
'metric_target': "Ціль: {:.2f}",
|
83 |
+
|
84 |
+
# Помилки
|
85 |
+
'error_interface': "Виникла помилка при завантаженні інтерфейсу",
|
86 |
+
'error_results': "Помилка при відображенні результаті��",
|
87 |
+
'error_chart': "Помилка при відображенні діаграми"
|
88 |
+
}
|
89 |
+
|
90 |
+
MORPHOSYNTACTIC = {
|
91 |
+
#A
|
92 |
+
'analyze_button': "Аналізувати текст",
|
93 |
+
'arc_diagram': "Синтаксичний аналіз: Діаграма дуг",
|
94 |
+
#C
|
95 |
+
'count': "Кількість",
|
96 |
+
#D
|
97 |
+
'dependency': "Залежність",
|
98 |
+
'dep': "Залежність",
|
99 |
+
#E
|
100 |
+
'error_message': "Виникла проблема при збереженні аналізу. Будь ласка, спробуйте ще раз.",
|
101 |
+
'examples': "Приклади",
|
102 |
+
#G
|
103 |
+
'grammatical_category': "Граматична категорія",
|
104 |
+
#L
|
105 |
+
'lemma': "Лема",
|
106 |
+
'legend': "Легенда: Граматичні категорії",
|
107 |
+
#O
|
108 |
+
'objects': "Об'єкти",
|
109 |
+
#P
|
110 |
+
'pos_analysis': "Аналіз частин мови",
|
111 |
+
'percentage': "Відсоток",
|
112 |
+
#N
|
113 |
+
'no_results': "Немає доступних результатів. Будь ласка, спочатку виконайте аналіз.",
|
114 |
+
#M
|
115 |
+
'morpho_analyze_button': 'Морфосинтаксичний аналіз',
|
116 |
+
'morpho_title': "AIdeaText - Морфологічний аналіз",
|
117 |
+
'morpho_initial_message': "Це чат-бот загального призначення, але він має специфічну функцію для візуального аналізу тексту: генерування діаграм дуг. Щоб створити їх, введіть наступну команду /analisis_morfosintactico [після чого в дужках вкажіть текст, який ви хочете проаналізувати]",
|
118 |
+
'morpho_input_label': "Введіть текст для аналізу (максимум 30 слів):",
|
119 |
+
'morpho_input_placeholder': "заповнювач морфосинтаксису",
|
120 |
+
'morphosyntactic_analysis_completed': 'Морфосинтаксичний аналіз завершено. Будь ласка, перегляньте результати в наступному розділі.',
|
121 |
+
'morphological_analysis': "Морфологічний аналіз",
|
122 |
+
'morphology': "Морфологія",
|
123 |
+
'morph': "Морфологія",
|
124 |
+
#R
|
125 |
+
'root': "Корінь",
|
126 |
+
'repeated_words': "Повторювані слова",
|
127 |
+
#S
|
128 |
+
'sentence': "Речення",
|
129 |
+
'success_message': "Аналіз успішно збережено.",
|
130 |
+
'sentence_structure': "Структура речення",
|
131 |
+
'subjects': "Підмети",
|
132 |
+
#V
|
133 |
+
'verbs': "Дієслова",
|
134 |
+
#T
|
135 |
+
'title': "AIdeaText - Морфологічний і синтаксичний аналіз",
|
136 |
+
'tag': "Тег",
|
137 |
+
#W
|
138 |
+
'warning_message': "Будь ласка, введіть текст для аналізу.",
|
139 |
+
'word': "Слово",
|
140 |
+
'processing': 'Обробка...',
|
141 |
+
'error_processing': 'Помилка обробки',
|
142 |
+
'morphosyntactic_analysis_error': 'Помилка у морфосинтаксичному аналізі',
|
143 |
+
'morphosyntactic_analysis_completed': 'Морфосинтаксичний аналіз завершено'
|
144 |
+
}
|
145 |
+
|
146 |
+
SEMANTIC = {
|
147 |
+
# C
|
148 |
+
'chat_title': "Чат семантичного аналізу",
|
149 |
+
'chat_placeholder': "Задайте запитання або використайте команду (/summary, /entities, /sentiment, /topics, /concept_graph, /entity_graph, /topic_graph)",
|
150 |
+
'clear_chat': "Очистити чат",
|
151 |
+
'conceptual_relations': "Концептуальні відношення",
|
152 |
+
# D
|
153 |
+
'delete_file': "Видалити файл",
|
154 |
+
# E
|
155 |
+
'error_message': "Виникла проблема при збереженні семантичного аналізу. Будь ласка, спробуйте ще раз.",
|
156 |
+
# F
|
157 |
+
'file_uploader': "Або завантажте текстовий файл",
|
158 |
+
'file_upload_success': "Файл успішно завантажено та збережено",
|
159 |
+
'file_upload_error': 'Помилка завантаження файлу',
|
160 |
+
'file_section': "Файли",
|
161 |
+
'file_loaded_success': "Файл успішно завантажено",
|
162 |
+
'file_load_error': "Помилка завантаження файлу",
|
163 |
+
'file_upload_error': "Помилка завантаження та збереження файлу",
|
164 |
+
'file_deleted_success': 'Файл успішно видалено',
|
165 |
+
'file_delete_error': 'Помилка видалення файлу',
|
166 |
+
# G
|
167 |
+
'graph_title': "Візуалізація семантичного аналізу",
|
168 |
+
# I
|
169 |
+
'identified_entities': "Ідентифіковані сутності",
|
170 |
+
# K
|
171 |
+
'key_concepts': "Ключові концепції",
|
172 |
+
# N
|
173 |
+
'no_analysis': "Немає доступного аналізу. Будь ласка, завантажте або виберіть фай��.",
|
174 |
+
'no_results': "Немає доступних результатів. Будь ласка, спочатку виконайте аналіз.",
|
175 |
+
'no_file': "Будь ласка, завантажте файл, щоб розпочати аналіз.",
|
176 |
+
'no_file_selected': "Будь ласка, виберіть архів, щоб розпочати аналіз.",
|
177 |
+
# S
|
178 |
+
'semantic_title': "Семантичний аналіз",
|
179 |
+
'semantic_initial_message': "Це чат-бот загального призначення, але він має специфічну функцію для візуального аналізу тексту: він генерує граф з основними сутностями тексту. Щоб створити його, введіть текстовий файл у форматі txt, pdf, doc, docx або odt і натисніть кнопку 'аналізувати файл'. Після створення графу ви можете взаємодіяти з чатом на основі документа.",
|
180 |
+
'send_button': "Надіслати",
|
181 |
+
'select_saved_file': "Вибрати збережений файл",
|
182 |
+
'success_message': "Семантичний аналіз успішно збережено.",
|
183 |
+
'semantic_analyze_button': 'Семантичний аналіз',
|
184 |
+
'semantic_export_button': 'Експорт семантичного аналізу',
|
185 |
+
'semantic_new_button': 'Новий семантичний аналіз',
|
186 |
+
'semantic_file_uploader': 'Завантажте текстовий файл для семантичного аналізу',
|
187 |
+
# T
|
188 |
+
'text_input_label': "Введіть текст для аналізу (макс. 5,000 слів):",
|
189 |
+
'text_input_placeholder': "Метою цієї програми є покращення ваших навичок письма...",
|
190 |
+
'title': "AIdeaText - Семантичний аналіз",
|
191 |
+
# U
|
192 |
+
'upload_file': "Завантажити файл",
|
193 |
+
# W
|
194 |
+
'warning_message': "Будь ласка, введіть текст або завантажте файл для аналізу."
|
195 |
+
}
|
196 |
+
|
197 |
+
DISCOURSE = {
|
198 |
+
'discourse_title': "AIdeaText - Аналіз дискурсу",
|
199 |
+
'file_uploader1': "Завантажте текстовий файл 1 (Шаблон)",
|
200 |
+
'file_uploader2': "Завантажте текстовий файл 2 (Порівняння)",
|
201 |
+
'discourse_analyze_button': "Аналіз дискурсу",
|
202 |
+
'discourse_initial_message': "Це чат-бот загального призначення, але він має специфічну функцію для візуального аналізу тексту: він генерує два графи з основними сутностями кожного файлу для порівняння обох текстів. Щоб створити його, спочатку введіть один файл, а потім інший у форматі txt, pdf, doc, docx або odt і натисніть кнопку 'аналізувати файл'. Після створення графу ви можете взаємодіяти з чатом на основі документа.",
|
203 |
+
'analyze_button': "Аналізувати тексти",
|
204 |
+
'comparison': "Порівняння семантичних відношень",
|
205 |
+
'success_message': "Аналіз дискурсу успішно збережено.",
|
206 |
+
'error_message': "Виникла проблема при збереженні аналізу дискурсу. Будь ласка, спробуйте ще раз.",
|
207 |
+
'warning_message': "Будь ласка, завантажте обидва файли для аналізу.",
|
208 |
+
'no_results': "Немає доступних результатів. Будь ласка, спочатку виконайте аналіз.",
|
209 |
+
'key_concepts': "Ключові концепції",
|
210 |
+
'graph_not_available': "Граф недоступний.",
|
211 |
+
'concepts_not_available': "Ключові концепції недоступні.",
|
212 |
+
'comparison_not_available': "Порівняння недоступне.",
|
213 |
+
'warning_message': "Будь ласка, введіть текст або завантажте файл для аналізу.",
|
214 |
+
'morphosyntax_history': "Історія морфосинтаксису",
|
215 |
+
'analysis_of': "Аналіз"
|
216 |
+
}
|
217 |
+
|
218 |
+
ACTIVITIES = {
|
219 |
+
'analysis_types_chart_title': "Типи виконаних аналізів",
|
220 |
+
'analysis_types_chart_x': "Тип аналізу",
|
221 |
+
'analysis_types_chart_y': "Кількість",
|
222 |
+
'analysis_from': "Аналіз від",
|
223 |
+
'assistant': "Асистент",
|
224 |
+
'activities_summary': "Резюме діяльності та прогресу",
|
225 |
+
'chat_history_expander': "Історія чату",
|
226 |
+
'chat_from': "Чат від",
|
227 |
+
'combined_graph': "Комбінований граф",
|
228 |
+
'conceptual_relations_graph': "Граф концептуальних відношень",
|
229 |
+
'conversation': "Розмова",
|
230 |
+
'discourse_analyses_expander': "Історія аналізів дискурсу",
|
231 |
+
'discourse_analyses': "Аналізи дискурсу",
|
232 |
+
'discourse_history': "Історія аналізу дискурсу",
|
233 |
+
'document': "Документ",
|
234 |
+
'data_load_error': "Помилка завантаження даних студента",
|
235 |
+
'graph_display_error': "Не вдалося відобразити граф",
|
236 |
+
'graph_doc1': "Граф документа 1",
|
237 |
+
'graph_doc2': "Граф документа 2",
|
238 |
+
'key_concepts': "Ключові концепції",
|
239 |
+
'loading_data': "Завантаження даних студента...",
|
240 |
+
'morphological_analysis': "Морфологічний аналіз",
|
241 |
+
'morphosyntax_analyses_expander': "Історія морфосинтаксичних аналізів",
|
242 |
+
'morphosyntax_history': "Історія морфосинтаксичного аналізу",
|
243 |
+
'no_arc_diagram': "Для цього аналізу не знайдено діаграми дуг.",
|
244 |
+
'no_chat_history': "Не знайдено розмов з чат-ботом.",
|
245 |
+
'no_data_warning': "Для цього студента не знайдено даних аналізу.",
|
246 |
+
'progress_of': "Прогрес",
|
247 |
+
'semantic_analyses': "Семантичні аналізи",
|
248 |
+
'semantic_analyses_expander': "Історія семантичних аналізів",
|
249 |
+
'semantic_history': "Історія семантичного аналізу",
|
250 |
+
'show_debug_data': "Показати дані налагодження",
|
251 |
+
'student_debug_data': "Дані студента (для налагодження):",
|
252 |
+
'summary_title': "Резюме діяльності",
|
253 |
+
'title': "Діяльність",
|
254 |
+
'timestamp': "Часова позначка",
|
255 |
+
'total_analyses': "Всього виконаних аналізів:",
|
256 |
+
'try_analysis': "Спробуйте спочатку виконати деякі аналізи тексту.",
|
257 |
+
'user': "Користувач"
|
258 |
+
}
|
259 |
+
|
260 |
+
FEEDBACK = {
|
261 |
+
'email': "Електронна пошта",
|
262 |
+
'feedback': "Відгук",
|
263 |
+
'feedback_title': "Форма відгуку",
|
264 |
+
'feedback_error': "Виникла проблема з відправленням форми. Будь ласка, спробуйте ще раз.",
|
265 |
+
'feedback_success': "Дякуємо за ваш відгук",
|
266 |
+
'complete_all_fields': "Будь ласка, заповніть усі поля",
|
267 |
+
'name': "Ім'я",
|
268 |
+
'submit': "Надіслати"
|
269 |
+
}
|
270 |
+
|
271 |
+
CHATBOT_TRANSLATIONS = {
|
272 |
+
'chat_title': "Асистент AIdeaText",
|
273 |
+
'input_placeholder': "Які-небудь запитання?",
|
274 |
+
'initial_message': "Привіт! Я ваш асистент. Чим я можу допомогти?",
|
275 |
+
'expand_chat': "Відкрити асистента",
|
276 |
+
'clear_chat': "Очистити чат",
|
277 |
+
'processing': "Обробка...",
|
278 |
+
'error_message': "Вибачте, сталася помилка"
|
279 |
+
}
|
280 |
+
|
281 |
+
TEXT_TYPES = {
|
282 |
+
'описовий': [
|
283 |
+
'Що ви описуєте?',
|
284 |
+
'Які його основні характеристики?',
|
285 |
+
'Як воно виглядає, звучить, пахне або відчувається?',
|
286 |
+
'Що робить його унікальним або особливим?'
|
287 |
+
],
|
288 |
+
'розповідний': [
|
289 |
+
'Хто головний герой?',
|
290 |
+
'Де і коли відбувається історія?',
|
291 |
+
'Яка подія запускає дію?',
|
292 |
+
'Що відбувається далі?',
|
293 |
+
'Як закінчується історія?'
|
294 |
+
],
|
295 |
+
'експозиційний': [
|
296 |
+
'Яка основна тема?',
|
297 |
+
'Які важливі аспекти ви хочете пояснити?',
|
298 |
+
'Чи можете ви надати приклади або дані для підтримки вашого пояснення?',
|
299 |
+
'Як ця тема пов\'язана з іншими концепціями?'
|
300 |
+
],
|
301 |
+
'аргументативний': [
|
302 |
+
'Яка ваша основна теза або аргумент?',
|
303 |
+
'Які ваші аргументи підтримки?',
|
304 |
+
'Які у вас є докази для підтвердження ваших аргументів?',
|
305 |
+
'Які контраргументи і як ви їх спростовуєте?',
|
306 |
+
'Який ваш висновок?'
|
307 |
+
],
|
308 |
+
'інструктивний': [
|
309 |
+
'Яке завдання або процес ви пояснюєте?',
|
310 |
+
'Які матеріали або інструменти необхідні?',
|
311 |
+
'Які кроки слід виконати?',
|
312 |
+
'Чи є важливі застереження або по��ади, які слід згадати?'
|
313 |
+
],
|
314 |
+
'пітч': [
|
315 |
+
'Що?',
|
316 |
+
'Для чого?',
|
317 |
+
'Для кого?',
|
318 |
+
'Як?'
|
319 |
+
]
|
320 |
+
}
|
321 |
+
|
322 |
+
# Конфігурація мовної моделі для української мови
|
323 |
+
NLP_MODEL = 'uk_core_news_sm'
|
324 |
+
|
325 |
+
# Ця лінія є вирішальною:
|
326 |
+
TRANSLATIONS = {
|
327 |
+
'COMMON': COMMON,
|
328 |
+
'TABS': TABS,
|
329 |
+
'MORPHOSYNTACTIC': MORPHOSYNTACTIC,
|
330 |
+
'SEMANTIC': SEMANTIC,
|
331 |
+
'DISCOURSE': DISCOURSE,
|
332 |
+
'ACTIVITIES': ACTIVITIES,
|
333 |
+
'FEEDBACK': FEEDBACK,
|
334 |
+
'TEXT_TYPES': TEXT_TYPES,
|
335 |
+
'CURRENT_SITUATION': CURRENT_SITUATION,
|
336 |
+
'NLP_MODEL': NLP_MODEL
|
337 |
+
}
|