From 8b09f20d7dc6c476bcba83f5932f9d18b66ef507 Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Wed, 14 Jul 2010 15:05:28 +0300
Subject: [PATCH] EXT-8310 FIXED Incorrect currency format in the Buy L$
 floater.

Changes in the Buy L$ floater:
* Set system locale before formatting currency.
* Made money format configurable (via strings.xml).
* Placed the "L$" label to the right of the line editor in FR locale.

Details:
Actually, the proper way to fix this and similar number formatting bugs would be to set the system locale at startup, but:
1. That triggers assertions when parsing locale-agnostic XML files like avatar_skeleton.xml.
2. I'm wary of making such global changes so close to the 2.1 release.
Therefore I just temporarily override current locale before formatting a number and restore the previous locale afterwards.

Reviewed by Tofu at https://codereview.productengine.com/secondlife/r/751/

--HG--
branch : product-engine
---
 indra/newview/llcurrencyuimanager.cpp                    | 9 ++++++++-
 indra/newview/skins/default/xui/en/strings.xml           | 3 +++
 .../skins/default/xui/fr/floater_buy_currency.xml        | 4 ++--
 indra/newview/skins/default/xui/fr/strings.xml           | 1 +
 4 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llcurrencyuimanager.cpp b/indra/newview/llcurrencyuimanager.cpp
index fd3df359bd7..7ebcef943ee 100644
--- a/indra/newview/llcurrencyuimanager.cpp
+++ b/indra/newview/llcurrencyuimanager.cpp
@@ -35,6 +35,8 @@
 #include "lluictrlfactory.h"
 #include "lltextbox.h"
 #include "lllineeditor.h"
+#include "llresmgr.h" // for LLLocale
+#include "lltrans.h"
 #include "llviewercontrol.h"
 #include "llversioninfo.h"
 
@@ -323,7 +325,12 @@ std::string LLCurrencyUIManager::Impl::getLocalEstimate() const
 	if (mUSDCurrencyEstimated)
 	{
 		// we have the old-style USD-specific value
-		return "US$ " + llformat("%#.2f", mUSDCurrencyEstimatedCost / 100.0);
+		LLStringUtil::format_map_t args;
+		{
+			LLLocale locale_override(LLStringUtil::getLocale());
+			args["[AMOUNT]"] = llformat("%#.2f", mUSDCurrencyEstimatedCost / 100.0);
+		}
+		return LLTrans::getString("LocalEstimateUSD", args);
 	}
 	return "";
 }
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index b91acbe27da..dfca7657835 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -3222,4 +3222,7 @@ Abuse Report</string>
   <string name="dateTimeDayFormat">[MDAY]</string>
   <string name="dateTimeAM">AM</string>
   <string name="dateTimePM">PM</string>
+
+  <!--  currency formatting -->
+  <string name="LocalEstimateUSD">US$ [AMOUNT]</string>
   </strings>
diff --git a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
index 4eaff8535e7..b3acc830789 100644
--- a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
@@ -22,10 +22,10 @@ le Lindex...
 	<text name="currency_action">
 		Je veux acheter
 	</text>
-	<text name="currency_label">
+	<text name="currency_label" left="308">
 		L$
 	</text>
-	<line_editor label="L$" name="currency_amt" width="65">
+	<line_editor label="L$" name="currency_amt" width="65" left_pad="-85">
 		1234
 	</line_editor>
 	<text name="buying_label">
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index f8da908cff2..e6da5f4a3d8 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -3817,4 +3817,5 @@ de l&apos;infraction signalée
 	<string name="dateTimePM">
 		PM
 	</string>
+	<string name="LocalEstimateUSD">[AMOUNT] US$</string>
 </strings>
-- 
GitLab