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')"
我从我的 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')"