7

Magentoインストール(バージョン1.6.2.0)用のカスタムモジュールを開発しています。モジュールの翻訳ファイルをconfig.xmlに登録し、ドイツ語の翻訳を追加し始めました。このモジュールは、Magentoバックエンドにいくつかの新しい動作を追加します。

翻訳をしていると、Magentoの奇妙な動作に気づきました。モジュールのcsvファイルで翻訳が提供されていますが、特定の単語はMagentoによって翻訳されません。

キーを別の値に変更すると、変換は期待どおりに機能するため、Magentoはcvsファイルを参照して読み取るように見えます。

現時点では、キー「City」と「Store」のこの動作に気づきました。

csvファイルの内容:

"City","Stadt"
"City1","Stadt"

次の行を使用して文字列を翻訳します。

Mage::helper('mymodule')->__('City') // returns "City"

キーを「City1」に変更すると、すべてが期待どおりに機能します。

  Mage::helper('mymodule')->__('City1') // returns "Stadt"

この後、ドイツ語の翻訳csvファイル(ドイツ語のMagentoコミュニティから提供)でキー「City」の翻訳を検索し、「adminhtmlモジュール」で見つけました。

  Mage::helper('adminhtml')->__('City') // returns "Stadt"

したがって、これも期待どおりに機能します。

何が間違っているのかわかりません。私が言ったように、同じ振る舞いが文字列「Store」に対して発生します。

これについて何かアイデアはありますか?

4

2 に答える 2

8

最後に、翻訳の問題を解決しました。その理由は、config.xmlの構成が間違っていたためです。Magentoが翻訳ファイルを読み取るコードをデバッグすることでそれを見つけました。これが発生すると、config.xmlファイルのXML要素の1つから読み取られるscopeというパラメーターがあります。

この要素には通常、モジュールの名前が必要<MyCompany_MyModule>です。変換を構成するために行ったチュートリアルでは、このXML要素の名前<translations>が間違っていました。

これは以前のバージョンのMagentoでは正しいかもしれないと思います。見つけにくいのは、他のモジュールの変換ファイルでも定義されているキーに対してのみエラーが発生することでした。翻訳ファイルでのみ定義されたキーは、期待どおりに機能しました。

正しい構成は次のようになります。

<frontend>
   ...
    <translate>
        <modules>
            <MyCompany_MyModule>
                <files>
                    <default>MyCompany_MyModule.csv</default>
                </files>
            </MyCompany_MyModule>
        </modules>
    </translate>
  ...
</frontend>
<adminhtml>
  ...
    <translate>
        <modules>
            <MyCompany_MyModule>
                <files>
                    <default>MyCompany_MyModule.csv</default>
                </files>
            </MyCompany_MyModule>
        </modules>
    </translate>
    ...
 </adminhtml>
于 2012-06-14T13:58:40.157 に答える
4

コードを手元に置いておかないと言うのは難しいですが、モジュールの変換スコープが(何らかの理由で)何らかの理由で失われ、Magentoがフォールバックするのではないかと思います。

Afaik、Magento 1.6.2.0では、次の翻訳ファイルキーを定義していますCity

/app/locale/<language>_<region>/Mage_Checkout.csv
/app/locale/<language>_<region>/Mage_Customer.csv
/app/locale/<language>_<region>/Mage_Persistent.csv
/app/locale/<language>_<region>/Mage_Sales.csv
/app/locale/<language>_<region>/Mage_Shipping.csv
/app/locale/<language>_<region>/Mage_XmlConnect.csv

Cityこれらのファイルの翻訳を.csv1つずつ変更して、問題の翻訳が実際にどこから来ているのかを調べます。

Magentoがフォールバックしているファイルを見つけたら、翻訳を強制的に使用するために、どの翻訳スコープをオーバーライドする必要があるかもわかりますCity

たとえば、での翻訳の変更が有効であることがわかった場合は翻訳ファイル()をMage_Shipping.csv編集して次のようにします。My_Module.csv

"Mage_Shipping::City","Stadt"
于 2012-05-23T09:54:02.713 に答える