Magento指定店铺翻译

给指定模块添加对应翻译文件,并在配置文件config.php配置好

<config>
    <frontend>
        <translate>
            <modules>
                <test>
                    <files>
                        <default>Test.csv</default>
                    </files>
                </test>
            </modules>
        </translate>
    </frontend>
</config>

根据指定的店铺找到对应的店铺code

/**
* 指定店铺翻译
 *
 * @param [type] $storeId
 * @param [type] $string
 * @return void
 */
public function translate($storeId, $string)
{
    $newLocaleCode = Mage::getStoreConfig(
        Mage_Core_Model_Locale::XML_PATH_DEFAULT_LOCALE, $storeId
    );
    $initialEnvironmentInfo = Mage::getSingleton('core/app_emulation')->startEnvironmentEmulation($storeId);
    Mage::app()->getLocale()->setLocaleCode($newLocaleCode);
    Mage::getSingleton('core/translate')->setLocale($newLocaleCode)->init(Mage_Core_Model_App_Area::AREA_FRONTEND, true);
    $translatedString = Mage::helper('test')->__($string);
    Mage::getSingleton('core/app_emulation')->stopEnvironmentEmulation($initialEnvironmentInfo);

    return $translatedString;
}

$newLocaleCode是根据当前的$storeId得到对应的站点code

$initialEnvironmentInfo是根据$storeId模拟出该店铺环境

第三句是将指定的店铺code设定为当前店铺code

第四句是设置好当前店铺,然后初始化找到对应的翻译

第五句是根据要翻译的语句找到指定的翻译后的语句

第六句是停止当前环境模拟

这段代码整体思路也算是magento内部翻译的处理逻辑,底层方法比较乱,感兴趣的可以自己研究一下,不过这段代码总结起来如下:

  1. 先根据指定的店铺模拟出一个对应店铺的虚拟环境;
  2. 将指定的店铺设置成当前店铺找到当前店铺对应的翻译;
  3. 初始化将该店铺下的所有翻译文件里面的翻译语句拿出来组装到一起;
  4. 根据给定的语句到这个组装好的翻译里面去找这句话对应的翻译;
  5. 关闭当前模拟的虚拟店铺

翻译中主要的是在指定的店铺文件夹中添加指定模块的翻译文件,将对应的语句以及翻译语句添加到翻译文件中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值