การจัดการไฟล์แปลของวีโอไอพี csv


22

เมื่อเวลาผ่านไปทีมหลักของ Magento ได้เพิ่มชุดภาษาเริ่มต้นให้มากขึ้น

app/locale 

โฟลเดอร์ มีวิธีแคนนอนในการจัดการไฟล์แปลของคุณเองโดยที่พวกเขาจะไม่ยุ่งเกี่ยวกับการอัพเกรดระบบในอนาคตหรือไม่? เช่นฉันต้องการเปลี่ยนป้ายกำกับใน Magento ดังนั้นฉันจึงแก้ไข

app/locale/en_US/Mage_Sales.csv

โดยตรง. หากเราอัพเกรด Magento การเปลี่ยนแปลงของฉันจะถูกลบออก คุณสมบัติของชุดรูปแบบเพียงพอหรือไม่ (มันจัดการไฟล์เฉพาะโมดูลหรือเพียงแค่translate.csv) หรือมันจะดีกว่าที่จะเขียนแบบจำลองการแปลเพื่อโหลดไฟล์จากที่อื่น? หรืออย่างอื่น?

คำตอบ:


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
คุณเร็วเกินไป ฉันเริ่มที่จะสูญเสียมัน
Marius

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

@Pronto ฉันได้ทำตามที่คุณพูด แต่ด้วยเหตุผลบางอย่างวีโอไอพีจะโหลด translate.csv เท่านั้นถ้ามันอยู่ในapp/locale/ฉันจะบอกให้โหลดจากapp/design/frontend/{package}/{theme}/locale/แทนได้อย่างไร ดูคำถามของฉันที่นี่: stackoverflow.com/questions/26554195/…
Justin

4

คุณสามารถแก้ไข / สร้างการออกแบบ / ธีมเฉพาะ "translate.csv" ในการแทนที่การแปลจาก "module-translation-file" ตัวอย่างเช่น "Mage_Catalog.csv":

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

ดังนั้นกฎคือ "Module Namespace :: string ที่จะแปล", "string ที่แปล" ฉันคิดว่านี่เป็นกฎข้อสุดท้ายของกระบวนการแปลวีโอไอพี


1

ที่ SemExpert เราทำอย่างนั้น เรามีแพ็คเกจการแปล es_AR ของเราเอง (พร้อมไฟล์ CSV และเทมเพลตอีเมล) จากนั้นการปรับแต่งทั้งหมดจะกระทำโดย translate.csv หรือด้วยคุณสมบัติการแปลแบบอินไลน์ (ในกรณีผู้ใช้ขั้นสุดท้ายที่หายากมาก)

เราไม่เสี่ยง (ตอนนี้) สูญเสียไฟล์แปลเนื่องจากการอัพเกรด Magento เนื่องจากมันไม่น่าเป็นไปได้มากที่พวกเขาจะสนับสนุน es_AR นอกกรอบ แต่เราประสบปัญหาจาก Magento ที่เปลี่ยนแปลงสตริงของพวกเขาเล็กน้อย (เช่นการเพิ่ม '.' ที่ จุดสิ้นสุดของประโยค) ที่ทำให้สตริงภาษาอังกฤษปรากฏขึ้นเมื่อคุณคาดหวังให้มีน้อยที่สุด

ฉันได้เริ่มพัฒนาโมดูลขนาดเล็กเพื่อตรวจสอบสตริงการแปลซึ่งเราใช้เมื่อใดก็ตามที่ Mage เวอร์ชันใหม่ออก คุณสามารถค้นหาได้ที่นี่: https://github.com/barbazul/SemExpert_TranslationDoctor

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.