更改Magento十进制字段格式

时间:2013-09-27 02:20:50

标签: magento zend-framework localization internationalization magento-1.7

我需要更改Magento的默认小数格式。我的意思是,当我将“1”保存到十进制字段时,它最终变为“10000.0000”,最后是“.0000”。

我需要将其更改为另一种格式,使用','而不是'。'分隔小数(和货币)数字。

这是巴西标准,即使在更改商店语言后也没有使用它。这种变化应主要反映在管理方面。

非常感谢!

==被修改== 我还没有解决问题。我使用PT-BR(巴西葡萄牙语)作为默认语言,它仍然使用错误的十进制字符。 似乎Magento在一些代码点中有一些非本地化的价格格式(我的意思是硬编码)。例如:第426行的magento\js\prototype\validation.js包含:

|| (!isNaN(parseNumber(v)) && /^\s*-?\d*(\,\d*)?\s*$/.test(v));

但是它必须是

|| (!isNaN(parseNumber(v)) && /^\s*-?\d*(\,\d*)?\s*$/.test(v));

适合PT-BR格式(或其他语言环境)。

我是对的吗?有人能解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

如果您想在管理区域中查看此更改

你去管理员左下角

并选择

Português (Portugal) / português (Portugal)

它会根据您的需要显示货币。此外,如果您没有安装包,请转到

http://www.magentocommerce.com/translations/list/19

下载您的包并将其添加到您的

语言环境文件夹,并从前端配置中选择

希望这对您有所帮助。

答案 1 :(得分:0)

我已将以下更改应用于文件magento\js\prototype\validation.js (line 426)

|| (!isNaN(parseNumber(v)) && /^\s*-?\d*(\,\d*)?\s*$/.test(v));

并且通过添加第一个if语句来更改文件lib/Varien/Data/Form/Element/Abstract.php

public function getEscapedValue($index=null)
{
    $value = $this->getValue($index);

    if(is_numeric($value)){
        $value= number_format($value, 3, ",", ".");
    }
    ...
到目前为止,这些变化已经解决了这个问题。你看到任何副作用吗?

欢迎评论!谢谢!

答案 2 :(得分:0)

较新版本的Magento基于Zend Framework货币区域设置格式,因此最好的方法是从Zend目录更改language.xml,有关此great article的更多信息。