> ## Documentation Index
> Fetch the complete documentation index at: https://kb.hosting.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Using the internationalization (intl) extension in PHP

> Learn to use PHP's intl extension for locale-specific data processing and display with this code-inclusive guide.

This article describes how to use the internationalization (intl) extension in PHP to process and display locale-specific information.

## Using the internationalization extension

Hosting.com shared servers include support for PHP's internationalization extension, which is named *intl*. This extension enables you to specify a locale for your PHP applications. A locale is simply is a collection of the following region-specific settings:

* The alphabetical order used to sort text strings.

* Character classification and conversion, such as between uppercase and lowercase letters.

* Currency formatting.

* Decimal separator.

* Date and time formatting.

To view a list of locales available on your server, log in to your hosting.com account [using SSH](/docs/using-ssh-secure-shell), and then type the following command:

```bash theme={null}
locale -a
```

Most locales are in the format *xx\_YY*, where *xx* is a two-letter designation for the language, and *YY* is a two-letter designation for a country or region. Some locales also have an additional identifier that indicates the character set. For example, *en\_US* represents English in the United States, while *zh\_TW\.big5* represents Chinese in Taiwan using the Big5 character set.

The following code example demonstrates how to set locales using the **setlocale()** function. It uses an HTML table to display the current locale setting, as well as the date, time, and a number represented in the current locale:

```php theme={null}
<html>
<head><title>PHP intl example</title></head>
<body>
<table>
<tr><th>Encoding</th><th>Date/time</th><th>Number</th></tr>
<?php

    // Set the locale to French in France:
    setlocale( LC_ALL, 'fr_FR' );
    printRow();

    // Set the locale to English in the United States:
    setlocale( LC_ALL, 'en_US' );
    printRow();

    // This function generates a table row that displays various text using the current locale setting:
    function printRow()
    {
        $number = 133.52;

        print "<tr>";
        print "<td>". setlocale( LC_ALL, 0 ). "</td>";    // Calling setlocale() with locale '0' returns the current locale
        print "<td>". strftime( '%c' ). "</td>";
        print "<td>". $number. "</td>";
        print "</tr>";
    }
?>
</table>
</body>
</html>
```

If you run this example, you see the date and time format displayed differently for each locale. Similarly, the **\$number** variable is displayed differently: in French and Russian, the decimal separator is a comma (*133,52*), whereas in English it is a period (*133.52*).

<Note>
  Depending on the locale, you may also have to change the page's character encoding set to ensure that text displays correctly. In the example above, the Cyrillic characters may not display correctly when the locale is set to Russian. One way to fix this is to specify the character set directly in the HTTP header as follows:
</Note>

```
<?php
    header('Content-Type: text/html;charset=iso-8859-5');
?>
```

## More information

For more information about the **setlocale()** function, please visit [http://php.net/manual/en/function.setlocale.php](http://php.net/manual/en/function.setlocale.php).
