Nova funció Polidic

Polidic, voldria afegir una funció nova a polidic: afegir un botó nou a continuació de l’entrada ‘cercar’ i el botó cercar/confirmar, aquest botó conte un altaveu com icona, de forma que al pemèr-lo converteix el text de l’entrada en àudio (veu anglesa). És complicat?

No, no és gaire complicat! Afegir un botó amb un icona d’altaveu que llegeixi en veu alta (text-to-speech, TTS) el contingut de l’entrada de cerca en anglès és una funcionalitat bastant estàndard en navegadors moderns, gràcies a l’API Web Speech API, concretament la part de SpeechSynthesis.

Aquí tens una guia senzilla per implementar-ho a Polidic:


✅ Passos per afegir el botó de lectura en veu alta

1. Afegir el botó al HTML

Suposant que tens una entrada de text amb id searchInput i un botó de cerca, afegeix un botó nou al costat:

<input type="text" id="searchInput" placeholder="Cerca...">
<button id="searchButton">Cercar</button>
<button id="speakButton" title="Llegir en veu alta">
  <span>🔊</span> <!-- o usa un ícona SVG o Font Awesome -->
</button>

💡 Si vols un ícona més professional, pots fer servir una llibreria com Font Awesome (<i class="fas fa-volume-up"></i>) o un SVG.


2. Afegir el JavaScript per fer la lectura

document.getElementById('speakButton').addEventListener('click', () => {
  const text = document.getElementById('searchInput').value.trim();
  if (!text) return; // No diu res si està buit

  // Cancel·la qualsevol parla anterior
  speechSynthesis.cancel();

  const utterance = new SpeechSynthesisUtterance(text);
  utterance.lang = 'en-US'; // Veu en anglès (USA)
  utterance.rate = 1;       // Velocitat normal
  utterance.pitch = 1;      // To normal

  // Opcional: escull una veu específica en anglès si vols
  // speechSynthesis.getVoices() es carrega asíncronament, així que cal esperar
  utterance.addEventListener('start', () => {
    // Opcional: canviar l’estat del botó (ex: desactivar temporalment)
  });

  speechSynthesis.speak(utterance);
});

⚠️ Nota important: speechSynthesis.getVoices() pot trigar a carregar. Si vols triar una veu concreta (per exemple, “Google US English”), cal esperar almenys un esdeveniment voiceschanged:

let voicesLoaded = false;
speechSynthesis.addEventListener('voiceschanged', () => {
  voicesLoaded = true;
});

// I dins del botó:
if (voicesLoaded) {
  const voices = speechSynthesis.getVoices();
  const englishVoice = voices.find(voice => voice.lang === 'en-US');
  if (englishVoice) utterance.voice = englishVoice;
}

Però no és obligatori: si només poses utterance.lang = 'en-US', el navegador triarà automàticament una veu en anglès disponible.


3. Estils (opcional)

Per fer que el botó quedi bé:

#speakButton {
  background: none;
  border: none;
  font-size: 1.2em;
  cursor: pointer;
  padding: 0 8px;
  color: #333;
}
#speakButton:hover {
  color: #007bff;
}

✅ Comprovacions finals

  • Funciona en Chrome, Edge, Firefox (Safari també, però amb menys veus).
  • No requereix connexió externa: és nativa del navegador.
  • Respecta la privacitat: el text no surt del navegador.

🧪 Prova ràpida

Obre la consola del navegador i prova això:

const u = new SpeechSynthesisUtterance("Hello, this is a test.");
u.lang = "en-US";
speechSynthesis.speak(u);

Si ho llegeix en anglès, ja tens el suport actiu!


Vols que t’ajudi a integrar-ho directament al codi actual de Polidic? Si em passes un tros del HTML/JS on està la barra de cerca, et puc donar el codi exacte per enganxar.

Procés per carregar un diccionari a Polidic

1 pasar dic.epub -> dic.txt

2 eliminar línies en blanc i aconseguir un fitxer dic_trac.txt amb visual code o 010 editor :

S:\Diccionaris txt/collins englis-spanish.txt:

