Bug 157396 - When choosing Italian language, REPLACE function is translated as SUBSTITUTE and vice versa
Summary: When choosing Italian language, REPLACE function is translated as SUBSTITUTE ...
Status: NEW
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Localization (show other bugs)
Version:
(earliest affected)
7.5.6.2 release
Hardware: All All
: medium normal
Assignee: Not Assigned
URL:
Whiteboard:
Keywords: bibisectRequest, regression
Depends on:
Blocks: Calc-Function
  Show dependency treegraph
 
Reported: 2023-09-23 13:56 UTC by Aq222
Modified: 2023-10-08 12:57 UTC (History)
5 users (show)

See Also:
Crash report or crash signature:


Attachments
Print-screen showing ENG and ITa versions for comparison (48.62 KB, application/vnd.oasis.opendocument.spreadsheet)
2023-09-23 13:56 UTC, Aq222
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Aq222 2023-09-23 13:56:48 UTC
Created attachment 189771 [details]
Print-screen showing ENG and ITa versions for comparison

On Libreoffice 7.5 and 7.6 (Italian translation) the REPLACE function is translated to SUBSTITUTE and vice versa.
Hence, in order to use SUBSTITUTE (Ita: SOSTITUISCI) function one needs to type REPLACE (Ita: RIMPIAZZA).


See attached file for print-screens.


7.4 version is ok.

Thank you for your assistance!
Comment 1 ady 2023-09-23 16:33:30 UTC
I confirmed the problem in LO 7.6.1.2.

I have not tested similar functions, such as REPLACEB().

I don't know whether this is a "simple" translation problem of Calc functions, or whether this will screw up all ODS (and other spreadsheet file formats) documents created in the affected versions.

We also have to wonder whether other languages might be affected in a similar way.

IMO, this is not just a NORMAL bug, because of the consequences for users building formulas (in Italian, at least, if not for other languages too).

