2016-07-13 2 views
4

Я использую FormattedNumber из React Intl в большом проекте React, который имеет возможность для разных языков.React Intl FormattedNumber с символом валюты до, а не после

Вот Валютная составляющая Я сделал так, что я могу легко вставить форматированный валюту в своих взглядах:

import {FormattedNumber} from 'react-intl'; 

const Currency = (props) => { 

    const currency = props.currency; 
    const minimum = props.minimumFractionDigits || 2; 
    const maximum = props.maximumFractionDigits || 2; 
    return <FormattedNumber 
        value={props.amount} 
        style="currency" 
        currency={currency} 
        minimumFractionDigits={minimum} 
        maximumFractionDigits={maximum} 
    />; 
}; 

export default Currency; 

компонент отлично работает. И он работает так, как ожидалось. На английском языке - когда currency является GBP - сумма отформатирован как таковой:

£4.00 

В немецком языке - когда currency является EUR - это отформатирован как таковой:

4,00€ 

Однако, мне нужно форматировать количество по-разному в конкретном случае. Итак, что я ищу это Евро идет до суммы, например, так:

€4,00 

Возможно ли это с FormattedNumber? Я не хочу, чтобы вручную переформатировать форматированный номер, если я могу его избежать.

+1

Похоже, существует аналогичная открытая проблема: https://github.com/yahoo/react-intl/issues/534. Согласно их текущим [docs] (https://github.com/yahoo/react-intl/wiki/Components#formattednumber), это невозможно настроить. Облом. –

ответ

4

Вы можете обернуть FormattedNumber с IntlProvider компонентом с соответствующим локал реквизит, как это:

<IntlProvider locale='en'> 
    <FormattedNumber 
    value={props.amount} 
    style="currency" 
    currency={props.currency} /> 
</IntlProvider> 

Может быть, файл «ан» не все еще прав, потому что он будет использовать период вместо запятая, но вы можете либо искать локаль (see here), которая обеспечивает правильный формат, либо просто написать его самостоятельно (чтобы оставаться простым, скопировав en locale и заменив период запятой в соответствующей строке).

Смежные вопросы