Gérer les fichiers de traduction csv de Magento

22

Au fil du temps, l'équipe principale de Magento a ajouté de plus en plus de modules linguistiques par défaut au

app/locale 

dossier. Existe-t-il un moyen canon de gérer vos propres fichiers de traduction de sorte qu'ils n'interfèrent pas avec les futures mises à niveau du système? c'est-à-dire que je veux changer certaines étiquettes dans Magento, donc je modifie

app/locale/en_US/Mage_Sales.csv

directement. Si nous mettons à jour Magento, mes modifications seront effacées. La fonctionnalité locale du thème est-elle suffisante pour cela? (gère-t-il les fichiers spécifiques au module, ou tout simplement translate.csv). Ou est-il préférable de réécrire les modèles de traduction pour charger des fichiers à partir d'un emplacement différent? Ou autre chose?

Alan Storm
la source

Réponses:

17

Essaye ça.

Pour résumer, spécifiez un fichier de traduction supplémentaire sous XPath de traduction du module principal et placez vos paires CSV prioritaires à l'intérieur.

<frontend>
    <translate>
        <modules>
            <Mage_Sales>
                <files>
                    <mr_storms_wicked_translations>Mage_Sales_Custom.csv</mr_storms_wicked_translations>
                </files>
            </Mage_Sales>
        </modules>
    </translate>
</frontend>
Benmarks
la source
5
Tu étais trop rapide. Je commence à le perdre.
Marius
16

À côté de la translate.csvtraduction en ligne non portable, il existe un autre moyen. Je le fais comme ça.

Chaque module prend en charge plusieurs fichiers de traduction.

Si vous ajoutez ceci dans config.xml:

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

les deux fichiers [Namespace]_[Module].csvet [Namespace]_[Module]_version2.csvseront chargés pour la traduction.

et ils seront traités dans l'ordre dans lequel ils sont déclarés.

Donc, si vous avez besoin par exemple d'ajouter / de modifier quelque chose dans le Mage_Sales.csvne modifiez pas le fichier, créez simplement un module qui ajoute un autre fichier à la liste des fichiers de traduction.

Quelque chose comme ça:
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>

et assurez-vous de faire dépendre le module Mage_Sales.
Vous pouvez également créer un module "taille unique" pour gérer la traduction. Ajoutez simplement un fichier de traduction alternatif pour tout module dont vous avez besoin et assurez-vous que ce nouveau module dépend de chacun d'eux.

Marius
la source
Va-t-il simplement regarder app/locale/**/Easylife_Sales.csvce fichier? Je suppose qu'il autorisera également les sous-dossiers tant que vous connaissez le séparateur de répertoire pour votre système de fichiers?
pspahn
Je suppose que vous pouvez utiliser des sous-dossiers si vous le souhaitez. Je ne l'ai simplement jamais essayé.
Marius
9

Les fichiers CSV situés dans app/localedoivent être considérés comme des fichiers principaux et non modifiés. Je trouve que la meilleure façon d'ajouter une traduction personnalisée est de les mettre dansapp/design/frontend/{package}/{theme}/locale/{locale}/translate.csv

Veuillez noter que vous pouvez également utiliser les noms de module dans les translate.csvfichiers en utilisant "Mage_Adminhtml::Sales","Sales"au lieu de "Sales","Sales". Cela vous permet également d'utiliser des traductions personnalisées adaptées à des thèmes spécifiques.

Pronto
la source
1
Le fichier de paramètres régionaux de thème est un moyen efficace et rapide de faire les choses, mais que faire si vous avez plusieurs thèmes sur la même instance?
Marius
2
Je préfère presque toujours utiliser des traductions spécifiques au thème - parfois le thème a moins d'espace et j'ai besoin d'utiliser des abréviations à la place. Cela rend également le test de thème beaucoup plus simple.
Pronto
@Pronto J'ai fait comme vous l'avez dit, mais pour une raison quelconque, Magento ne chargera translate.csv que s'il est dedans app/locale/, comment puis-je lui dire de le charger à la app/design/frontend/{package}/{theme}/locale/place? Voir ma question ici: stackoverflow.com/questions/26554195/…
Justin
4

Vous pouvez éditer / créer le design / thème spécifique "translate.csv". Pour remplacer une traduction à partir d'un "module-translation-file". par exemple "Mage_Catalog.csv":

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

La règle est donc "Module Namespace :: string à traduire", "chaîne traduite". Je pense que c'est la dernière règle du workflow de traduction de Magento.

roman204
la source
1

Chez SemExpert, c'est exactement ce que nous faisons. Nous avons notre propre package de traduction es_AR (avec des fichiers CSV et des modèles d'e-mail), puis toutes les personnalisations sont effectuées soit par translate.csv soit par la fonction de traduction en ligne (dans de très rares cas pour l'utilisateur final).

Nous ne risquons pas (pour l'instant) de perdre des fichiers de traduction en raison de la mise à niveau de Magento car il est très peu probable qu'ils prennent en charge es_AR hors de la boîte, mais nous souffrons de Magento apportant de petites modifications à leurs chaînes (comme l'ajout d'un '.' À la fin d'une phrase) qui font apparaître les chaînes anglaises quand on les attend le moins.

J'ai commencé à développer un petit module pour surveiller les chaînes de traduction que nous utilisons chaque fois qu'une nouvelle version de Mage est publiée. Vous pouvez le trouver ici: https://github.com/barbazul/SemExpert_TranslationDoctor

Barbazul
la source