lewiskimaru commited on
Commit
40e3406
1 Parent(s): 3ea004f

Upload form.js

Browse files
Files changed (1) hide show
  1. static/form.js +287 -0
static/form.js ADDED
@@ -0,0 +1,287 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ document.addEventListener('DOMContentLoaded', function () {
2
+ const form = document.querySelector('#translationForm');
3
+ const targetLangSelect = document.querySelector('#target_lang');
4
+ const sourceLangSelect = document.querySelector('#source_lang');
5
+ const userInput = document.querySelector('#userinput');
6
+ const outputText = document.querySelector('#output');
7
+
8
+ // Define your languages and codes
9
+ const languages = [
10
+ { name: 'Acehnese (Latin script)', code: 'ace_Latn' },
11
+ { name: 'Mesopotamian Arabic', code: 'acm_Arab' },
12
+ { name: 'Ta’izzi-Adeni Arabic', code: 'acq_Arab' },
13
+ { name: 'Tunisian Arabic', code: 'aeb_Arab' },
14
+ { name: 'Afrikaans', code: 'afr_Latn' },
15
+ { name: 'South Levantine Arabic', code: 'ajp_Arab' },
16
+ { name: 'Akan', code: 'aka_Latn' },
17
+ { name: 'Amharic', code: 'amh_Ethi' },
18
+ { name: 'North Levantine Arabic', code: 'apc_Arab' },
19
+ { name: 'Modern Standard Arabic', code: 'arb_Arab' },
20
+ { name: 'Modern Standard Arabic (Romanized)', code: 'arb_Latn' },
21
+ { name: 'Najdi Arabic', code: 'ars_Arab' },
22
+ { name: 'Moroccan Arabic', code: 'ary_Arab' },
23
+ { name: 'Egyptian Arabic', code: 'arz_Arab' },
24
+ { name: 'Assamese', code: 'asm_Beng' },
25
+ { name: 'Asturian', code: 'ast_Latn' },
26
+ { name: 'Awadhi', code: 'awa_Deva' },
27
+ { name: 'Central Aymara', code: 'ayr_Latn' },
28
+ { name: 'South Azerbaijani', code: 'azb_Arab' },
29
+ { name: 'North Azerbaijani', code: 'azj_Latn' },
30
+ { name: 'Bashkir', code: 'bak_Cyrl' },
31
+ { name: 'Bambara', code: 'bam_Latn' },
32
+ { name: 'Balinese', code: 'ban_Latn' },
33
+ { name: 'Belarusian', code: 'bel_Cyrl' },
34
+ { name: 'Bemba', code: 'bem_Latn' },
35
+ { name: 'Bengali', code: 'ben_Beng' },
36
+ { name: 'Bhojpuri', code: 'bho_Deva' },
37
+ { name: 'Banjar (Arabic script)', code: 'bjn_Arab' },
38
+ { name: 'Banjar (Latin script)', code: 'bjn_Latn' },
39
+ { name: 'Standard Tibetan', code: 'bod_Tibt' },
40
+ { name: 'Bosnian', code: 'bos_Latn' },
41
+ { name: 'Buginese', code: 'bug_Latn' },
42
+ { name: 'Bulgarian', code: 'bul_Cyrl' },
43
+ { name: 'Catalan', code: 'cat_Latn' },
44
+ { name: 'Cebuano', code: 'ceb_Latn' },
45
+ { name: 'Czech', code: 'ces_Latn' },
46
+ { name: 'Chokwe', code: 'cjk_Latn' },
47
+ { name: 'Central Kurdish', code: 'ckb_Arab' },
48
+ { name: 'Crimean Tatar', code: 'crh_Latn' },
49
+ { name: 'Welsh', code: 'cym_Latn' },
50
+ { name: 'Danish', code: 'dan_Latn' },
51
+ { name: 'German', code: 'deu_Latn' },
52
+ { name: 'Southwestern Dinka', code: 'dik_Latn' },
53
+ { name: 'Dyula', code: 'dyu_Latn' },
54
+ { name: 'Dzongkha', code: 'dzo_Tibt' },
55
+ { name: 'Greek', code: 'ell_Grek' },
56
+ { name: 'English', code: 'eng_Latn' },
57
+ { name: 'Esperanto', code: 'epo_Latn' },
58
+ { name: 'Estonian', code: 'est_Latn' },
59
+ { name: 'Basque', code: 'eus_Latn' },
60
+ { name: 'Ewe', code: 'ewe_Latn' },
61
+ { name: 'Faroese', code: 'fao_Latn' },
62
+ { name: 'Fijian', code: 'fij_Latn' },
63
+ { name: 'Finnish', code: 'fin_Latn' },
64
+ { name: 'Fon', code: 'fon_Latn' },
65
+ { name: 'French', code: 'fra_Latn' },
66
+ { name: 'Friulian', code: 'fur_Latn' },
67
+ { name: 'Nigerian Fulfulde', code: 'fuv_Latn' },
68
+ { name: 'Scottish Gaelic', code: 'gla_Latn' },
69
+ { name: 'Irish', code: 'gle_Latn' },
70
+ { name: 'Galician', code: 'glg_Latn' },
71
+ { name: 'Guarani', code: 'grn_Latn' },
72
+ { name: 'Gujarati', code: 'guj_Gujr' },
73
+ { name: 'Haitian Creole', code: 'hat_Latn' },
74
+ { name: 'Hausa', code: 'hau_Latn' },
75
+ { name: 'Hebrew', code: 'heb_Hebr' },
76
+ { name: 'Hindi', code: 'hin_Deva' },
77
+ { name: 'Chhattisgarhi', code: 'hne_Deva' },
78
+ { name: 'Croatian', code: 'hrv_Latn' },
79
+ { name: 'Hungarian', code: 'hun_Latn' },
80
+ { name: 'Armenian', code: 'hye_Armn' },
81
+ { name: 'Igbo', code: 'ibo_Latn' },
82
+ { name: 'Ilocano', code: 'ilo_Latn' },
83
+ { name: 'Indonesian', code: 'ind_Latn' },
84
+ { name: 'Icelandic', code: 'isl_Latn' },
85
+ { name: 'Italian', code: 'ita_Latn' },
86
+ { name: 'Javanese', code: 'jav_Latn' },
87
+ { name: 'Japanese', code: 'jpn_Jpan' },
88
+ { name: 'Kabyle', code: 'kab_Latn' },
89
+ { name: 'Jingpho', code: 'kac_Latn' },
90
+ { name: 'Kamba', code: 'kam_Latn' },
91
+ { name: 'Kannada', code: 'kan_Knda' },
92
+ { name: 'Kashmiri (Arabic script)', code: 'kas_Arab' },
93
+ { name: 'Kashmiri (Devanagari script)', code: 'kas_Deva' },
94
+ { name: 'Georgian', code: 'kat_Geor' },
95
+ { name: 'Central Kanuri (Arabic script)', code: 'knc_Arab' },
96
+ { name: 'Central Kanuri (Latin script)', code: 'knc_Latn' },
97
+ { name: 'Kazakh', code: 'kaz_Cyrl' },
98
+ { name: 'Kabiyè', code: 'kbp_Latn' },
99
+ { name: 'Kabuverdianu', code: 'kea_Latn' },
100
+ { name: 'Khmer', code: 'khm_Khmr' },
101
+ { name: 'Kikuyu', code: 'kik_Latn' },
102
+ { name: 'Kinyarwanda', code: 'kin_Latn' },
103
+ { name: 'Kyrgyz', code: 'kir_Cyrl' },
104
+ { name: 'Kimbundu', code: 'kmb_Latn' },
105
+ { name: 'Northern Kurdish', code: 'kmr_Latn' },
106
+ { name: 'Kikongo', code: 'kon_Latn' },
107
+ { name: 'Korean', code: 'kor_Hang' },
108
+ { name: 'Lao', code: 'lao_Laoo' },
109
+ { name: 'Ligurian', code: 'lij_Latn' },
110
+ { name: 'Limburgish', code: 'lim_Latn' },
111
+ { name: 'Lingala', code: 'lin_Latn' },
112
+ { name: 'Lithuanian', code: 'lit_Latn' },
113
+ { name: 'Lombard', code: 'lmo_Latn' },
114
+ { name: 'Latgalian', code: 'ltg_Latn' },
115
+ { name: 'Luxembourgish', code: 'ltz_Latn' },
116
+ { name: 'Luba-Kasai', code: 'lua_Latn' },
117
+ { name: 'Ganda', code: 'lug_Latn' },
118
+ { name: 'Luo', code: 'luo_Latn' },
119
+ { name: 'Mizo', code: 'lus_Latn' },
120
+ { name: 'Standard Latvian', code: 'lvs_Latn' },
121
+ { name: 'Magahi', code: 'mag_Deva' },
122
+ { name: 'Maithili', code: 'mai_Deva' },
123
+ { name: 'Malayalam', code: 'mal_Mlym' },
124
+ { name: 'Marathi', code: 'mar_Deva' },
125
+ { name: 'Minangkabau (Arabic script)', code: 'min_Arab' },
126
+ { name: 'Minangkabau (Latin script)', code: 'min_Latn' },
127
+ { name: 'Macedonian', code: 'mkd_Cyrl' },
128
+ { name: 'Plateau Malagasy', code: 'plt_Latn' },
129
+ { name: 'Maltese', code: 'mlt_Latn' },
130
+ { name: 'Meitei (Bengali script)', code: 'mni_Beng' },
131
+ { name: 'Halh Mongolian', code: 'khk_Cyrl' },
132
+ { name: 'Mossi', code: 'mos_Latn' },
133
+ { name: 'Maori', code: 'mri_Latn' },
134
+ { name: 'Burmese', code: 'mya_Mymr' },
135
+ { name: 'Dutch', code: 'nld_Latn' },
136
+ { name: 'Norwegian Nynorsk', code: 'nno_Latn' },
137
+ { name: 'Norwegian Bokmål', code: 'nob_Latn' },
138
+ { name: 'Nepali', code: 'npi_Deva' },
139
+ { name: 'Northern Sotho', code: 'nso_Latn' },
140
+ { name: 'Nuer', code: 'nus_Latn' },
141
+ { name: 'Nyanja', code: 'nya_Latn' },
142
+ { name: 'Occitan', code: 'oci_Latn' },
143
+ { name: 'West Central Oromo', code: 'gaz_Latn' },
144
+ { name: 'Odia', code: 'ory_Orya' },
145
+ { name: 'Pangasinan', code: 'pag_Latn' },
146
+ { name: 'Eastern Panjabi', code: 'pan_Guru' },
147
+ { name: 'Papiamento', code: 'pap_Latn' },
148
+ { name: 'Western Persian', code: 'pes_Arab' },
149
+ { name: 'Polish', code: 'pol_Latn' },
150
+ { name: 'Portuguese', code: 'por_Latn' },
151
+ { name: 'Dari', code: 'prs_Arab' },
152
+ { name: 'Southern Pashto', code: 'pbt_Arab' },
153
+ { name: 'Ayacucho Quechua', code: 'quy_Latn' },
154
+ { name: 'Romanian', code: 'ron_Latn' },
155
+ { name: 'Rundi', code: 'run_Latn' },
156
+ { name: 'Russian', code: 'rus_Cyrl' },
157
+ { name: 'Sango', code: 'sag_Latn' },
158
+ { name: 'Sanskrit', code: 'san_Deva' },
159
+ { name: 'Santali', code: 'sat_Olck' },
160
+ { name: 'Sicilian', code: 'scn_Latn' },
161
+ { name: 'Shan', code: 'shn_Mymr' },
162
+ { name: 'Sinhala', code: 'sin_Sinh' },
163
+ { name: 'Slovak', code: 'slk_Latn' },
164
+ { name: 'Slovenian', code: 'slv_Latn' },
165
+ { name: 'Slovenian', code: 'slv_Latn' },
166
+ { name: 'Samoan', code: 'smo_Latn' },
167
+ { name: 'Shona', code: 'sna_Latn' },
168
+ { name: 'Sindhi', code: 'snd_Arab' },
169
+ { name: 'Somali', code: 'som_Latn' },
170
+ { name: 'Southern Sotho', code: 'sot_Latn' },
171
+ { name: 'Spanish', code: 'spa_Latn' },
172
+ { name: 'Tosk Albanian', code: 'als_Latn' },
173
+ { name: 'Sardinian', code: 'srd_Latn' },
174
+ { name: 'Serbian', code: 'srp_Cyrl' },
175
+ { name: 'Swati', code: 'ssw_Latn' },
176
+ { name: 'Sundanese', code: 'sun_Latn' },
177
+ { name: 'Swedish', code: 'swe_Latn' },
178
+ { name: 'Swahili', code: 'swh_Latn' },
179
+ { name: 'Silesian', code: 'szl_Latn' },
180
+ { name: 'Tamil', code: 'tam_Taml' },
181
+ { name: 'Tatar', code: 'tat_Cyrl' },
182
+ { name: 'Telugu', code: 'tel_Telu' },
183
+ { name: 'Tajik', code: 'tgk_Cyrl' },
184
+ { name: 'Tagalog', code: 'tgl_Latn' },
185
+ { name: 'Thai', code: 'tha_Thai' },
186
+ { name: 'Tigrinya', code: 'tir_Ethi' },
187
+ { name: 'Tamasheq (Latin script)', code: 'taq_Latn' },
188
+ { name: 'Tamasheq (Tifinagh script)', code: 'taq_Tfng' },
189
+ { name: 'Tok Pisin', code: 'tpi_Latn' },
190
+ { name: 'Tswana', code: 'tsn_Latn' },
191
+ { name: 'Tsonga', code: 'tso_Latn' },
192
+ { name: 'Turkmen', code: 'tuk_Latn' },
193
+ { name: 'Tumbuka', code: 'tum_Latn' },
194
+ { name: 'Turkish', code: 'tur_Latn' },
195
+ { name: 'Twi', code: 'twi_Latn' },
196
+ { name: 'Central Atlas Tamazight', code: 'tzm_Tfng' },
197
+ { name: 'Uyghur', code: 'uig_Arab' },
198
+ { name: 'Ukrainian', code: 'ukr_Cyrl' },
199
+ { name: 'Umbundu', code: 'umb_Latn' },
200
+ { name: 'Urdu', code: 'urd_Arab' },
201
+ { name: 'Northern Uzbek', code: 'uzn_Latn' },
202
+ { name: 'Venetian', code: 'vec_Latn' },
203
+ { name: 'Vietnamese', code: 'vie_Latn' },
204
+ { name: 'Waray', code: 'war_Latn' },
205
+ { name: 'Wolof', code: 'wol_Latn' },
206
+ { name: 'Xhosa', code: 'xho_Latn' },
207
+ { name: 'Eastern Yiddish', code: 'ydd_Hebr' },
208
+ { name: 'Yoruba', code: 'yor_Latn' },
209
+ { name: 'Yue Chinese', code: 'yue_Hant' },
210
+ { name: 'Chinese (Simplified)', code: 'zho_Hans' },
211
+ { name: 'Chinese (Traditional)', code: 'zho_Hant' },
212
+ { name: 'Standard Malay', code: 'zsm_Latn' },
213
+ { name: 'Zulu', code: 'zul_Latn' },
214
+ ];
215
+
216
+ // Function to populate the dropdown options
217
+ function populateDropdown(select, options) {
218
+ options.forEach((option) => {
219
+ const optionElem = document.createElement('option');
220
+ optionElem.value = option.code;
221
+ optionElem.text = option.name;
222
+ select.add(optionElem);
223
+ });
224
+ }
225
+
226
+ // Call the function to populate dropdown options
227
+ populateDropdown(targetLangSelect, languages);
228
+ populateDropdown(sourceLangSelect, [{ name: 'Auto Detect', code: 'auto' }, ...languages]);
229
+
230
+ form.addEventListener('submit', async (e) => {
231
+ e.preventDefault();
232
+
233
+ const targetLang = targetLangSelect.value;
234
+ const sourceLang = sourceLangSelect.value;
235
+
236
+ try {
237
+ // Change placeholder text to "Translating..."
238
+ outputText.placeholder = 'Translating...';
239
+
240
+ let sourceLanguage;
241
+
242
+ // Check if Auto Detect is selected for source language
243
+ if (sourceLang === 'auto') {
244
+ const detectionResponse = await fetch('https://lewiskimaru-helloworld.hf.space/translate_detect/', {
245
+ method: 'POST',
246
+ headers: {
247
+ 'Content-Type': 'application/json'
248
+ },
249
+ body: JSON.stringify({
250
+ userinput: userInput.value,
251
+ target_lang: targetLang
252
+ })
253
+ });
254
+
255
+ const detectionData = await detectionResponse.json();
256
+ sourceLanguage = detectionData.source_language;
257
+ } else {
258
+ sourceLanguage = sourceLang;
259
+ }
260
+
261
+ // Check if Auto Detect is selected for target language
262
+ const targetLanguage = targetLang === 'auto' ? 'eng_Latn' : targetLang;
263
+
264
+ const translationResponse = await fetch('https://lewiskimaru-helloworld.hf.space/translate_enter/', {
265
+ method: 'POST',
266
+ headers: {
267
+ 'Content-Type': 'application/json'
268
+ },
269
+ body: JSON.stringify({
270
+ userinput: userInput.value,
271
+ target_lang: targetLanguage,
272
+ source_lang: sourceLanguage
273
+ })
274
+ });
275
+
276
+ const translatedText = (await translationResponse.json()).translated_text;
277
+
278
+ // Update placeholder with the translated text
279
+ outputText.placeholder = translatedText;
280
+
281
+ } catch (error) {
282
+ console.error(error);
283
+ outputText.placeholder = 'An error occurred. Please try again.';
284
+ }
285
+ });
286
+ });
287
+