Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

PHP String setlocale() Function



The PHP String setlocale() function is used to set locale information. Locale information refers to language, money, time, and other information related to a geographic area.

The setlocale() function modifies the locale just for the current script. The locale information can be set to the system default with setlocale(LC_ALL,NULL). The localeconv() function provides numeric formatting information.

Syntax

Below is the syntax of the PHP String setlocale() function −

string setlocale ( int $category, array $locale_array )

Parameters

Here are the parameters of the setlocale() function −

  • $category − It contains the information about what locale should be set.

  • $locale_array − It contains the information about country or region.

Return Value

The setlocale() function returns the current locale settings, or FALSE if unsuccessful. The return value is determined by the operating system on which PHP runs.

PHP Version

First introduced in core PHP 4, the setlocale() function continues to function easily in PHP 5, PHP 7, and PHP 8.

Example 1

First we will show you the basic example of the PHP String setlocale() function to set a basic locale for a specific category, such as time formatting.

<?php
   // Setting the locale for LC_TIME (date and time format)
   setlocale(LC_TIME, "en_US");

   // Displaying a formatted date using the set locale
   echo strftime("%A, %B %d, %Y"); 
?>

Output

Here is the outcome of the following code −

Monday, November 25, 2024

Example 2

In the below PHP code we will try to use the setlocale() function and show how to set different locale categories, like numeric and monetary formats.

<?php
   // Setting the locale for both LC_NUMERIC and LC_MONETARY
   setlocale(LC_NUMERIC, "de_DE");
   setlocale(LC_MONETARY, "de_DE");

   // Formatting a number using the German locale
   echo number_format(1234567.89, 2, ',', '.'); 

   // Displaying monetary information 
   echo "\n" . money_format('%.2n', 1234.56);
?> 

Output

This will generate the below output −

1.234.567,89
1.234,56 

Example 3

Now the below code tries to set the locale using an array of possible options with the help of setlocale() function.

<?php
   // Array of locale options (fallbacks)
   $locales = ["fr_FR", "fr_CA", "en_US"];

   // Attempt to set locale from array
   $locale_set = setlocale(LC_ALL, $locales);

   // Display the successfully set locale
   if ($locale_set) {
      echo "Locale set to: " . $locale_set;
   } else {
      echo "Failed to set locale.";
   }

   // Display formatted date in the set locale
   echo "\n" . strftime("%A, %d %B %Y");
?> 

Output

This will create the below output −

Locale set to: en_US
Monday, 25 November 2024

Example 4

This program shows how to reset the locale using the setlocale() function to the system's default setting and use localeconv() for numeric formatting information.

<?php
   // Reset locale to system default
   setlocale(LC_ALL, NULL);

   // Fetching and displaying locale numeric settings
   $locale_info = localeconv();
   print_r($locale_info);

   // Displaying number formatting
   echo "Decimal point: " . $locale_info['decimal_point'] . "\n";
   echo "Thousands separator: " . $locale_info['thousands_sep'] . "\n";

   // Formatting a number 
   echo number_format(1234567.89, 2, $locale_info['decimal_point'], $locale_info['thousands_sep']);
?> 

Output

Following is the output of the above code −

Array
(
   [decimal_point] => .
   [thousands_sep] => ,
   [int_curr_symbol] => USD 
   [currency_symbol] => $
   [mon_decimal_point] => .
   [mon_thousands_sep] => ,
   [positive_sign] => 
   [negative_sign] => -
   [int_frac_digits] => 2
   [frac_digits] => 2
   [p_cs_precedes] => 1
   [p_sep_by_space] => 0
   [n_cs_precedes] => 1
   [n_sep_by_space] => 0
   [p_sign_posn] => 1
   [n_sign_posn] => 1
   [grouping] => Array
      (
         [0] => 3
         [1] => 3
      )

   [mon_grouping] => Array
      (
         [0] => 3
         [1] => 3
      )
)
Decimal point: .
Thousands separator: ,
1,234,567.89
php_function_reference.htm
Advertisements