nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
https://www.nvaccess.org/
Other
2.1k stars 634 forks source link

Double Announcing of Comma in Decimal Numbers When Punctuation Level is Set to All #4341

Closed nvaccessAuto closed 8 years ago

nvaccessAuto commented 10 years ago

Reported by ateu on 2014-07-29 13:31 Hi,

This is a really complicated problem, as I don't know whether it's caused by NVDA or by the synthesizer. When the punctuation level is set to all, the comma used in decimal numbers is spoken twice, but this just occurs if NVDA is used in a language other than English.

Steps to Reproduce:

  1. Set the punctuation level to all;
  2. Using Espeak (bundled version or sapi5), open any text editor and type a decimal number, such as 2,5.
  3. Change the Espeak'S language to Portuguese
  4. Read this number using the read current line command or arrowing down and then arrowing up.

Expected result: NVDA should speak 2 comma 5. Current result: NVDA says 2 comma vírgula (means comma in Portuguese) 5.

Note 1: This also occurs with other synthesizers, such as Microsoft Speech Engine (Mike, Mary and Sam), Pico TTS, Dec Talk, and other. Note 2: When Espeak is used with other screen reader, (as Sapi5), this doesn't occurs. Note 3: This just occurs in decimal numbers. If I write 2 or any number followed by comma and with no number after it, this doesn't occurs.

nvaccessAuto commented 10 years ago

Comment 1 by ateu on 2014-07-29 15:17 A small correction: not with espeak, but wih Pico TTS, Dectalk and Microsoft Speech Engine, the problem occurs, but in this case, NVDA says comma twice. But if Pico TTS is used in other language, NVDA says comma and comma translated into the language currently used.

nvaccessAuto commented 10 years ago

Comment 2 by jteh on 2014-07-30 00:34 This occurs because NVDA sends the comma to the synthesiser so it will get the correct inflection, but it also speaks the comma itself. Normally, the synthesiser doesn't speak commas itself. However, the decimal point is an exception.

The Portuguese symbols for NVDA define the decimal point as a full stop. If this is incorrect and it's actually a comma, this needs to be changed. So, this line:

decimal point   (?<=\d)\.(?=\d)

should be:

decimal point   (?<=\d),(?=\d)

and this line:

decimal point       none    always

needs to specify the correct Portuguese word(s) for the decimal point in the second field. Changes: Milestone changed from None to next

nvaccessAuto commented 10 years ago

Comment 3 by ateu on 2014-07-30 01:37 Hi Jamie,

I just can't understand this:

and this line: decimal point none always needs to specify the correct Portuguese word(s) for the decimal point in the second field.

nvaccessAuto commented 10 years ago

Comment 4 by jteh on 2014-07-30 02:00 If you look at this line:

decimal point       none    always

you'll see that there are several fields separated by tabs. The second field is currently blank, hence the double tab. So, it needs to be something like this:

decimal point   xxx none    always

where xxx is the Portuguese way of saying that this is a decimal point.

Hope this is clearer.

nvaccessAuto commented 9 years ago

Comment 5 by bdorer on 2015-06-12 21:43 SVN-Rev#22082 should fix this.

according to jamie's comment this line should be right assumingvírgula means Coma as you said : decimal point vírgula none always

nvaccessAuto commented 9 years ago

Comment 6 by bdorer on 2015-10-06 16:27 Closing as fixed as SVN-Rev#22082 has been included in NVDA 2015.3. @ateu please reopen if not. Changes: Milestone changed from next to 2015.3 State: closed