Magento 2如何根据语言环境自定义货币符号和格式

我想以编程方式更改货币格式模式,货币符号和货币符号位置。我在文件夹vendor \ magento \ zendframework1 \ library \ Zend \ Locale \ Data中找到了一些数据。

例如,如果我fr_FR.xml通过以下代码更改格式,则它反映在前端。

<numbers>
        <currencyFormats numberSystem="latn">
            <currencyFormatLength>
                <currencyFormat type="standard">
                    <pattern>¤ #,##0.00</pattern>
                </currencyFormat>
                <currencyFormat type="accounting">
                    <pattern>¤ #,##0.00;(¤ #,##0.00)</pattern>
                </currencyFormat>
            </currencyFormatLength>
            <unitPattern count="one">{0} {1}</unitPattern>
            <unitPattern count="other">{0} {1}</unitPattern>
        </currencyFormats>
        <currencies>
            <currency type="GBP">
                <displayName>livre sterling</displayName>
                <displayName count="one">livre sterling</displayName>
                <displayName count="other">livres sterling</displayName>
                <symbol>£</symbol>
            </currency>
        </currencies>
</numbers>

但是我想知道如何覆盖默认的fr_FR.xml(vendor \ magento \ zendframework1 \ library \ Zend \ Locale \ Data \ fr_FR.xml)

请让我知道是否有人知道该怎么做。

回答:

可能不是一个完整的解决方案,但这必须是一个好的开始。下面是代码流的顺序。

  • public function formatTxtmodule-directory/Model/Currency.php。该函数调用toCurrency,后者依次调用
  • public function toCurrency 上 zendframework1/library/Zend/Currency.php

找到该函数时,您将看到$ options数组变量,其中包含用于格式化价格值的所有必要信息。以下是var_dump$ options。

array(12) {
    ["position"] => int(16)
    ["script"] => NULL
    ["format"] => NULL
    ["display"] => int(2)
    ["precision"] => int(2)
    ["name"] => string(9) "US Dollar"
    ["currency"] => string(3) "USD"
    ["symbol"] => string(1) "$"
    ["locale"] => string(5) "en_GB"
    ["value"] => int(0)
    ["service"] => NULL
    ["tag"] => string(11) "Zend_Locale"
}

因此,要移动货币符号,您可以覆盖

public function formatPrecision 在DI.xml中

<preference for="Magento\Directory\Model\Currency" type="Yourpack\Custom\Model\Currency" />

并传递带有必要值的options数组。

例如:$options['position'] = 16将货币符号移至货币值(16.24 $)的右侧

同样,传递必要的数组选项以覆盖。

相关文章

0 0 投票数
文章评分
订阅评论
提醒
0 评论
内联反馈
查看所有评论