magento中的中文姓名

magento注册页中文姓名
magento注册页中文姓名

在英文中

fist name:名

last name:姓

magento中客户填写用户信息的时候,姓名是分开的。根据国外的习惯,名在前,姓在后,这个好说,直接去模版文件修改下显示顺序。

以magento1.4的default模板为例

magento注册页面姓名模板文件路径:app\design\frontend\base\default\template\customer\widget\name.phtml

   <div class="field name-firstname">
        <label for="<?php echo $this->getFieldId('firstname')?>" class="required"><em>*</em><?php echo $this->__('First Name') ?></label>
        <div class="input-box">
            <input type="text" id="<?php echo $this->getFieldId('firstname')?>" name="<?php echo $this->getFieldName('firstname')?>" value="<?php echo $this->htmlEscape($this->getObject()->getFirstname()) ?>" title="<?php echo $this->__('First Name') ?>" class="input-text required-entry" <?php echo $this->getFieldParams() ?> />
        </div>
    </div>
<?php if ($this->showMiddlename()): ?>
    <div class="field name-middlename">
        <label for="<?php echo $this->getFieldId('middlename')?>"><?php echo $this->__('M.I.') ?></label>
        <div class="input-box">
            <input type="text" id="<?php echo $this->getFieldId('middlename')?>" name="<?php echo $this->getFieldName('middlename')?>" value="<?php echo $this->htmlEscape($this->getObject()->getMiddlename()) ?>" title="<?php echo $this->__('M.I.') ?>" class="input-text" <?php echo $this->getFieldParams() ?> />
        </div>
    </div>
<?php endif; ?>
    <div class="field name-lastname">
        <label for="<?php echo $this->getFieldId('lastname')?>" class="required"><em>*</em><?php echo $this->__('Last Name') ?></label>
        <div class="input-box">
            <input type="text" id="<?php echo $this->getFieldId('lastname')?>" name="<?php echo $this->getFieldName('lastname')?>" value="<?php echo $this->htmlEscape($this->getObject()->getLastname()) ?>" title="<?php echo $this->__('Last Name') ?>" class="input-text required-entry" <?php echo $this->getFieldParams() ?> />
        </div>
    </div>

改为

<div class="field name-lastname">
        <label for="<?php echo $this->getFieldId('lastname')?>" class="required"><em>*</em><?php echo $this->__('Last Name') ?></label>
        <div class="input-box">
            <input type="text" id="<?php echo $this->getFieldId('lastname')?>" name="<?php echo $this->getFieldName('lastname')?>" value="<?php echo $this->htmlEscape($this->getObject()->getLastname()) ?>" title="<?php echo $this->__('Last Name') ?>" class="input-text required-entry" <?php echo $this->getFieldParams() ?> />
        </div>
    </div>
<?php if ($this->showMiddlename()): ?>
    <div class="field name-middlename">
        <label for="<?php echo $this->getFieldId('middlename')?>"><?php echo $this->__('M.I.') ?></label>
        <div class="input-box">
            <input type="text" id="<?php echo $this->getFieldId('middlename')?>" name="<?php echo $this->getFieldName('middlename')?>" value="<?php echo $this->htmlEscape($this->getObject()->getMiddlename()) ?>" title="<?php echo $this->__('M.I.') ?>" class="input-text" <?php echo $this->getFieldParams() ?> />
        </div>
    </div>
<?php endif; ?>
    <div class="field name-firstname">
        <label for="<?php echo $this->getFieldId('firstname')?>" class="required"><em>*</em><?php echo $this->__('First Name') ?></label>
        <div class="input-box">
            <input type="text" id="<?php echo $this->getFieldId('firstname')?>" name="<?php echo $this->getFieldName('firstname')?>" value="<?php echo $this->htmlEscape($this->getObject()->getFirstname()) ?>" title="<?php echo $this->__('First Name') ?>" class="input-text required-entry" <?php echo $this->getFieldParams() ?> />
        </div>
    </div>

我们可以看到还有个middle name在我们的代码中,不用管它,后台不设置显示,他不会显示的。

我们可不要直接用在线翻译功能直接将这个fist name翻译成姓,last name翻译成名字。这么干如果客户叫李四,等他收到客户邮件的时候,邮件内容就可能是四先生,而不是李先生。大家一定要想到有的时候改magento的一个地方,会影响到很多其它的地方。

转载表明出处:hellokeykey.com

《magento中的中文姓名》有6个想法

  1. 这是直接修改姓名变量的方法,一次改动即可;修改文件:magentoappcodecoreMageCustomerModelCustomer.php,之后重新编译文件.

    由:
    /**
    * Get full customer name
    *
    * @return string
    */
    public function getName()
    {
    $name = ”;
    $helper = Mage::helper(‘customer/address’);
    if ($helper->canShowConfig(‘prefix_show’) && $this->getPrefix()) {
    $name .= $this->getPrefix() . ‘ ‘;
    }
    $name .= $this->getFirstname();
    if ($helper->canShowConfig(‘middlename_show’) && $this->getMiddlename()) {
    $name .= ‘ ‘ . $this->getMiddlename();
    }
    $name .= ‘ ‘ . $this->getLastname();
    if ($helper->canShowConfig(‘suffix_show’)&& $this->getSuffix()) {
    $name .= ‘ ‘ . $this->getSuffix();
    }
    return $name;
    }

    改为:
    /**
    * Get full customer name
    *
    * @return string
    */
    public function getName()
    {
    $name = ”;
    $helper = Mage::helper(‘customer/address’);
    if ($helper->canShowConfig(‘prefix_show’) && $this->getPrefix()) {
    $name .= $this->getPrefix() . ‘ ‘;
    }
    $name .= ‘ ‘ . $this->getLastname();
    if ($helper->canShowConfig(‘middlename_show’) && $this->getMiddlename()) {
    $name .= ‘ ‘ . $this->getMiddlename();
    }
    $name .= $this->getFirstname();
    if ($helper->canShowConfig(‘suffix_show’)&& $this->getSuffix()) {
    $name .= ‘ ‘ . $this->getSuffix();
    }
    return $name;
    }

  2. 其实这个最佳解决办法就是改语言包里CSV的翻译,这样还解决了多语言的带来的问题。。。
    =======
    如:
    first name => 名
    last name => 姓
    翻译改后:
    first name => 姓
    last name => 名

    1. 如果将姓名这样弄会有未知的问题,比如一个插件和姓名有关,那就会姓名颠倒。我想中国化,就是不要再翻译上修改,而是在模板中颠倒显示顺序才好。

      1. 插件里肯定有语言包了,你安装里还是英文的,还是得改言语包,你在模板里换顺序的话,与在模板里换一个性质,都是位置互换,关建你不知道模板里哪些不漏的。。。
        语言包打开搜索一下就出来了

评论已关闭。