A menudo es útil escuchar la puntuación y otros símbolos pronunciados como palabras cuando se lee texto, particularmente cuando te mueves por caracteres.
Desafortunadamente, la pronunciación de símbolos es inconsistente entre los sintetizadores de voz y muchos no verbalizan muchos símbolos y/o no permiten control sobre qué símbolos se verbalizan. No obstante, NVDA permite que se proporcione información acerca de la pronunciación de símbolos.
Esto se hace para una traducción proporcionando un fichero llamado symbols.dic en el directorio para la traducción.
Este es un fichero de texto codificado en UTF-8. Las líneas en blanco y las líneas que comienzan con un carácter «#» se ignoran. Todas las traducciones heredan implícitamente la información de símbolos del inglés, aunque cualquiera de esta información se puede sobreescribir.
El fichero contiene dos secciones.

Definiendo Símbolos Complejos

La primera sección es opcional y define patrones de expresiones regulares para símbolos complejos. Los símbolos complejos son símbolos que no son un solo carácter o secuencia de caracteres, y en su lugar requieren una igualdad más complicada. Un ejemplo es el punto (.) fin de frase en inglés. El «.» se utiliza para múltiples propósitos, así que se requiere una verificación más complicada para determinar si esto se refiere al final de una frase.
La sección de símbolos complejos comienza por la línea:

complexSymbols:

Las líneas subsiguientes contienen un identificador textual utilizado para identificar el símbolo, un tabulador y un patrón de expresión regular para ese símbolo.
Por ejemplo:

. sentence ending (?<=[^\s.])\.(?=[\"')\s]|$)

Nuevamente, las demás traducciones heredan los símbolos en inglés, así no necesitas incluir ningún símbolo complejo ya definido para este idioma.

Definiendo Información de Símbolos

La segunda sección proporciona información acerca de cuándo y cómo pronunciar todos los símbolos. Comienza con la línea:

symbols:

Las líneas subsiguientes deberían contener varios campos separados por tabuladores. Los únicos campos obligatorios son los identificadores y los reemplazos. Los predeterminados se utilizarán para los campos omitidos. Los campos son los siguientes:

  • identifier: el identificador del símbolo. En la mayoría de los casos, este es sólo el carácter o caracteres del símbolo. Sin embargo, también puede ser el identificador de un símbolo complejo. Ciertos caracteres no pueden teclearse en el fichero, así que pueden usarse las siguientes secuencias especiales:
    • \0: nulo
    • \t: tab
    • \n: salto de línea
    • \r: retorno de carro
    • \f: envío de formulario
    • \#: el carácter # (necesario porque # en el principio de una línea denota un comentario)
  • replacement: El texto que debería verbalizarse por el símbolo.
  • level: el nivel del símbolo en el cual debería verbalizarse. El nivel del símbolo se configura por el usuario y especifica la cantidad de símbolos que deberían verbalizarse. Este campo debería contener uno de los niveles «none», «some», «most», «all» o «char», o «-» para utilizar el predeterminado. «char» significa que el símbolo sólo debería pronunciarse cuando se mueba por caracteres. El predeterminado es heredar el valor o «all» si no hay nada a heredar
  • preserve: si el símbolo mismo debería preservarse para facilitar la pronunciación correcta por el sintetizador

Por ejemplo, los símbolos que causan pausas o inflexión (tales como la coma en inglés) deberían preservarse. Este campo debería ser uno de los siguientes:

  • never: Nunca preserva el símbolo
  • always: siempre preserva el símbolo
  • norep: Sólo preserva el símbolo si no está siendo reemplazado; es decir, el usuario ha ajustado el nivel del símbolo más bajo que el nivel de este símbolo
  • -: Utiliza el predeterminado

El predeterminado se hereda del valor, o «never» si no hay nada a heredar. Finalmente, puede proporcionarse un nombre a mostrar para el símbolo en un comentario después de un tabulador en el final de la línea. Este se mostrará a los usuarios cuando editen la información del símbolo y es especialmente útil para que los traductores definan nombres traducidos para los símbolos complejos en inglés.
Aquí van unos pocos ejemplos:

( cerrar paréntesis most

Esto significa que el carácter «(» debería verbalizarse como «cerrar paréntesis” sólo cuando el nivel de símbolos esté fijado a la mayoría o mayor; es decir, la mayoría o todo.

, coma all always

Esto significa que el carácter «,» debería verbalizarse como «coma» cuando el nivel de símbolos esté fijado a todo y que el carácter mismo siempre debería preservarse tal que el sintetizador pausará apropiadamente.

. sentence ending point # . fin de phrase

Esta línea aparece en los símbolos del fichero French.dic. Significa que el símbolo complejo «. sentence ending» debería verbalizarse como «punto». Level y preserve no se especificaron, así se tomarán desde el Inglés. Se proporciona un nombre a mostrar tal que los usuarios franceses sabrán qué representa el símbolo.
Este también es un buen ejemplo completo.

Notas

Dónde encontrar los símbolos ingleses

Para el proceso manual: Por favor mira el fichero locale\en\symbols.dic para las definiciones en inglés de las que heredan todas las traducciones.
Para el proceso automático: se encuentra una copia del symbols.dic en inglés en tu área de trabajo.

Separador de miles

Si tu idioma utiliza un separador de miles como un punto (.) el cual se maneja incorrectamente debido a otras reglas, necesitarás definir un patrón de símbolo complejo para él. Por ejemplo, si tu idioma utiliza una comma (,) como su separador de miles, incluirías lo siguiente en la sección complex symbols:

thousands separator (?<=\d)\,(?=\d)

También incluirías algo como lo siguiente en la sección principal symbols:

thousands separator comma all norep