a ———–>
A [eɪ ] N (Mus) la m
KEYWORD
a [eɪ , ə ] INDEF ART (before vowel or silent h: an) 1 un(a ) ; a book un libro ; an apple una manzana ; she’s a doctor (ella) es médica 2 (instead of the number “one”) un(a ) ; a year ago hace un año ; a hundred/thousand etc dollars cien/mil etc dólares
3 (in expressing ratios, prices etc) : three a day/week tres al día/a la semana ; 10 miles an hour 10 millas por hora ; $20 a person $20 por persona ; 50 cents a pound 50 centavos la libra
A.A. N ABBR ( = Alcoholics Anonymous ) Alcohólicos Anónimos ; (Brit : = Automobile Association ) asociación automovilística británica
A.A.A. (US) N ABBR ( = American Automobile Association ) asociación automovilística estadounidense
aback [əˈbæk ] ADV : to be taken aback quedar desconcertado
abandon [əˈbændən ] VT abandonar ; (give up) renunciar a
abate [əˈbeɪt ] VI (storm) amainar ; (anger) aplacarse ; (terror) disminuir
abattoir ˈæbətwɑːr N rastro (Mex) , matadero (LAm exc Mex) (Sp)

Z

3 Obrir l’escript: s./carregador/

4 obrir el fitxer: S:\Diccionaris txt/collins englis-spanish.txt amb visual code selecciona nomes les paraules que comencen amb a i salva el fitxer A1.txt a S:/carregador/A1.txt

5 fe corre al navegador: 81.0.60.36–/carregador/carregador_bdq.php/ s’ha de veure com es van carregant les linies:

1: Qualificador: | Català: Aa ———–> | Pronunciació: | Castellà:
2: Qualificador: | Català: A [eɪ ] N | Pronunciació: Mus | Castellà: la m
3: Qualificador: | Català: a [eɪ , ə ] INDEF | Pronunciació: before vowel or silent h: an | Castellà: 1 un(a ) ; a book un libro ; an apple una manzana ; she’s a doctor (ella) es médica 2 (instead of the number “one”) un(a ) ; a year ago hace un año ; a hundred/thousand etc dollars cien/mil etc dólares
4: Qualificador: | Català: 3 | Pronunciació: in expressing ratios, prices etc | Castellà: : three a day/week tres al día/a la semana ; 10 miles an hour 10 millas por hora ; $20 a person $20 por persona ; 50 cents a pound 50 centavos la libra
5: Qualificador: | Català: A.A. N ABBR | Pronunciació: = Alcoholics Anonymous | Castellà: Alcohólicos Anónimos ; (Brit : = Automobile Association ) asociación automovilística británica
6: Qualificador: | Català: A.A.A. | Pronunciació: US | Castellà: N ABBR ( = American Automobile Association ) asociación automovilística estadounidense
7: Qualificador: | Català: aback [əˈbæk ] AD | Pronunciació: | Castellà: V : to be taken aback quedar desconcertado
8: Qualificador: | Català: abandon [əˈbændə | Pronunciació: give up | Castellà: renunciar a
9: Qualificador: | Català: abate [əˈbeɪt ] V | Pronunciació: storm | Castellà: amainar ; (anger) aplacarse ; (terror) disminuir

6 Comprovar si s’ha carregat la Taula de la BD

Ara inclourem aquest diccionari a polidic

Obrir amb visual code la taula mes_taules_lang.php i afegim:

<li><a href=”index.php?dic=english_spanish&lang=’ . $lang_actual . ‘”>English-Spanish</a></li>

Obrir polidic (0capsa_dic)/func.php amb include(‘diccionaris_default.php‘);

      //----anglès------
        "collins_english" => "English Dictionary",
        "english_oxford" => "Oxford English Dictionary",
        "castella_angles" => " Diccionario Castellano/English",
        "espurnes_eng" => "Spark Dictionary",
        "irregular_verbs" => "English irregular verbs",
        "phrasals_verbs" => "English phrasals_verbs",
        "temps_verbals" => "English temps verbals",
        "english_collins_uk" => "Collins English Dictionary",
        "english_castilian" => "English/Spanish Dictionary",
        "collins_english_spanish" => "English/Spanish Dictionary" -->TAULA DICCIONARI
    ];

Amb aquests tres fitxers es controlen els diccionaris: mes_taules_lang.php, func.php i diccionaris_default.php