mrateb
mrateb

Reputation: 2499

Yii2 - Currency symbol position

In Yii2 I'm using the function Yii::$app->formatter->asCurrency($sellingPrice); to print currencies. As the locale is Danish the output for this is something like

10,00 kr

Now I've been trying to use this same function to display

kr 10,00 

but I cant find how to do this.

The documentation's directions are to set those options through $numberFormatterOptions and $numberFormatterTextOptions, but no directions as to what exactly to set for those

I tried, among a thousand other things:

Yii::$app->formatter->asCurrency($modifier->getMoneyFormat('sellingPrice'), null, [NumberFormatter::PADDING_POSITION => NumberFormatter::PAD_BEFORE_PREFIX], [NumberFormatter::PADDING_POSITION => NumberFormatter::PAD_BEFORE_PREFIX]) 

but this won't work. I also tried passing [NumberFormatter::PAD_BEFORE_PREFIX => true] to both $numberFormatterOptions and $numberFormatterTextOptions but both wont work.

What am I doing wrong? Or how should I achieve this?

Upvotes: 4

Views: 2195

Answers (1)

user206
user206

Reputation: 1105

Change Language or 3-letter ISO 4217 currency code:
Example: assuming 'numberFormatterSymbols'=>[\NumberFormatter::CURRENCY_SYMBOL => 'kr'],

Yii::$app->formatter->locale = 'en-US';
echo Yii::$app->formatter->asCurrency(1000); // output: kr1,000.

Yii::$app->formatter->locale = 'ru-RU';
echo Yii::$app->formatter->asCurrency(1000); // output: 1 000 kr.

also for:

\Yii::$app->language = ''; 

Or in the configuration file

$config = [ // or  for locale
   'language' => 'ru_RU',  // Output: 1 000 kr
   'language' => 'en_US',  // Output: kr1,000
    //...
   'components' => [

      'formatter' => [
        'currencyCode' => 'RUB',
        'locale' => 'ru-RU',
        'numberFormatterSymbols'=>[\NumberFormatter::CURRENCY_SYMBOL => 'kr'],
      ],

     //...

The 3-letter ISO 4217 currency code indicating the default currency to use for asCurrency(). If not set, the currency code corresponding to $locale will be used. Note that in this case the $locale has to be specified with a country code, e.g. en-US otherwise it is not possible to determine the default currency.

Note: The Formatter class is meant to be used for formatting values for display to users in different languages and time zones.

Upvotes: 4

Related Questions