Titanium 的 ListView 的国际化

Internationalization with Titanium's ListView

我从我的 ListView 项目中获取重复的值(就像文本覆盖文本)。

这是我的问题(不知道会不会上传图片):

而我的 ListView 代码是:

  <ListView id="listView" defaultItemTemplate="template" onItemclick="menuOptions">

                <!-- The Templates tag sets the ListView's templates property -->
                <Templates>

                    <!-- Define your item templates within the Templates tags or use the
                         Require tag to include a view that only contains an ItemTemplate -->
                    <ItemTemplate name="template">
                        <ImageView bindId="pic" id="icon" />
                        <Label id="petLabel" />
                        <Label id="needleLable" />
                        <Label id="heightControl"/>
                    </ItemTemplate>

                </Templates>

                <ListSection>
                    <ListItem id="petLabel" val="mascota" pic:image="/images/menu/footprint.png"/>
                    <ListItem id="needleLable" val="vacuna" pic:image="/images/menu/pet.png"/>
                    <ListItem id="heightControl" val="estadistica" pic:image="/images/menu/pet.png"/>
                </ListSection>
       </ListView>

在我用于国际化的文件中(platform/android/values-en 和 values-es)我得到了这个:

String.xml

<resources>
<!--Menu -->
    <string name="itemPet">Pet Profile</string>
    <string name="itemNeedle">Needle</string>
    <string name="itemHeight">Height Control</string>

</resources>

和values-es

<resources>
     <!--Menu -->
    <string name="itemPet">Mascota</string>
    <string name="itemNeedle">Ver Vacunas</string>
    <string name="itemHeight">Control de peso</string>


</resources>

最后是我调用文本显示的 .tss 文件:

'#petLabel':{   
    textAlign: Titanium.UI.TEXT_ALIGNMENT_CENTER,
    text:L('itemPet'),
    font:{
        fontSize:30, 
        fontWeight:'bold',
        fontFamily:'clear-sans.light'
    }
}

'#needleLable':{    
    textAlign: Titanium.UI.TEXT_ALIGNMENT_CENTER,
    text: L('itemNeedle'),   
    font:{
        fontSize:30, 
        fontWeight:'bold',
        fontFamily:'clear-sans.light'
    }
}

'#heightControl':{  
    textAlign: Titanium.UI.TEXT_ALIGNMENT_CENTER,
    text:L('itemHeight'),
    font:{
        fontSize:30, 
        fontWeight:'bold',
        fontFamily:'clear-sans.light'
    }   
}

我不知道为什么会这样,我试了很多东西都无法解决,任何想法都会有用。

谢谢。

附加信息:

当我点击 ListItem 时,我发出了一个警报,警报 return 这个:

{properties={height=100dp, accessoryType=0, textAlign=center, font={fontWeight=bold, fontSize=30, fontFamily=clear-sans.light}, title=Ver Vacunas, val= vacuna,id=needleLable},pic={image=/images/menu/pet.png}}

标题显示正确的文本,但问题仍然存在。

这可能是布局问题。

尝试在 ListView 和 ListSection 元素中指定布局='vertical'。

像这样:

<ListView id="listView" defaultItemTemplate="template" onItemclick="menuOptions" layout='vertical'>
....
 <ListSection layout='vertical'>

我在官方文档中找到: http://docs.appcelerator.com/titanium/3.0/#!/guide/Localization

您可以通过 XML 属性指定本地化。

所以我修改了我的 .xml 代码:

    <ListView id="listView" defaultItemTemplate="template" onItemclick="menuOptions">

                <!-- The Templates tag sets the ListView's templates property -->
                <Templates>

                    <!-- Define your item templates within the Templates tags or use the
                         Require tag to include a view that only contains an ItemTemplate -->
                    <ItemTemplate name="template">
                        <ImageView bindId="pic" id="icon" />
                        <Label  bindId="label" id="petLabel" />

                    </ItemTemplate>

                </Templates>

    <ListSection>
                    <ListItem label:text="L('itemPet')" val="mascota" pic:image="/images/menu/footprint.png"/>
                    <ListItem label:text="L('itemNeedle')" val="vacuna" pic:image="/images/menu/pet.png"/>
                    <ListItem label:text="L('itemHeight')" title="" val="estadistica" pic:image="/images/menu/pet.png"/>

    </ListSection>
       </ListView>

现在一切正常,这几句话创造了奇迹:label:text="L('itemPet')"