Difference between #1 and #3 of
Getting information from the current locale

Changes

Title unchanged

Getting information from the current locale

Category unchanged

How-tos

Yii version unchanged

2.0

Tags changed

i18n,locale,language,formatting rules

Content changed

Yii 2.0 comes with a [formatter component](https://www.yiiframework.com/doc/api/2.0/yii-i18n-formatter) to format dates, numbers, and other values for international users according to their locale. This is very useful for displaying data. When working with incoming data or when using enhanced input methods like the [MaskedInput widget](https://www.yiiframework.com/doc/api/2.0/yii-widgets-maskedinput) you sometimes need to access part the symbols used by the formatter to generate a pattern or parse the input. The Yii formatter does not have methods to access this data, it relies on the [PHP intl extension](https://secure.php.net/manual/en/book.intl.php) for formatting. If you want to access the formatting symbols you need to work with intl directly. ## Getting decimal and thousand separator ```php $locale = 'de_DE';
 
 
$formatter = new \NumberFormatter($locale,\NumberFormatter::DECIMAL);
 
$decimalSeparator = $formatter->getSymbol(\NumberFormatter::DECIMAL_SEPARATOR_SYMBOL); $thousandSeparator = $formatter->getSymbol(\NumberFormatter::GROUPING_SEPARATOR_SYMBOL); ``` There are more symbols than shown above, for the full list of constants see <symbols see the [list of NumberFormatter constants in the php manual](https://secure.php.net/manual/en/class.numberformatter.php#intl.numberformatter-constants.unumberformatsymbol>).
 
# Getting a currency symbol
 
 
Getting the currency symbol is a bit more complicated if you do not want the symbol of the default currency of a locale, but another currency:
 
 
```php
 
$locale = 'de_DE'; // get the currency symbol of Germanys default currency EUR = "€"
 
$locale = 'de_DE@currency=USD'; // get the currency symbol of USD in German locale = "$"
 
 
$formatter = new \NumberFormatter($locale, \NumberFormatter::CURRENCY);
 
 
$currencySymbol = $formatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);
 
```
 
 
Note, that the `NumberFormatter` is instantiated with the `CURRENCY` constant instead of `DECIMAL` here.
 
 
Since Yii 2.0.14 Yii has this method built-in in the [Locale](https://www.yiiframework.com/doc/api/2.0/yii-i18n-locale#getCurrencySymbol()-detail) class.
5 0
2 followers
Viewed: 21 555 times
Version: 2.0
Category: How-tos
Written by: CeBe
Last updated by: CeBe
Created on: Aug 9, 2018
Last updated: 6 years ago
Update Article

Revisions

View all history