We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 7858
    • 97 Posts
    Hi, I need to implement multilingual approach with migx.

    I need to store some items with names in different languages.

    I want to have one table with item ids and some general data, and the other table with translations based on item ids and language keys

    ITEMS
    id
    1
    2
    
    TRANSLATIONS
    id   item_id   translation   language
    1    1         Car           en
    2    1         Auto          de
    3    2         Chair         en
    4    2         Sessel        de
    ...


    But i can not get it to work

    here is my xml schema

    <?xml version="1.0" encoding="UTF-8"?>
    <model package="myRanges" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" version="1.1">
            <object class="Ranges" table="migx_my_ranges" extends="xPDOSimpleObject" >
                <field key="published" dbtype="int" precision="1" attributes="unsigned" phptype="integer" null="false" default="0" />
                <field key="pos" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" />
    
                <aggregate alias="rangeTitleDE" class="TitlesDE" local="id" foreign="range_id" cardinality="many" owner="local" />
                <aggregate alias="rangeTitleEN" class="TitlesEN" local="id" foreign="range_id" cardinality="many" owner="local" />
            </object>
    
            <object class="TitlesDE" table="migx_my_ranges_tr" extends="xPDOSimpleObject" >
                <field key="range_id" dbtype="int" precision="10" phptype="integer" null="false" default="0" />
                <field key="title" dbtype="varchar" precision="255" phptype="string" null="false" default=""/>
                <field key="language" dbtype="varchar" precision="10" phptype="string" null="false" default="de"/>
                
                <aggregate alias="rangesList" class="Ranges" local="range_id" foreign="id" cardinality="one" owner="foreign" />
            </object>
    
            <object class="TitlesEN" table="migx_my_ranges_tr" extends="xPDOSimpleObject" >
                <field key="range_id" dbtype="int" precision="10" phptype="integer" null="false" default="0" />
                <field key="title" dbtype="varchar" precision="255" phptype="string" null="false" default=""/>
                <field key="language" dbtype="varchar" precision="10" phptype="string" null="false" default="en"/>
                
                <aggregate alias="rangesList" class="Ranges" local="range_id" foreign="id" cardinality="one" owner="foreign" />
            </object>
    </model>


    Then i add join in migx config - [{"alias":"rangeTitleDE"},{"alias":"rangeTitleEN"}] and try to add values to rangeTitleDE_title, rangeTitleEN_title. It adds values to main table, but adds nothing to the translations table.

    What am I doing wrong?

    Thx
      • 52790
      • 1 Posts
      Try [{"alias":"rangeTitleDE"},{"alias":"rangeTitleEN"}] change to

      [{
          "alias":"rangeTitleDE",
          "selectfields":"title"
       },{
          "alias":"rangeTitleEN",
          "selectfields":"title"
      }]