I am trying to create a French version of one of my sites. I have set setlocale(LC_ALL, 'fr_FR');
at the top of my page, and using strftime
I am displaying dates correctly in the French style.
However I am having some problems with a number. Part of the page uses data I am getting from a Web Service. I am assigning a returned value to a var like this:
$overallRating = $returnArray['Overall'];
I am then using the following code later to format it to 1 decimal place
number_format($overallRating,1)
In the English version the overallRating value might be 7.5
and returns a value such as 7.5
(the reason for running it through the number_format is if it returns 7
I want it to display 7.0
)
However in the French version if I print out the raw $overallRating value I get 7,5
which looks like it has translated it into french. This would be fine but if I run it through number_format
I get the error:
Notice: A non well formed numeric value encountered in /sites/index.php on line 250
Line 250 is the number_format
line
I presume the translation to 7,5
is messing it up, but not sure how to solve this...
Using PHP 5.3 in case there is anything new that helps me
So eventually found the answer after a lot of research.
PHP only really works with standard US decimal seperators and can't cope with the french , seperator.
The answer, although not perfect is to reset numeric values to use US while allowing dates etc to be formatted in French. Placing this line:
setlocale(LC_NUMERIC, 'C');
Under
setlocale(LC_ALL, 'fr_FR');
has done the trick
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With