管理Magento CSV转换文件


22

随着时间的流逝,Magento核心团队已将越来越多的默认语言包添加到

app/locale 

夹。有没有一种规范的方法来管理您自己的翻译文件,以免它们干扰将来的系统升级?即我想在Magento中更改一些标签,所以我编辑

app/locale/en_US/Mage_Sales.csv

直。如果我们升级Magento,我的更改将被清除。主题区域设置是否足以满足此要求?(它是处理模块特定的文件还是仅处理translate.csv)。还是重写转换模型以从其他位置加载文件更好?或者是其他东西?

Answers:


17

尝试这个。

总而言之,请在核心模块的转换XPath下指定一个附加的转换文件,并将覆盖的CSV对放在其中。

<frontend>
    <translate>
        <modules>
            <Mage_Sales>
                <files>
                    <mr_storms_wicked_translations>Mage_Sales_Custom.csv</mr_storms_wicked_translations>
                </files>
            </Mage_Sales>
        </modules>
    </translate>
</frontend>

5
你太快了 我开始失去它。
马吕斯

15

除了translate.csv非便携式内联翻译之外,还有另一种方法。我是这样的

每个模块支持多个翻译文件。

如果将其添加到config.xml

    <translate>
        <modules>
            <[Namespace]_[Module]>
                <files>
                    <default>[Namespace]_[Module].csv</default>
                    <alternative>[Namespace]_[Module]_version2.csv</alternative>
                </files>
            </[Namespace]_[Module]>
        </modules>
    </translate>

这两个文件[Namespace]_[Module].csv[Namespace]_[Module]_version2.csv将被加载翻译。

它们将按照声明的顺序进行处理。

因此,如果您需要例如在Mage_Sales.csv不编辑文件的情况下添加/修改某些内容,只需创建一个模块,即可将另一个文件添加到翻译文件列表中。

像这样:
app/code/local/Easylife/Sales/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Easylife_Sales>
            <version>0.0.1</version>
        </Easylife_Sales>
    </modules>
    <frontend>
        <translate>
            <modules>
                <Mage_Sales>
                    <files>
                        <alternative>Easylife_Sales.csv</alternative>
                    </files>
                </Mage_Sales>
            </modules>
        </translate>
    </frontend>
    <adminhtml>
        <translate>
            <modules>
                <Mage_Sales>
                    <files>
                        <alternative>Easylife_Sales.csv</alternative>
                    </files>
                </Mage_Sales>
            </modules>
        </translate>
    </adminhtml>
</config>

并确保您使模块依赖Mage_Sales
您还可以创建一个“一刀切”的模块来管理翻译。只需为您需要的任何模块添加备用翻译文件,并确保此新模块依赖于所有模块。


会只看app/locale/**/Easylife_Sales.csv这个文件吗?我假设只要您知道文件系统的目录分隔符,它也将允许子文件夹?
pspahn

我想您可以根据需要使用子文件夹。我只是从未尝试过。
马里斯(Marius)

9

位于的CSV文件app/locale应被视为核心文件,不得修改。我发现添加自定义翻译的最佳方法是将其放入app/design/frontend/{package}/{theme}/locale/{locale}/translate.csv

请注意,您也可以在translate.csv文件中使用"Mage_Adminhtml::Sales","Sales"而不是来使用模块名称"Sales","Sales"。这也使您可以使用针对特定主题定制的翻译。


1
主题区域设置文件是一种很好的快速处理方法,但是如果在同一实例上有多个主题怎么办?
马里斯(Marius)

2
我几乎总是喜欢使用主题特定的翻译-有时主题空间较小,我需要使用缩写。这也使主题测试变得更加简单。
Pronto 2014年

@Pronto我已经按照您所说的做了,但是由于某种原因,Magento仅会加载translate.csv(如果在其中)app/locale/,我如何告诉它从中加载它app/design/frontend/{package}/{theme}/locale/?在这里看到我的问题:stackoverflow.com/questions/26554195/…–
贾斯汀

4

您可以编辑/创建特定于设计/主题的“ translate.csv”。覆盖“模块翻译文件”中的翻译。例如“ Mage_Catalog.csv”:

"Mage_Catalog::add to basket","into Basket"

因此,规则为“要翻译的模块命名空间:: string”,“ translated string”。我认为这是Magento翻译工作流程的最后一条规则。


1

在SemExpert,我们正是这样做的。我们有自己的es_AR翻译包(带有CSV文件和电子邮件模板),然后所有翻译都可以通过translation.csv或内联翻译功能(在极少数最终用户的情况下)完成。

由于Magento升级,我们不会(暂时)冒着丢失翻译文件的风险,因为它们不太可能开箱即用地支持es_AR,但是我们确实遭受Magento对其字符串进行细微更改(例如在处添加“。”)的困扰。句子的结尾)使英语字符串在您最不希望出现时出现。

我已经开始开发一个小的模块来监视翻译字符串,无论何时发布新的Mage版本,我们都会使用该模块。您可以在这里找到它:https : //github.com/barbazul/SemExpert_TranslationDoctor

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.