Repository: nvaccess/nvda

Issue:
Excel - With some synth/languages the address and content of a selected range is not read correctly
### Steps to reproduce:

* Set eSpeak in French
* Open Excel
* In cell A1 enter 111 and in cell A2 enter 333
* Select the range from A1 to A2

### Actual behavior:

NVDA reads:
"de A1 111 à A2 333  sélectionné"
I.e., fully writing the digits with letters:
"de A mille cent-onze à A deux mille trois cent trente-trois sélectionné"

The synthesizer combines the 1 from "A1" with the value "111" to read "1 111" (mille cent onze = one thousand eleven). Indeed the space is use as thousand separator in French (as well as many other languages).

### Expected behavior:

NVDA should read
"de A un cent onze à A deux trois cent trente-trois sélectionné"

### Additional comments

When selecting cells in Excel, the cell address and the cell content are read for first and last cell, e.g. "A1 111".
However, in French as in many other languages, the space is used as thousand separator.
Thus the French synth reads the letter "A" and then the number "1111", instead of reading the address "A1" and the number "111". 

The issue is present:
* with eSpeak with French, German, Polish and Dutch (among others)
* with IBMTTS with all languages except English, i.e. French, German, Spanish, Italian, Portuguese, Finnish

### System configuration
#### NVDA installed/portable/running from source:
installed and from source

#### NVDA version:
NVDA 2020.2beta2 (installed) and last master branch (from source)

#### Windows version:

Windows 10

#### Name and version of other software in use when reproducing the issue:
N/A
#### Other information about your system:

### Other questions
#### Does the issue still occur after restarting your computer?
Yes
#### Have you tried any other versions of NVDA? If so, please report their behaviors.
No but remember that this issue has always been there.
#### If addons are disabled, is your problem still occuring?
Yes
#### Did you try to run the COM registry fixing tool in NVDA menu / tools?
No


Discussion:

Resolving patch:
diff --git a/source/NVDAObjects/window/excel.py b/source/NVDAObjects/window/excel.py
--- a/source/NVDAObjects/window/excel.py
+++ b/source/NVDAObjects/window/excel.py
@@ -1487,7 +1487,14 @@ def _get_name(self):
 		firstCell=self.excelRangeObject.Item(1)
 		lastCell=self.excelRangeObject.Item(self.excelRangeObject.Count)
 		# Translators: This is presented in Excel to show the current selection, for example 'a1 c3 through a10 c10'
-		return _("{firstAddress} {firstContent} through {lastAddress} {lastContent}").format(firstAddress=self.getCellAddress(firstCell),firstContent=firstCell.Text,lastAddress=self.getCellAddress(lastCell),lastContent=lastCell.Text)
+		# Beware to keep two spaces between the address and the content. Otherwise some synthesizer
+		# may mix the address and the content when the cell contains a 3-digit number.
+		return _("{firstAddress}  {firstContent} through {lastAddress}  {lastContent}").format(
+			firstAddress=self.getCellAddress(firstCell),
+			firstContent=firstCell.Text,
+			lastAddress=self.getCellAddress(lastCell),
+			lastContent=lastCell.Text
+		)
 
 	def _get_parent(self):
 		worksheet=self.excelRangeObject.Worksheet


Test patch: