Administrar archivos de traducción csv de Magento

22

Con el paso del tiempo, el equipo central de Magento ha agregado más y más paquetes de idiomas predeterminados a

app/locale 

carpeta. ¿Existe alguna forma canónica de administrar sus propios archivos de traducción de manera que no interfieran con futuras actualizaciones del sistema? es decir, quiero cambiar algunas etiquetas en Magento, así que edito

app/locale/en_US/Mage_Sales.csv

directamente. Si actualizamos Magento, mis cambios serán eliminados. ¿Es suficiente la función de configuración regional del tema para esto? (¿maneja archivos específicos del módulo, o simplemente? translate.csv) ¿O es mejor reescribir los modelos de traducción para cargar archivos desde una ubicación diferente? ¿O algo mas?

Alan Storm
fuente

Respuestas:

17

Prueba esto.

En resumen, especifique un archivo de traducción adicional debajo de XPath de traducción del módulo principal y coloque allí sus pares de CSV primordiales.

<frontend>
    <translate>
        <modules>
            <Mage_Sales>
                <files>
                    <mr_storms_wicked_translations>Mage_Sales_Custom.csv</mr_storms_wicked_translations>
                </files>
            </Mage_Sales>
        </modules>
    </translate>
</frontend>
puntos de referencia
fuente
55
Eras demasiado rápido Estoy empezando a perderlo.
Marius
15

Además de la translate.csvtraducción en línea no portátil, hay otra forma. Lo hago asi

Cada módulo admite más de un archivo de traducción.

Si agrega esto en config.xml:

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

ambos archivos [Namespace]_[Module].csvy se [Namespace]_[Module]_version2.csvcargarán para su traducción.

y se procesarán en el orden en que se declaran.

Entonces, si necesita, por ejemplo, agregar / modificar algo en el Mage_Sales.csvno edite el archivo, simplemente cree un módulo que agregue otro archivo a la lista de archivos de traducción.

Algo como esto:
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>

y asegúrese de hacer que el módulo dependa Mage_Sales.
También puede crear un módulo "talla única" para gestionar la traducción. Simplemente agregue un archivo de traducción alternativo para cualquier módulo que necesite y asegúrese de que este nuevo módulo dependa de todos ellos.

Marius
fuente
¿Solo mirará app/locale/**/Easylife_Sales.csveste archivo? Supongo que también permitirá subcarpetas siempre que conozca el separador de directorio para su sistema de archivos.
pspahn
Supongo que puedes usar subcarpetas si quieres. Simplemente nunca lo intenté.
Marius
9

Archivos CSV ubicados en app/locale deben considerarse como archivos principales y no modificados. Creo que la mejor manera de agregar una traducción personalizada es ponerlas enapp/design/frontend/{package}/{theme}/locale/{locale}/translate.csv

Tenga en cuenta que también puede usar nombres de módulos en translate.csvarchivos en "Mage_Adminhtml::Sales","Sales"lugar de "Sales","Sales". Esto también le permite utilizar traducciones personalizadas para temas específicos.

Pronto
fuente
1
El archivo de configuración regional del tema es una forma buena y rápida de hacer las cosas, pero ¿qué sucede si tiene varios temas en la misma instancia?
Marius
2
Casi siempre prefiero usar traducciones específicas del tema; a veces el tema tiene menos espacio y en su lugar necesito usar abreviaturas. Esto también hace que la prueba de temas WAY sea más simple.
Pronto
@Pronto He hecho lo que dijiste, pero por alguna razón Magento solo cargará translate.csv si está dentro app/locale/, ¿cómo le digo que lo cargue app/design/frontend/{package}/{theme}/locale/? Vea mi pregunta aquí: stackoverflow.com/questions/26554195/…
Justin
4

Puede editar / crear el diseño / tema específico "translate.csv". Para anular una traducción de un "módulo-traducción-archivo". por ejemplo "Mage_Catalog.csv":

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

Entonces la regla es "Módulo de espacio de nombres :: cadena a traducir", "cadena traducida". Creo que es la última regla del flujo de trabajo de traducción de Magento.

roman204
fuente
1

En SemExpert hacemos exactamente eso. Tenemos nuestro propio paquete de traducción es_AR (con archivos CSV y plantillas de correo electrónico) y luego todas las personalizaciones se realizan mediante translate.csv o mediante la función de traducción en línea (en casos muy raros de usuario final).

No nos arriesgamos (por ahora) a perder archivos de traducción debido a la actualización de Magento, ya que es muy poco probable que alguna vez admitan es_AR, pero sí sufrimos de Magento haciendo pequeños cambios en sus cadenas (como agregar un '.' En el final de una oración) que hace que aparezcan las cadenas en inglés cuando menos las espera.

He comenzado a desarrollar un pequeño módulo para monitorear cadenas de traducción que usamos cada vez que se lanza una nueva versión de Mage. Puede encontrarlo aquí: https://github.com/barbazul/SemExpert_TranslationDoctor

Barbazul
fuente