使用Titanium的ListView进行国际化

时间:2015-03-25 21:32:17

标签: listview internationalization titanium

我从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时,我做了一个提醒事件的警报,警报返回:

{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}}

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

2 个答案:

答案 0 :(得分:0)

这可能是布局问题。

尝试指定layout =&#39; vertical&#39;在ListView和ListSection元素中。

这样的事情:

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

答案 1 :(得分:0)

我在Oficial的文档中找到了: 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>

现在它的工作正常,这几句话就变得神奇了:标签:text =&#34; L(&#39; itemPet&#39;)&#34; < / p>