CC'ing Eike and Xisco.
Comment 2 Aq222 2023-09-23 17:47:34 UTC
Based on my tests, the formulae work fine (i.e. no impact on result), as when switching versions only the formula name was different.
Comment 3 ady 2023-09-23 21:35:22 UTC
(In reply to Aq222 from comment #2)
> Based on my tests, the formulae work fine (i.e. no impact on result), as
> when switching versions only the formula name was different.

That is only part of the problem.

* Imagine you are not aware of this issue, and you see the name of the function differently than expected.

* A user of such spreadsheet might not be the same one that created the formula in some older version.

* A user creating a formula using Italian function names in the affected versions would end up with unexpected results, whether the users notices such results or not. It would not be clear why the results are as they are.

Whichever the case, IMO the origin of these incorrect translations should be reviewed ASAP, together with other potential incorrect translations (of the same functions to other languages, similar functions to any language, and so on). > Asking bibisectRequest.

Although I have not tested LO 7.4 in Italian, the problem is not present in some older version I did test > regression.

@Xisco, please modify the importance of this report.
Comment 4 ady 2023-09-23 21:47:46 UTC
STR:

(Italian Language UI must be installed as part of LO installation)

1.
Cell A1: a
Cell A2: bb

2. Cell A3 (using semicolon as argument separator):
=REPLACE(A1;1;1;A2)

3. Save as ods.

4. Menu Tools > Options > LibreOffice Calc > Formula > UNcheck "Use English function names".

5. Menu Tools > Options > Language Settings > User interface > Italian. Accept restarting LO.

Review cell A3 in the file created in step 3. The result (i.e. function name) is as described in comment 0.
Comment 5 Julien Nabet 2023-09-24 09:52:23 UTC
Valter:
here are the strings in formula/messages.po:
   1479 #. EVEza
   1480 #: formula/inc/core_resource.hrc:2525
   1481 msgctxt "RID_STRLIST_FUNCTION_NAMES"
   1482 msgid "SUBSTITUTE"
   1483 msgstr "RIMPIAZZA"

   1395 #. dL3Bf
   1396 #: formula/inc/core_resource.hrc:2511
   1397 msgctxt "RID_STRLIST_FUNCTION_NAMES"
   1398 msgid "REPLACE"
   1399 msgstr "SOSTITUISCI"

   1461 #. hMJEw
   1462 #: formula/inc/core_resource.hrc:2522
   1463 msgctxt "RID_STRLIST_FUNCTION_NAMES"
   1464 msgid "REPLACEB"
   1465 msgstr "SOSTITUISCI.B"



There are also strings in helpcontent2/source/text/scalc/01.po:
helpcontent2/source/text/scalc/01.po:21979:msgstr "<bookmark_value>RIMPIAZZA, funzione</bookmark_value>"
helpcontent2/source/text/scalc/01.po:21988:msgstr "RIMPIAZZA"
helpcontent2/source/text/scalc/01.po:22006:msgstr "RIMPIAZZA(\"Testo\"; \"CercaTesto\"; \"Nuovo testo\" [; Occorrenza])"
helpcontent2/source/text/scalc/01.po:22051:msgstr "<item type=\"input\">=RIMPIAZZA(\"123123123\"; \"3\"; \"abc\")</item> restituisce 12abc12abc12abc."
helpcontent2/source/text/scalc/01.po:22060:msgstr "<item type=\"input\">=RIMPIAZZA(\"123123123\";\"3\";\"abc\";2)</item> restituisce 12312abc123."

helpcontent2/source/text/scalc/01.po:21583:msgstr "<bookmark_value>SOSTITUISCI, funzione</bookmark_value>"
helpcontent2/source/text/scalc/01.po:21592:msgstr "SOSTITUISCI"
helpcontent2/source/text/scalc/01.po:21619:msgstr "SOSTITUISCI(\"Testo\"; Posizione; Numero caratteri; \"Nuovo testo\")"
helpcontent2/source/text/scalc/01.po:21664:msgstr "<item type=\"input\">=SOSTITUISCI(\"1234567\";1;1;\"444\")</item> restituisce \"444234567\". Un carattere alla posizione 1 viene sostituito dai caratteri specificati come <item type=\"literal\">Nuovo testo</item>."
helpcontent2/source/text/scalc/01.po:65908:msgstr "Funzione SOSTITUISCI.B"
helpcontent2/source/text/scalc/01.po:65917:msgstr "<bookmark_value>SOSTITUISCI.B, funzione</bookmark_value>            <bookmark_value>Sostituire testo;Funzione SOSTITUISCI.B</bookmark_value>"
helpcontent2/source/text/scalc/01.po:65926:msgstr "<variable id=\"replaceb\"><link href=\"text/scalc/01/func_replaceb.xhp\">SOSTITUISCI.B</link></variable>"
helpcontent2/source/text/scalc/01.po:65944:msgstr "SOSTITUISCI.B( Testo ; Posizione ; Lunghezza ; Nuovo testo )"
helpcontent2/source/text/scalc/01.po:65989:msgstr "<input>=SOSTITUISCI.B(\"ᄩᄔᄕᄜᄝᄞᄠᄢᄣᄫᄬᄭᄮᄯᄲᄶ\";4;1;\"ab\")</input> restituisce \"ᄩ abᄕᄜᄝᄞᄠᄢᄣᄫᄬᄭᄮᄯᄲᄶ\" ."
helpcontent2/source/text/scalc/01.po:65998:msgstr "<link href=\"https://wiki.documentfoundation.org/Documentation/Calc_Functions/REPLACEB\">Pagina wiki relativa a SOSTITUISCI.B</link> (in inglese)."

Just noticing it's on purpose considering:
https://translations.documentfoundation.org/translate/libo_ui-master/formulamessages/it/?checksum=f1e7c0c3021663f0&q=note%3AEVEza&sort_by=-priority%2Cposition

I let you discuss about it as Italian speakers.
Comment 6 Aq222 2023-10-08 12:57:57 UTC
I don't know that much what you have input, but one thing is certain:
REPLACE is translated as RIMPIAZZA and SUBSTITUTE as SOSTITUISCI.

As an example, if I have understood the baove strings correctly the result should be:
   1479 #. EVEza
   1480 #: formula/inc/core_resource.hrc:2525
   1481 msgctxt "RID_STRLIST_FUNCTION_NAMES"
   1482 msgid "SUBSTITUTE"
   1483 msgstr "SOSTITUISCI"

   1395 #. dL3Bf
   1396 #: formula/inc/core_resource.hrc:2511
   1397 msgctxt "RID_STRLIST_FUNCTION_NAMES"
   1398 msgid "REPLACE"
   1399 msgstr "RIMPIAZZA"

As also reported in the second part of your comment, LO explains the function. As replace and substitute are inverted, their function descriptions are inverted too.